2013-03-24 4 views
1

에서 wav 파일 입력을 사용할 때 출력이 없습니다. 음성 인식을 사용하여 wav 파일의 입력 음성 (대화)을 텍스트로 변환해야하는 프로젝트를 진행하고 있습니다. 한동안 CMUSPhinx를 사용해 본 결과, Microsoft SAPI (Speech API)를 사용하는 것을 고려 중입니다. 5.4Microsoft SAPI 5.4 Api

Visual Studio에서 Visual Basic Windows 응용 프로그램으로 코딩하고 있습니다. 여기 내 코드입니다 다음 MY_WAVE_AUDIO_FILENAME에서

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 

, 나는 전체 경로와 파일 이름을 부여했다. 버튼을 클릭 할 때이 코드를 실행하면 결과가 표시되지 않습니다. 나는 다음과 같은 인식 방법을 사용했다 :

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 메소드에 도달하지 않는다. 입력 파일은 샘플 당 16 비트, 대화 시간이 30 초인 wav 파일입니다.

나는이 링크에서 언급 된 코드를 사용하고 있습니다 : http://msdn.microsoft.com/en-us/library/ee431813(v=vs.85).aspx

내가 문제를 확인할 수있는 방법

? 나는 음성 인식 엔진에 받아쓰기 훈련이 필요하다는 어딘가를 읽었다. 나의 경우에도 필요하다면 어떻게 할 수 있는가? 또한이 링크에서 을 수행하기 위해 입력 파일의 길이를 지정해야한다는 언급이 있지만이를 수행하는 방법도 잘 모르겠습니다. 도움이 필요하다.

답변

1

샘플 코드에 해결해야 할 몇 단계가 없습니다.

1) 인식을 수행하기 전에 Inproc 인식기가 bind an engine이어야합니다.

2) inproc 인식기는 오디오 처리를 시작하기 전에 set active이어야합니다.

당신은 다른 이벤트에 대한 처리기를 추가하는 것을 고려한다, 특히 SPEI_START_SR_STREAM에, SPEI_SOUND_START, SPEI_SOUND_END 및 SPEI_PHRASE_START는 SR 엔진이 전혀 오디오를 처리되었는지와 어떤 인식을하려고 있는지 확인합니다.