Using Hydra to interface my Delphi application with the Dragon Medical Speechkit .NET SDK

Hello.

I currently use Dragon Medical SpeechKit COM interface for a medical speech recognition interface with my Delphi application. Microsoft has purchased the product (from Nuance) and has discontinued the COM version. The COM version was able to link to the Tmemo and insert/edit the text based on the dictation and voice commands. I need to create a direct link to the .Net version. The .net version only has the ability to interface with winforms controls. I have a lot of my own programming tied to the tmemo controls on the input screen. I need advice on how to use Hydra to upgrade my project to use Hydra to broker the interface. I’m pretty sure I have to have a winforms object in the background for each tmemo and mirror the text between them. Then there is the actual interface that does have a visual component, but it is a “speech bar” that floats above the application that has a menu and also shows voice input levels. The product details are available Dragon Medical SpeechKit | Microsoft Learn and GitHub - microsoftconnect/DMSK-dotnet: Temporary location for .NET SpeechKit package and samples

Hi,

For consuming custom .NET assembly from Delphi code, you should create wrapper for that assembly.

Check Delphi WPF Sample.

IVisualizerControl represents a custom interface that will be used by the host application to control plugin behavior:

    public interface IVisualizerControl : IHYCrossPlatformInterface
    {

        bool BarsVisible { get; set; }
        void Randomize();
        void Sinus(Double aRange);

    }

Wrapper allows to manipulate with .NET class:

  public class VisualizerWrapper : VisualPluginWrapper, IVisualizerControl
  {
    private new Plugin PluginInstance { get { return base.PluginInstance as Plugin; } }

    #region IVisualizerControl Members
    public bool BarsVisible
    {
      get
      {
        return PluginInstance.BarsVisible;
      }
      set
      {
        PluginInstance.BarsVisible = value;
      }
    }

    public void Randomize()
    {
      PluginInstance.Randomize();
    }

    public void Sinus(Double aRange)
    {
      PluginInstance.Sinus(aRange);
    }
    #endregion
  }

You need something similar for interacting with Dragon Medical SpeechKit.