在Visual Studio中通过URL语音到文本

时间:2012-08-24 22:17:27

标签: winforms visual-studio speech-recognition

我做了很多研究,并提出了以下代码。它使用麦克风成功地将语音翻译成文本。

我的网络服务器上有一个文件,通过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

1 个答案:

答案 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);

从流或文件中读取时,必须小心确保音频数据采用支持的格式。例如,我知道在我的机器上工作的一种格式是:

  • 每个样本8位
  • 单声道单声道
  • 每秒22,050个样本
  • PCM编码

有关音频格式的详情,请参阅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