C # Распознавание речи – это то, что сказал пользователь?

Мне нужно написать приложение, в котором используется механизм распознавания речи – либо встроенный, либо третий, который может отображать слово или фразу, и распознавать, когда пользователь его читает (или приближение к нему ). Мне также нужно иметь возможность быстро переключаться между языками, не меняя язык операционной системы.

Пользователи будут использовать систему в течение очень коротких периодов времени. Приложение должно работать без требования первой подготовки механизма распознавания к голосам пользователей.

Было бы также замечательно, если бы это могло работать в Windows XP или в меньших версиях Windows Vista.

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

Может ли кто-нибудь мне что-то рекомендовать?

    Аналогичный вопрос был задан на Joel on Software некоторое время назад. Вы можете использовать пространство имен System.Speech.Recognition для этого … с некоторыми ограничениями. Добавьте System.Speech (должен быть в GAC) в ваш проект. Вот пример кода для приложения WinForms:

    public partial class Form1 : Form { SpeechRecognizer rec = new SpeechRecognizer(); public Form1() { InitializeComponent(); rec.SpeechRecognized += rec_SpeechRecognized; } void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { lblLetter.Text = e.Result.Text; } void Form1_Load(object sender, EventArgs e) { var c = new Choices(); for (var i = 0; i <= 100; i++) c.Add(i.ToString()); var gb = new GrammarBuilder(c); var g = new Grammar(gb); rec.LoadGrammar(g); rec.Enabled = true; } 

    Это распознает числа от 1 до 100 и отображает итоговое число в форме. Вам понадобится форма с ярлыком lblLetter.

    System.Speech работает только с заранее определенным списком слов или фраз; это не совсем NaturallySpeaking, будь то универсальность или качество распознавания. Но вам не нужно обучать его голосу пользователя, и если у вас есть только несколько разных вещей, которые пользователь может сказать, он работает достаточно хорошо. И это бесплатно! (если у вас есть Visual Studio)

    Это не сработает, если вы используете очень короткие фразы; Я сделал программу для моего ребенка, чтобы сказать буквы алфавита и увидеть их на экране, но это не очень хорошо, так как многие буквы звучат одинаково (особенно из уст четырехлетнего ребенка).

    Что касается более гибких вариантов ... ну, то есть вышеупомянутое NaturallySpeaking, в котором есть SDK. Но вам нужно связаться с продавцами, чтобы получить какой-либо доступ к нему, и ни одна цена не указана, поэтому она встречается как одна из тех, «сколько это стоит?» Ну, сколько у вас есть? » Подобные вещи. Кажется, что нет опции «скачать и играть с ней». 🙁

    Что касается текста в речь, System.Speech.Synthesis делает это. Это еще проще, чем распознавание речи. Я написал небольшую программу, чтобы разрешить мне вводить текст, нажать Enter и прочитать текст вслух. Мой четырехлетний ребенок загипнотизирован. 🙂 («Папочка, я хочу поучаствовать в wobot»).

    [Примечание. Я был лидером разработки для управляемого управляемого распознавания речи в .NET 3.0]

    System.Speech является частью .NET 3.0, поэтому он доступен как для Vista, так и для XP. В Vista у вас есть дополнительное преимущество – наличие механизма распознавания речи, предварительно установленного ОС. В XP вы выбираете: используйте SAPI 5.1 SDK с очень старым движком (но может работать достаточно хорошо для вашего сценария управления и управления), установите Office 2003, который устанавливает более новую версию распознавателя. Существует также несколько доступных для SAPI 5 систем распознавания речи.

    Если вам нужно переключать языки, вы захотите использовать class System.Speech.Recognition.SpeechRecognitionEngine, который позволяет вам выбрать механизм SR для языка, который вам нужен для поддержки. Обратите внимание, что двигатели определяются набором поддерживаемых им языков (они могут использовать один и тот же двоичный файл, заменяя только файлы данных для поддержки дополнительных языков).

    Комментарий, если вам нужно знать больше.

    Philipp

    Перед этим добавьте ссылку «Речь»

    System.Speech

    Обнаружил, что пример кода, опубликованный Kyralessa 22 октября, не работал для меня, но немного переработанная версия. При добавлении строк в объект «Выбор» используйте полные текстовые английские слова, а не цифры. Кажется, механизм распознавания речи MS не может распознавать номера самостоятельно.

    Я добавил эти изменения с комментариями, добавленными в предыдущий пример.

     public partial class Form1 : Form { SpeechRecognizer rec = new SpeechRecognizer(); public Form1() { InitializeComponent(); rec.SpeechRecognized += rec_SpeechRecognized; } void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { lblLetter.Text = e.Result.Text; } void Form1_Load(object sender, EventArgs e) { var c = new Choices(); // Doens't work must use English words to add to Choices and // populate grammar. // //for (var i = 0; i <= 100; i++) // c.Add(i.ToString()); c.Add("one"); c.Add("two"); c.Add("three"); c.Add("four"); // etc... var gb = new GrammarBuilder(c); var g = new Grammar(gb); rec.LoadGrammar(g); rec.Enabled = true; } 

    Если двигатель – это то, о чем вы спрашиваете, то я нашел (остерегайтесь, я просто перечисляю, я не пробовал ни одного из них):

    Двигатель Lumenvox

    у вас также есть SDK SAPI от самой Microsoft, я только пробовал его для текстовых сообщений, но в соответствии с его определением:

    SDK также включает свободно распространяемые текстовые (TTS) двигатели (на английском и устном китайском) и системы распознавания речи (SR) (на английском, китайском и японском языках).

    Будьте предупреждены, что вы не добьетесь хороших результатов, если сначала не потребуете обучения. Распознавание речи – это статистическое приложение фонетики, поле, в котором довольно откровенно говорится о том, что в сигнале так много различий, что почти чудо может понять кто-то другой. Встроенный механизм распознавания речи, скорее всего, будет иметь тенденцию к более общему акценту на английском языке, но будет терпеть неудачу для всего, что даже немного отличается.

    Вот почему обучение так важно. Мы можем преуспеть, просто переопределив, особенно если мы уменьшим пространство проблем. Но создание расширяемого решения для машинного обучения? В этом всегда лежит руб.

    Это говорит о Сфинксе-4. Это готовое решение, написанное на Java, доступно по адресу http://cmusphinx.sourceforge.net/sphinx4/

    Ознакомьтесь с новыми библиотеками classов речи в .NET 3.5

    http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognizer.aspx

    общая документация для SR и TTS

    http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx http://msdn.microsoft.com/en-us/library/system.speech.synthesis.aspx

    Текст в речь доступен с помощью Speech API . Лично мне, вероятно, потребуется Vista и использовать управляемые интерфейсы для System.Speech.SpeechRecognition и System.Speech.Synthesis.TtsEngine , но P / Invoke должен быть доступен в неуправляемых API, если вам действительно нужна поддержка XP.

    Попробуйте Microsoft Speech Server , который, я думаю, теперь является частью Office Communication Server 2007 . Он содержит механизмы SR / TTS, API C # и инструменты, которые интегрируются с Visual Studio.

    Это статья из журнала MSDN, в которой впервые обсуждались использование API System.Speech для Vista. Некоторые из них устарели, потому что API изменился между бета-версиями (когда статья была написана) и выпуском Vista, но это все еще один из лучших ресурсов, которые я нашел, и хорошо вписывается в пространство имен System.Speech , См. http://msdn.microsoft.com/en-us/magazine/cc163663.aspx

    Dragon Naturally Speaking SDK, возможно, стоит посмотреть. Этот проект выглядел интересным.

    Не нужно играть ни с одним из них.

    Ну, у этого вопроса уже много хороших отзывов, но я думаю, что полезно обновить некоторую информацию из 2016 года, в которой будут представлены ответы Роба Сигала и Филиппа Шмида, указывающие на этот хороший пример кода:

    https://msdn.microsoft.com/en-us/library/office/system.speech.recognition.speechrecognitionengine.aspx

    Он не использовал общий распознаватель Windows (маленький Windows Mic, который отображается в середине экрана), он использует приятное приложение SpeechRecognitionEngine, которое не нуждается в визуальной подсказке. Пользовательский интерфейс полностью находится под вашим контролем.

    Interesting Posts
    Давайте будем гением компьютера.