0

私は多くの調査を行い、以下のコードを思いつきました。マイクを使用して音声をテキストに正常に変換します。

mp3 経由でオーディオをストリーミングするファイルが Web サーバー上にあります。これは、mp3 ファイルへの単なるリンクです。それをテキストに翻訳する必要があります。

これを行う最善の方法を見つけようとしています。それで、オーディオ入力をコンピュータのオーディオとして選択できますか (つまり、Web ブラウザでオーディオを再生します)? または、音声を直接翻訳者にストリーミングできますか? SetInputToWaveStreamメソッドを使用する必要があると思いますが、使用方法がわかりません。

Private Sub InitializeRecognizerSynthesizer()
Dim selectedRecognizer = ( _
    Where e.Culture.Equals(Thread.CurrentThread.CurrentCulture)).FirstOrDefault()
recognizer = New SpeechRecognitionEngine(selectedRecognizer)
recognizer.AudioStateChanged += New EventHandler(Of AudioStateChangedEventArgs)(recognizer_AudioStateChanged)
recognizer.SpeechHypothesized += New EventHandler(Of SpeechHypothesizedEventArgs)(recognizer_SpeechHypothesized)
recognizer.SpeechRecognized += New EventHandler(Of SpeechRecognizedEventArgs)(recognizer_SpeechRecognized)

synthesizer = New SpeechSynthesizer()
End Sub

Private Function SelectInputDevice() As Boolean
Dim proceedLoading As Boolean = True

If IsOscompatible() Then
    Try

        recognizer.SetInputToDefaultAudioDevice()
    Catch
            'no audio input device
        proceedLoading = False
    End Try
Else
    ThreadPool.QueueUserWorkItem(InitSpeechRecogniser)
End If
Return proceedLoading
End Function
4

1 に答える 1

0

Recognitionr.SetInputToWaveFile(file)-ファイルシステム内のファイルからオーディオ入力を読み取ります。

Recognitionr.SetInputToAudioStream-ストリームからオーディオ入力を読み取ります。簡単な例:

FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
SpeechAudioFormatInfo format = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
recognizer.SetInputToAudioStream(fs, format);

ストリームまたはファイルから読み取るときは、オーディオデータがサポートされている形式であることを確認するように注意する必要があります。たとえば、自分のマシンで機能することがわかっている形式の1つは次のとおりです。

  • サンプルあたり8ビット
  • シングルチャンネルモノ
  • 1秒あたり22,050サンプル
  • PCMエンコーディング

オーディオ形式の詳細については、SAPI v5.1のヘルプを参照してください。SpeechRecognitionEngineは、C#で常に同じ間違った結果を返します。

Webサーバーからリソースをフェッチしてストリームとして処理する方法について質問がある場合は、HttpWebResponse.GetResponseStream- http: //msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream(v = vs.100).aspx

于 2012-08-25T15:33:41.573 に答える