我做了很多研究,并提出了以下代码。它使用麦克风成功地将语音翻译成文本。
我的网络服务器上有一个文件,通过mp3传输音频。它只是一个mp3文件的链接。我需要将其翻译成文本。
我试图找出最好的方法来做到这一点。那么,您可以选择音频输入作为计算机音频(即在网络浏览器中播放音频)吗?或者您可以将音频直接传输到翻译器吗?我想我需要使用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
答案 0 :(得分:0)
recognizer.SetInputToWaveFile(file) - 将从文件系统中的文件中读取音频输入。
recognizer.SetInputToAudioStream - 将从流中读取音频输入。一个简短的例子:
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
SpeechAudioFormatInfo format = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
recognizer.SetInputToAudioStream(fs, format);
从流或文件中读取时,必须小心确保音频数据采用支持的格式。例如,我知道在我的机器上工作的一种格式是:
有关音频格式的详情,请参阅Help with SAPI v5.1 SpeechRecognitionEngine always gives same wrong result with C#。
如果您的问题是如何从Web服务器获取资源并将其作为流处理,请参阅HttpWebResponse.GetResponseStream - http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream(v=vs.100).aspx