System.Speech - это ориентированный на клиента API. Vista и Windows 7 включают речевые движки для System.Speech. Вы можете использовать это для транскрипции, потому что клиентские речевые движки, предоставляемые Microsoft, включают грамматику диктовки.
Серверные речевые движки, предоставляемые Microsoft, не содержат грамматику диктовки, поэтому их труднее использовать для транскрипции. Пространством имен .NET для распознавания серверов является Microsoft.Speech, а полный SDK для версии 10.2 доступен по адресу http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4.. Речевой движок можно загрузить бесплатно.
Чтобы начать работу с речью .NET, есть очень хорошая статья, опубликованная несколько лет назад на http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, пожалуй, лучшая вступительная статья, которую я когда-либо нашел. Это немного устарело, но очень полезно. (Метод AppendResultKeyValue был удален после бета-тестирования.)
Вот краткий пример, демонстрирующий одно из самых простых приложений Windows. Для форм форм, использующее грамматику диктовки, о которой я только мог подумать. Это должно работать на Windows Vista или Windows 7. Я создал форму. Уронил на нее кнопку и сделал кнопку большой. Добавлена ссылка на System.Speech и строка:
using System.Speech.Recognition;
Затем я добавил следующий обработчик событий для button1:
private void button1_Click(object sender, EventArgs e)
{
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
Grammar dictationGrammar = new DictationGrammar();
recognizer.LoadGrammar(dictationGrammar);
try
{
button1.Text = "Speak Now";
recognizer.SetInputToDefaultAudioDevice();
RecognitionResult result = recognizer.Recognize();
button1.Text = result.Text;
}
catch (InvalidOperationException exception)
{
button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
}
finally
{
recognizer.UnloadAllGrammars();
}
}
Немного больше информации, сравнивающей различные варианты речевых движков и API, поставляемых Microsoft, можно найти по адресу В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition?