2013-11-27 33 views
1

我一直在搞C# voice to text這很容易。不過,我正試圖弄清楚如何從預設的命令中查看坦率的句子。用c#語音到文字 - 檢測句子

目前,我可以通過偵聽關鍵字做各種事情:

SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine(); 
public Form1() 
{ 
    _recognizer.SetInputToDefaultAudioDevice(); 
    _recognizer.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"Commands.txt"))))); 
    _recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized); 
    _recognizer.RecognizeAsync(RecognizeMode.Multiple); 
} 

void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
    //magic happens here 
} 

正如我以前說過這個偉大的工程。我嘗試使用一些與語音識別相關的其他功能,例如SpeechHypothesized,但它只會根據加載到程序中的語法來猜測單詞,這些語法是預設命令。這是有道理的。但是,如果我將一個完整的庫加載到語法中,那麼我的命令將不太準確。

我想設置程序,所以當一個關鍵字被說(其中一個命令)時,它會試圖轉錄一個實際的句子。

+0

找到了一些體面的信息[here](http://michal.is/blog/speech-recognition-with-c-dictation-and-custom-grammar/)。我一直在尋找「語音聽寫」,儘管即使設置了文字的準確性,文字的語音也不是很準確。 – Nick

+0

http://stackoverflow.com/questions/10377054/how-to-recognize-a-phrase-from-a-voice-file/10379351#10379351 –

回答

0

我一直在尋找「言語聽寫」。我可以使用內置於c#中的來收聽完整的句子,而不是將我的命令列表加載到語法中。

SpeechRecognitionEngine recognitionEngine recognitionEngine = new SpeechRecognitionEngine(); 
recognitionEngine.SetInputToDefaultAudioDevice(); 
recognitionEngine.LoadGrammar(new DictationGrammar()); 
RecognitionResult result = recognitionEngine.Recognize(new TimeSpan(0, 0, 20)); 
foreach (RecognizedWordUnit word in result.Words) 
{ 
    Console.Write(「{0} 「, word.Text); 
} 

雖然這種方法似乎並不即使我使用word.Confidence似乎只是猜測正確的單詞不到半年的時間非常準確。

可以嘗試使用Google Voice API發送flac文件進行後期處理。