0

我做了很多研究并想出了下面的代码。它使用麦克风成功地将语音转换为文本。

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

1 回答 1

0

识别器.SetInputToWaveFile(file) - 将从文件系统中的文件读取音频输入。

识别器.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编码

有关音频格式的详细信息,请参阅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 回答