Использование С++ для вызова и использования распознавания речи Windows

Я делаю приложение, которое включает использование распознавания речи Windows. Я думаю об использовании С++ для этого, так как у меня есть некоторый опыт работы с этим языком. Я хочу использовать распознавание речи так, чтобы оно работало внутри. Если я загружаю аудиофайл в свою программу, я хочу, чтобы распознавание речи записывало этот звук в виде текстового файла, но все это должно быть сделано внутри. Пожалуйста, помогите с этим, и если я не объяснил свой вопрос должным образом, пожалуйста, дайте мне знать, и я попытаюсь объяснить снова.

Заранее спасибо, Дивс


person Divs    schedule 05.01.2011    source источник


Ответы (2)


(Старый вопрос, но нет принятого ответа, и он находится довольно высоко в Google)

Если вы действительно хотите сделать это на C++, вам необходимо загрузить SAPI SDK, который не входит в стандартную комплектацию Windows: http://www.microsoft.com/downloads/en/details.aspx?FamilyID.=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en выберите SpeechSDK51.exe

Лучшая документация по SAPI, которую вы можете найти, находится не в Интернете, а в самом SDK, в папке Docs/. .chm очень хорошо все объясняет. Здесь находится дополнительная ссылка чтобы вы начали.

Тем не менее, если C++ не является для вас обязательным, я настоятельно рекомендую вам сделать это на C#. Это действительно намного проще (без COM-компонентов, без отдельного SDK, больше документации в MSDN, больше руководств и т. д.). См. эту статью CodeProject; вам придется удалить весь материал с графическим интерфейсом и весь материал для синтеза речи, и вы увидите, что распознавание речи сводится к 10 строкам кода. Довольно впечатляющий.

РЕДАКТИРОВАТЬ образец кода, не скомпилированный, не проверенный:

using System.Speech;
using System.Speech.Recognition;

// in constructor or initialisation
SpeechRecognitionEngine recognizer = null;
recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
recognizer.RecognizeAsync(RecognizeMode.Multiple);

// The callback called when a sentence is recognized
private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e){
    string text = e.Result.Text;
    // Do whatever you want with 'text' now
}

та дах, готово

person Calvin1602    schedule 01.06.2011

Windows предоставляет механизмы распознавания речи как для клиентов, так и для серверов. Оба могут быть запрограммированы на C++ или на языках .NET. Традиционный API для программирования на C++ известен как SAPI. Имена платформы .NET для речи клиента и сервера — System.Speech и Microsoft.Speech.

Документация по SAPI — http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx

Пространство имен .NET для распознавания клиентов — System.Speech — http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx. Windows Vista и 7 включают речевой движок.

Пространство имен .NET для распознавания сервера — Microsoft.Speech, а полный пакет SDK для версии 10.2 доступен по адресу http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66.-4241-9a21-90a294a5c9a4. Речевой движок можно загрузить бесплатно.

Многие предыдущие вопросы касались этого. См. Прототип на основе распознавания речи и Проблема SAPI и Windows 7 для примеров.

person Michael Levy    schedule 06.01.2011
comment
И статья Elemental, связанная с (msdn.microsoft.com/en-us/magazine /cc163663.aspx) очень полезен. - person Michael Levy; 06.01.2011