用c#发声的文本 - 检测一个句子

时间:2013-11-27 17:50:05

标签: c# voice-recognition

我一直在忙着C# voice to text这很容易。然而,我试图弄清楚如何从我所做的预设命令中找出坦率的句子。

目前,我可以通过收听关键字来做各种事情:

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,但它只会根据加载到程序中的语法猜测单词,这些语法是预设命令。这是有道理的。但是,如果我将完整的库加载到语法中,那么我的命令将不那么准确。

我正在尝试设置程序,所以当说出一个关键字(其中一个命令)时,它会试着转录一个实际的句子。

1 个答案:

答案 0 :(得分:0)

我一直在寻找“言语听写”。我没有将命令列表加载到语法中,而是使用内置于c#中的DictationGrammar()来听取完整的句子。

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文件进行后期处理。