В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition?

В .NET есть два похожих пространства имен и сборки для распознавания речи. Я пытаюсь понять различия и понять, когда уместно использовать одно или другое.

Есть System.Speech.Recognition из сборки System.Speech (в System.Speech.dll). System.Speech.dll - это основная DLL в библиотеке классов .NET Framework версии 3.0 и более поздних версий.

Еще есть Microsoft.Speech.Recognition из сборки Microsoft.Speech (в microsoft.speech.dll). Microsoft.Speech.dll является частью UCMA 2.0 SDK

Документы меня сбивают с толку, и у меня есть следующие вопросы:

System.Speech.Recognition говорит, что он предназначен для «технологии речи рабочего стола Windows», означает ли это, что он не может использоваться в серверной ОС или не может использоваться для крупномасштабных приложений?

Пакет SDK для речи UCMA 2.0 (http://msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx) говорит, что в качестве предварительного условия требуется Microsoft Office Communications Server 2007 R2. Однако на конференциях и встречах мне говорили, что если мне не нужны такие функции OCS, как присутствие и рабочий процесс, я могу использовать API речи UCMA 2.0 без OCS. Это правда?

Если я создаю простое приложение распознавания для серверного приложения (скажем, я хотел автоматически расшифровывать голосовые сообщения) и мне не нужны функции OCS, в чем разница между двумя API?


person Michael Levy    schedule 04.06.2010    source источник


Ответы (4)


Короткий ответ заключается в том, что Microsoft.Speech.Recognition использует серверную версию SAPI, а System.Speech.Recognition использует версию SAPI для настольных компьютеров.

API-интерфейсы в основном одинаковы, но базовые механизмы разные. Обычно серверный механизм предназначен для приема звука телефонного качества для приложений управления и контроля; Движок рабочего стола разработан для приема звука более высокого качества как для командных приложений, так и для приложений диктовки.

Вы можете использовать System.Speech.Recognition в серверной ОС, но он не предназначен для масштабирования почти так же, как Microsoft.Speech.Recognition.

Различия в том, что ядро ​​сервера не требует обучения и будет работать с более низким качеством звука, но будет иметь более низкое качество распознавания, чем ядро ​​рабочего стола.

person Eric Brown    schedule 06.06.2010

Я нашел ответ Эрика действительно полезным, я просто хотел добавить некоторые подробности, которые я нашел.

System.Speech.Recognition можно использовать для программирования распознавателей рабочего стола. Распознаватели SAPI и Desktop поставляются в составе продуктов:

  • Windows XP: SAPI v5.1 и без распознавателя
  • Windows XP Tablet Edition: SAPI v5.1 и Recognizer v6.1
  • Windows Vista: SAPI v5.3 и Recognizer v8.0
  • Windows 7: SAPI v5.4 и Recognizer v8.0?

Серверы идут с SAPI, но без распознавателя:

  • Windows Server 2003: SAPI v5.1 и без распознавателя
  • Windows Server 2008 и 2008 R2: SAPI v5.3? и без распознавателя

Распознаватели для настольных ПК также входят в состав таких продуктов, как офисные.

  • Microsoft Office 2003: распознаватель v6.1

Microsoft.Speech.Recognition может использоваться для программирования серверных распознавателей. Распознаватели серверов поставляются в составе продуктов:

  • Речевой сервер (разные версии)
  • Office Communications Server (OCS) (различные версии)
  • UCMA - это управляемый API для OCS, который (я считаю) включал распространяемый распознаватель
  • Платформа Microsoft Server Speech Platform - распознаватель v10.2

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

Для получения информации и загрузок Microsoft Speech Platform SDK 11 см:

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

Только настольные распознаватели речи включают грамматику диктовки (грамматика, предоставляемая системой, используемая для диктовки произвольного текста). Класс System.Speech.Recognition.DictationGrammar не имеет дополнений в пространстве имен Microsoft.Speech.

Вы можете использовать API-интерфейсы, чтобы определить ваши установленные реконгайзеры.

  • Рабочий стол: System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()
  • Сервер: Microsoft.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()

Я обнаружил, что могу также увидеть, какие распознаватели установлены, посмотрев на разделы реестра:

  • Распознаватели рабочего стола: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Recognizers \ Tokens
  • Распознаватели серверов: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech Server \ v10.0 \ Recognizers \ Tokens

--- Обновлять ---

Как обсуждалось в Распознавание речи Microsoft - какие ссылки у меня есть добавить?, Microsoft.Speech также является API, используемым для распознавателя Kinect. Это описано в статье MSDN http://msdn.microsoft.com/en-us/library/hh855387.aspx

person Michael Levy    schedule 08.06.2010
comment
Если я правильно прочитал документы, только настольные распознаватели речи включают грамматику диктовки (предоставленная системой грамматика, используемая для диктовки произвольного текста). Класс System.Speech.Recognition.DictationGrammar не имеет дополнений в пространстве имен Microsoft.Speech. - person Michael Levy; 15.06.2010
comment
Согласно API MSDN в C # есть DictationGrammar и WildcardGrammar (и я их использую). Но я не знаю, как активировать его через XML (взлом парсера?), См. Также: stackoverflow.com/questions/12101120/ - person Jean-Philippe Encausse; 26.09.2012
comment
Я установил итальянский язык, загруженный с microsoft.com/en-us/ download / details.aspx? id = 27224, но System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers показывает en-US как единственный активный язык для распознавания речи. Я что-то упускаю? - person P.O.W.; 13.11.2020

Вот ссылка на речевую библиотеку (речевая платформа MS Server):

Выпущена платформа Microsoft Server Speech Platform 10.1 (SR и TTS на 26 языках)

person Switch Commerce    schedule 01.10.2010
comment
10.2 тоже была выпущена недавно. microsoft.com/downloads/en/ - person Michael Levy; 02.10.2010
comment
Спасибо за информацию. Я вижу, что теперь он включает валидатор грамматики. Я ломал себе голову, пытаясь найти ошибки в тех, которые создаю. Где я должен следить за новостями о будущих выпусках? - person Switch Commerce; 04.10.2010
comment
Где я должен следить за новостями о будущих выпусках? отличный вопрос !!! microsoft.com/speech/developers.aspx устарел. Речевые блоги, такие как blogs.msdn.com/b/speak и blogs.msdn.com/b/speech не всегда имеют последние обновления. Вы можете попробовать gotspeech.net или похожие сайты, например gotuc.net. Но, как видите, я тоже не нашел отличного источника, чтобы быть в курсе последних событий. - person Michael Levy; 05.10.2010
comment
самой последней на момент написания является версия 11 - microsoft.com /en-us/download/details.aspx?id=27225 - person George Birbilis; 01.09.2015
comment
кстати, поскольку валидатор грамматики был упомянут выше, см. msdn.microsoft.com/en-us/library/hh378407%28v=office.14%29.aspx для списка инструментов грамматики. - person George Birbilis; 05.01.2016

Кажется, Microsoft написала статью, в которой разъясняются различия между Microsoft Speech Platform и Windows SAPI - https://msdn.microsoft.com/en-us/library/jj127858.aspx. Разницу я обнаружил при преобразовании кода распознавания речи для Kinect из Microsoft.Speech в System.Speech (см. http://github.com/birbilis/Hotspotizer) заключалась в том, что первый поддерживает грамматики SGRS с tag-format = semantics / 1.0-literals, а второй - нет, и вам нужно преобразовать его в semantics / 1.0, изменив x на out = "Икс"; на тегах

person George Birbilis    schedule 09.09.2015
comment
кстати, мой код SpeechLib может оказаться для вас полезным (SpeechLib.codeplex.com). Вы можете удалить ссылку System.Speech оттуда и использовать Microsoft.Speech вместо этого и установить соответствующий символ условной компиляции (см. Источники) для использования Microsoft.Speech в коде (в основном влияет на предложения using, остальная часть кода идентична) - person George Birbilis; 05.01.2016
comment
SpeechLib, упомянутый в приведенном выше комментарии, перемещен в github.com/zoomicon/SpeechLib (поскольку Codeplex заморожен в режим архива сейчас) - person George Birbilis; 17.05.2018