我正在做一个项目,我需要使用语音识别将 wav 文件输入语音(对话)转换为文本。在尝试 CMUSPhinx 一段时间后,结果很糟糕,我正在考虑使用 Microsoft SAPI (Speech API) 5.4
我正在编写 Visual Studio 中的 Visual Basic Windows 应用程序。这是我的代码片段:
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
我如何检查问题?我在某处读到需要对语音识别引擎进行听写训练,如果在我的情况下也需要,那么我该怎么做?同样在链接中提到我们需要指定输入文件的长度才能做到这一点,我也不确定如何做到这一点。需要帮助。