Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Spracheingaben über die SAPI 5.4 und TSpInProcRecoContext (https://www.delphipraxis.net/194187-spracheingaben-ueber-die-sapi-5-4-und-tspinprocrecocontext.html)

just beginner 26. Okt 2017 08:06

Spracheingaben über die SAPI 5.4 und TSpInProcRecoContext
 
Hallö,

ich versuche mich an der Spracheingaben über die SAPI 5.4 .
Habe die SAPI 5.4 in die IDE eingebunden und versuche jetzt mit TSpInProcRecoContext eingabe über das Micro zu empfangen.
Laut MS muss ich über Token das Micro bzw. Audio in ziehen und mit SpInProcRecoContext verbinden. Da scheitere ich schon bei der Übergabe aber warum?
Kann mir da einer Helfen?

Delphi-Quellcode:

...

 SpInProcRecoContext1: TSpInProcRecoContext;
    SpObjectToken1: TSpObjectToken;

...

     SpVoice: Variant;
     objAudioTokenCategory : TSpObjectTokenCategory ;
     objAudioToken,
     objEngineToken,
     objProfileToken : ISpeechObjectToken;
     function startVoice: Integer;
     function stopVoice: Integer;
...


//------------------------------------------------------------------------------
// start voice
function TDM_Voice.startVoice: Integer;
var
  MyTokenCategory: WideString;
begin
  try
    SpInProcRecoContext1.EventInterests := SREAllEvents;


    MyTokenCategory := 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput';  //  SpeechCategoryAudioIn

    objAudioTokenCategory := TSpObjectTokenCategory.Create(Nil) ;
    objAudioTokenCategory.SetId(MyTokenCategory , false);

    objAudioToken := ISpeechObjectToken(objAudioTokenCategory.DefaultInterface);
    objAudioToken.SetId(objAudioTokenCategory.Default, MyTokenCategory, false);

    try
      MyTokenCategory := 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Recognizers';    // SpeechCategoryRecognizers
      objAudioTokenCategory.SetId(MyTokenCategory , false);
    except
      on E: Exception do begin // OLE-Fehler 80045002 > schon vorhanden also kein Fehler
        Logdatent_Schreiben('Fehler in StartVoice Fehler:' +E.Message);
      end;
    end;
    objEngineToken := ISpeechObjectToken(objAudioTokenCategory.DefaultInterface);
    objEngineToken.SetId(objAudioTokenCategory.Default, MyTokenCategory, false);

    try
      MyTokenCategory := 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Speech\RecoProfiles'; // SpeechCategoryRecoProfiles
      objAudioTokenCategory.SetId(MyTokenCategory , false);
    except
      on E: Exception do begin // OLE-Fehler 80045002 > schon vorhanden also kein Fehler
        Logdatent_Schreiben('Fehler in StartVoice Fehler:' +E.Message);
      end;
    end;
    objProfileToken := ISpeechObjectToken(objAudioTokenCategory.DefaultInterface);
    objProfileToken.SetId(objAudioTokenCategory.Default, MyTokenCategory, false);

    SpInProcRecoContext1.Recognizer.AudioInput := objAudioToken; // Fehler falscher Parameter Warum :oops:????
    SpInProcRecoContext1.Recognizer.Profile := objProfileToken;
    SpInProcRecoContext1.Recognizer.CreateRecoContext;

    SpInProcRecoContext1.Connect;

    Logdatent_Schreiben('Starte Voice');
  except
    on E: Exception do begin
      Logdatent_Schreiben('Fehler in StartVoice Fehler:' +E.Message);
    end;
  end;
end;

just beginner 26. Okt 2017 11:04

AW: Spracheingaben über die SAPI 5.4 und TSpInProcRecoContext
 
habe das noch gefunden:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Wie setze ich es nur in Pascal um?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz