Sunday, 15 January 2012

c# 4.0 - Speech recognition using SetInputToWaveFile ends prematurely -



c# 4.0 - Speech recognition using SetInputToWaveFile ends prematurely -

i want speech recognition of sound file.

my code pretty basic , derived here. problem stops every wave file prematurely after few seconds though wave files hours long.

how create scan whole file?

namespace stimmenerkennung { public partial class form1 : form { //... thread erkennung; bool completed; private void form1_load(object sender, eventargs e) { erkennung = new thread(erkennen); erkennung.start(); } void erkennen() { using (speechrecognitionengine recognizer = new speechrecognitionengine()) { // create , load grammar. grammar dictation = new dictationgrammar(); dictation.name = "dictation grammar"; recognizer.loadgrammar(dictation); // configure input recognizer. recognizer.setinputtowavefile(@"rec01.wav"); // attach event handlers results of recognition. recognizer.speechrecognized += new eventhandler<speechrecognizedeventargs>(recognizer_speechrecognized); recognizer.recognizecompleted += new eventhandler<recognizecompletedeventargs>(recognizer_recognizecompleted); // perform recognition on entire file. db("starting asynchronous recognition..."); recognizer.recognizeasync(); while (!completed) { //fs((int)(100 / recognizer.audioposition.totalseconds * recognizer.audioposition.seconds)); db(recognizer.audiostate.tostring()); thread.sleep(100); } } } // handle speechrecognized event. void recognizer_speechrecognized(object sender, speechrecognizedeventargs e) { if (e.result != null && e.result.text != null) { db(e.result.text); } else { db(" recognized text not available."); } } // handle recognizecompleted event. void recognizer_recognizecompleted(object sender, recognizecompletedeventargs e) { if (e.cancelled) { db(" operation cancelled."); } if (e.inputstreamended) { db(" end of stream encountered."); } completed = true; } void db(string t) { this.textbox1.invoke((methodinvoker)delegate { textbox1.text = textbox1.text + environment.newline + t; //textbox1.text = t; }); } } }

you can split file on few seconds chunks silences , feed chunk recognizer separately. can combine results single string.

you can utilize voice activity detection implementation perform split, simple energy-based vad calculate frame energy sufficient.

you can find existing implementations of vad in cmusphinx projet

c#-4.0 speech-recognition

No comments:

Post a Comment