我正在使用一個簡單的語音識別應用程序來控制通過並行端口的中繼,這是它應該如何工作的基本程序。在.NET中的語音識別不起作用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Speech.Synthesis;
using Microsoft.Speech.Recognition;
namespace speechHardware
{
class Program
{
static void Main(string[] args)
{
// Create a new SpeechRecognitionEngine instance.
var sre = new SpeechRecognitionEngine();
SpeechSynthesizer s = new SpeechSynthesizer();
Console.WriteLine("starting recognizer.......");
s.Speak("starting recognizer.");
// Create a simple grammar that recognizes "light on", "light off", or "fan on","fan off".
Choices colors = new Choices();
Console.WriteLine("option list.......");
colors.Add("light on");
colors.Add("light off");
colors.Add("fan on");
colors.Add("fan off");
GrammarBuilder gb = new GrammarBuilder();
gb.Append(colors);
Console.WriteLine("starting grammer builder.......");
// Create the actual Grammar instance, and then load it into the speech recognizer.
Grammar g = new Grammar(gb);
sre.LoadGrammar(g);
// Register a handler for the SpeechRecognized event.
sre.SpeechRecognized += SreSpeechRecognized;
//sre.SetInputToWaveFile("C:\Users\Raghavendra\Documents\MATLAB\test.wav");
sre.SetInputToDefaultAudioDevice();
Console.WriteLine("input device recognised.......");
s.Speak("input device recognised.");
sre.RecognizeAsync(RecognizeMode.Multiple);
Console.ReadLine();
Console.WriteLine("stopping recognizer.....");
sre.RecognizeAsyncStop();
}
static void SreSpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
SpeechSynthesizer s = new SpeechSynthesizer();
Console.WriteLine("\nSpeech Recognized: \t{0}" + e.Result.Confidence, e.Result.Text);
if (e.Result.Confidence < 0.85)
return;
switch (e.Result.Text)
{
case "light on":
light(1);
s.Speak("the light has been turned on.");
break;
case "light off":
light(0);
s.Speak("the light has been turned off.");
break;
case "fan on":
fan(1);
s.Speak("the fan has been turned on.");
break;
case "fan off":
fan(0);
s.Speak("the fan has been turned off.");
break;
default:
break;
}
}
static void light(int val)
{
Console.WriteLine("\nSpeech Recognized:light ");
}
static void fan(int val)
{
Console.WriteLine("\nSpeech Recognized: fan");
}
}
}
這工作完全我的朋友的計算機上,但在我的電腦不承認什麼,我說,也許這是沒有得到的輸入。我們都有幾乎相同的配置。麥克風也運作良好,我不知道什麼是錯的。
我已經安裝了微軟 語音平臺 - 軟件開發工具包(SDK),10.2版(86版) 微軟語音平臺 - 服務器運行時,10.2版(86版)
請幫助我。
嘗試記錄置信度值。看看它輸出什麼。 – WoLfulus 2012-01-17 12:54:51
「我們都擁有幾乎相同的配置」。有什麼不同?如果您可以使配置相同並查看問題是否消失。當你知道有什麼不同時,你可以看到* *是否導致問題。 – ChrisF 2012-01-17 12:57:57
您是否在控制面板 - 語音識別中運行了「訓練您的計算機以更好地理解您」? – 2012-01-17 13:45:38