Я только что загрузил языковой пакет времени выполнения fr-FR, чтобы я мог распознавать французскую речь через свою программу.
Однако моя программа выдает ошибку
Дополнительная информация: Не найдено распознавателя требуемого ID.
в
SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(new System.Globalization.CultureInfo("fr-FR"));
en-US и en-GB работают, потому что они предустановлены в моей системе, я только что установил эти новые языковые пакеты, но они по-прежнему генерируют это исключение.
Кроме того, если это поможет, когда я это сделаю
foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
{
Console.Out.WriteLine(x.Name);
}
это печатает
МС-1033-80-СТОЛ
РЕДАКТИРОВАТЬ: это не возможный дубликат, потому что речь идет не о том, чтобы не было установленных распознавателей, а о том, что C # SAPI не видит, что у меня установлен установленный пакет для текущего языка
Мне удалось заставить это работать ... есть дополнительный шаг.
Поскольку вы используете System.Speech, он использует установленное на рабочем столе распознавание речи, которое поставляется с Windows. Вы получаете ошибку не потому, что у вас не установлен язык, а потому, что вы не установили распознаватель речи для этого языка.
Итак, перейдите в «Настройки»> «Время и язык»> «Регион и язык» (вероятно, именно там вы установили язык). После установки языка выберите язык и нажмите «Параметры». Вы должны увидеть варианты загрузки языкового пакета, проверки орфографии и интересующего нас, Speech . Нажмите «Загрузить» и дождитесь завершения загрузки / установки.
Как только это будет сделано, вы не получите уведомление, но вы можете перейти в «Настройки»> «Время и язык»> «Речь» и увидеть там свои установленные распознаватели, или вы можете перейти в «Настройки»> «Распознавание речи»> «Расширенные параметры речи», чтобы увидеть тот же список.
Теперь, когда вы запустите свою программу, она должна работать. Кстати, если вы хотите видеть установленные распознаватели речи в своем коде, используйте вместо этого:
foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
{
Console.WriteLine(x.Culture.Name);
}
Вы получаете код только тогда, когда запрашиваете имя распознавателя, вам нужно название культуры. (как вы видели, MS-1033-80-DESK
соответствует en-US. Для справки это fr-FR MS-1036-80-DESK
).
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения