私は、音声認識を使用して wav ファイルの入力音声 (会話) をテキストに変換する必要があるプロジェクトに取り組んでいます。CMUSPhinx をしばらく試した後、ひどい結果になったので、Microsoft SAPI (Speech API) 5.4 の使用を検討しています。
Visual Studio から Visual Basic Windows アプリケーションとしてコーディングしています。ここに私のコードスニペットがあります:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Dim SAPI
' SAPI = CreateObject("sapi.spvoice")
' SAPI.Speak(TextBox1.Text)
' Create new recognizer
Dim Recognizer As New SpInprocRecognizer
' create input file stream
InputFile = New SpFileStream
' Defaults to open for read-only, and DoEvents false
InputFile.Open(MY_WAVE_AUDIO_FILENAME)
' connect wav audio input to speech recognition engine
Recognizer.AudioInputStream = InputFile
' create recognition context
RecoContext = Recognizer.CreateRecoContext
' AddHandler RecoContext.Recognition, AddressOf RecoContext_Recognition
' create grammar
Grammar = RecoContext.CreateGrammar
' ... and load dictation
Grammar.DictationLoad()
' start dictating
Grammar.DictationSetState(SGDSActive)
End Sub
MY_WAVE_AUDIO_FILENAME では、フルパスでファイル名を指定しました。ボタンをクリックしてこのコードを実行すると、出力が得られません。次の認識方法を使用しました。
Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechRecognitionType, ByVal Result As ISpeechRecoResult)
' Log/Report recognized phrase/information
Console.WriteLine("Reached here......")
TextBox1.Text = "Text should change"
End Sub
アプリケーションをデバッグすると、フローが RecoContext_Recognition メソッドに到達しません。入力ファイルは、サンプルあたり 16 ビット、30 秒の長さの会話を含む wav ファイルです。
このリンクに記載されているコードを使用しています: http://msdn.microsoft.com/en-us/library/ee431813(v=vs.85).aspx
問題を確認するにはどうすればよいですか? 私の場合も必要な場合、音声認識エンジンにディクテーションを行うにはトレーニングが必要であるとどこかで読んだことがありますが、どうすればそれを行うことができますか? また、リンクには、これを行うには入力ファイルの長さを指定する必要があることが記載されていますが、これを行う方法もわかりません。助けが必要です。