В SAPI SREngineConfidence - это попытка передать фразу доверия от речевого механизма, специфичного для поставщика, независимому от механизма клиенту SAPI. У SREngineConfidence есть интересное поведение, описанное в «Руководстве по портированию ядра SR Microsoft SDK версии 5.1 SR»
http://msdn.microsoft.com/en-us/library/ee431799(v=VS.85).aspx#_Toc503606917 говорит:
Это возможно для уверенности в себе
информация для включения в
результаты признания. На каждую фразу
элемент есть две уверенности
поля, которые может установить двигатель. Эти
есть уверенность (трехуровневая)
поле и SREngineConfidence
(с плавающей запятой) поле. Если двигатель
явно не устанавливает ни один из этих
значения, SAPI будет пытаться производить
разумные значения по умолчанию для них. Это
будет производить значения доверия
усреднение уровней для каждого из
слова в фразе или свойстве, и
установит SREngineConfidence
значения до -1.0.
и позже говорит:
Если это поле не используется,
двигатель устанавливает это доверие -1,0.
Еще один ресурс, который может дать вам некоторое представление: http://gotspeech.net/forums/thread/3613.aspx. В одном сообщении говорится:
В принципе, SREngineConfidence
оценка - это значение от 0,0 до 1,0
{более высокое значение означает более высокое
доверие}. Но старые версии
Двигатели SR, такие как 5.1, не соблюдают это
контракт точно, и я не думаю,
значение действительно может быть использовано с
эти двигатели. Только Привет, Средний,
и низкие оценки в другой уверенности
поле можно использовать.
Если я правильно помню, вам нужно больше
последняя версия двигателя SR, вроде
версии, которые поставляются с Microsoft
Office 2003 или Vista, чтобы получить
значимое число в
Поле SREngineConfidence.
Редактирование:
Я считаю, что System.Speech.Recognition действительно является оболочкой .net для SAPI (см. http://msdn.microsoft.com/en-us/magazine/cc163663.aspx).. Я подозреваю, что приведенные выше комментарии, описывающие уровни достоверности -1, могут по-прежнему применяться к вам при использовании System.Speech. Я предполагаю, что -1, который вы видите - это та же самая проблема, о которой говорилось.
Насколько я понимаю, в XP не было распознавателя. Версии Microsoft Office пришли с ним. Итак, я не уверен, какой двигатель распознавателя вы действительно используете. У вас установлен Office 2003? или у вас установлен сторонний движок типа Dragon?
Вы говорите, что у вас установлен распознаватель 5.1. Ссылка GotSpeech.NET выше говорит:
Но более старые версии двигателей SR
как 5.1 не соблюдайте этот контракт
точно, и я не думаю, что ценность
действительно может использоваться с этими двигателями.
Я бы предложил попробовать следующее:
Еще один кусок, чтобы добавить. Вот короткий пример для распознавания из файла WAV:
SpeechRecognitionEngine myRecognizer = new SpeechRecognitionEngine();
Grammar myGrammar = CreatePizzaGrammar(); // uses GrammarBuilder to create a pizza ordering grammar
myRecognizer.LoadGrammar(myGrammar);
myRecognizer.SetInputToWaveFile("LargeCheese.wav"); // recording of ordering a pizza
RecognitionResult result = myRecognizer.Recognize();
string s = result.Text;
float confidence = result.Confidence;