1

私は、音声認識を使用して 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

問題を確認するにはどうすればよいですか? 私の場合も必要な場合、音声認識エンジンにディクテーションを行うにはトレーニングが必要であるとどこかで読んだことがありますが、どうすればそれを行うことができますか? また、リンクには、これを行うには入力ファイルの長さを指定する必要があることが記載されていますが、これを行う方法もわかりません。助けが必要です。

4

1 に答える 1

1

サンプル コードには、対処が必要ないくつかの手順がありません。

1) インプロセス レコグナイザーは、認識を行う前にエンジンをバインドする必要があります。

2)オーディオの処理を開始する前に、インプロセス認識エンジンをアクティブに設定する必要があります。

また、SR エンジンがオーディオを処理していること、および何らかの認識を試みていることを確認するために、他のイベント、特に SPEI_START_SR_STREAM、SPEI_SOUND_START、SPEI_SOUND_END、および SPEI_PHRASE_START のハンドラーを追加することも検討する必要があります。

于 2013-04-02T00:28:13.487 に答える