В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition? - PullRequest
78 голосов
/ 04 июня 2010

В .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», означает ли это, что ее нельзя использовать на серверной ОС или нельзя использовать для высокопроизводительных приложений?

В UCMA 2.0 Speech SDK (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?

Ответы [ 4 ]

100 голосов
/ 06 июня 2010

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

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

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

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

51 голосов
/ 08 июня 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 или shared. Распознаватели общего доступа полезны на рабочем столе, где голосовые команды используются для управления любыми открытыми приложениями. Распознаватели серверов могут работать только inproc. Распознаватели Inproc используются, когда одно приложение использует распознаватель или когда необходимо распознать wav-файлы или аудиопотоки (общие распознаватели не могут обрабатывать аудиофайлы, только звук с устройств ввода).

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

Вы можете использовать API-интерфейсы для запроса определения установленных реконгизаторов

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

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

  • Настольные распознаватели: HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Speech \ Recognizer \ Tokens
  • Распознаватели серверов: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech Server \ v10.0 \ Распознаватели \ Токены

--- Обновление ---

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

7 голосов
/ 01 октября 2010

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

Выпущена Microsoft Server Speech Platform 10.1 (SR и TTS на 26 языках)

4 голосов
/ 09 сентября 2015

Кажется, 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 с тегами format-semantics / 1.0-literal, а второй и вам нужно преобразовать в семантику / 1.0, изменив x на out = "x"; в тегах

...