我正在开展一个项目,我需要使用语音识别将wav文件输入语音(对话)转换为文本。在尝试CMUSPhinx一段时间后,结果很糟糕,我正在考虑使用Microsoft SAPI(Speech API)5.4
我正在从visual studio编写Visual Basic窗口应用程序。这是我的代码片段:
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方法。输入文件是一个wav文件,每个样本16位,30秒长的会话。
我正在使用此链接中提到的代码: http://msdn.microsoft.com/en-us/library/ee431813(v=vs.85).aspx
我如何检查问题?我曾经读过某个地方,听写需要对语音识别引擎进行培训,如果它在我的情况下也需要,那么我该怎么做呢?同样在链接中提到我们需要指定输入文件的长度才能做到 这个,我也不知道怎么做。需要帮助。
答案 0 :(得分:1)
示例代码缺少需要解决的几个步骤。
1)Inproc识别器在进行任何识别之前需要bind an engine;
2)inproc识别器在开始处理音频之前需要set active。
您还应该考虑为其他事件添加处理程序,特别是SPEI_START_SR_STREAM,SPEI_SOUND_START,SPEI_SOUND_END和SPEI_PHRASE_START,以验证SR引擎是否正在处理音频并且它正在尝试进行一些识别。