У чому різниця між System.Speech.Recognition та Microsoft.Speech.Recognition?


79

У .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?

Відповіді:


102

Коротка відповідь полягає в тому, що Microsoft.Speech.Recognition використовує серверну версію SAPI, тоді як System.Speech.Recognition використовує робочу версію SAPI.

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

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

Відмінності полягають у тому, що серверний движок не потребуватиме навчання та працюватиме з низькоякісною аудіосистемою, але матиме нижчу якість розпізнавання, ніж робоча система.


52

Я знайшов відповідь Еріка дуже корисною, я просто хотів додати ще деякі деталі, які я знайшов.

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

  • Windows XP: SAPI v5.1 і без розпізнавача
  • Випуск для планшетів Windows XP: 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 (OCS) (різні версії)
  • UCMA - це керований API для OCS, який (я вважаю) включає розподілюваний розпізнавач
  • Мовна платформа Microsoft Server - розпізнавач 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/uk/details.aspx?id=27226 .

Інформацію та завантаження Microsoft Speech Platform SDK 11 див .:

Настільні розпізнавачі призначені для запуску inproc або спільного використання. Спільні розпізнавачі корисні на робочому столі, де голосові команди використовуються для управління будь-якими відкритими програмами. Розпізнавачі серверів можуть працювати лише inproc. Розпізнавачі 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


3
Якщо я правильно прочитав документи, лише настільні розпізнавачі мовлення включають граматику диктантів (граматика, що надається системою, що використовується для диктування вільного тексту). Клас System.Speech.Recognition.DictationGrammar не має доповнення у просторі імен Microsoft.Speech.
Michael Levy

Відповідно до MSDN API в C # є DictationGrammar та WildcardGrammar (і я ними користуюся). Але я не знаю, як його активувати за допомогою XML (хакерський парсер?) Див. Також: stackoverflow.com/questions/12101120/…
Жан-Філіп Енкаус

Я встановив італійську мову, завантажену з microsoft.com/en-us/download/details.aspx?id=27224, але System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers показує en-US як єдину активну мову для розпізнавання мови. Я щось сумую?
військовополонений

7

Ось посилання на Мовну бібліотеку (Мовна платформа MS Server):

Випущена мовна платформа Microsoft Server 10.1 (SR та TTS 26 мовами)


2
10.2 також вийшов нещодавно. microsoft.com/downloads/en/…
Майкл Леві,

Дякую за інформацію. Я бачу, що зараз включає перевірку граматики. Я ламав голову, намагаючись знайти помилки в тих, які я створюю. Де мені слідкувати за новинами про майбутні випуски?
Switch Commerce

"Де мені слідкувати за новинами про майбутні випуски?" це чудове питання !!! microsoft.com/speech/developers.aspx застарілий. Мовні блоги, такі як blogs.msdn.com/b/speak та blogs.msdn.com/b/speech , не завжди мають останні оновлення. Ви можете спробувати gotspeech.net або пов'язані сайти, такі як gotuc.net . Але, як ви бачите, я також не знайшов чудового джерела, яке б завжди було в курсі.
Michael Levy

1
остання на момент написання - версія 11 - microsoft.com/en-us/download/details.aspx?id=27225
Джордж Бірбіліс

До речі, оскільки граматичний валідатор був згаданий вище, див. msdn.microsoft.com/en-us/library/hh378407%28v=office.14%29.aspx для переліку граматичних інструментів
Джордж Бірбіліс

4

Здається, корпорація Майкрософт написала статтю, в якій з’ясовується різниця між 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 граматики з тегом формату = семантика / 1,0- літерали, тоді як останнього немає, і вам доведеться перетворити на семантику / 1.0, змінивши x на out = "x"; на мітках


3
До речі, ви можете знайти мій код SpeechLib корисним ( SpeechLib.codeplex.com ). Ви можете видалити звідти посилання System.Speech і замість цього скористатися Microsoft.Speech та встановити відповідний умовний символ компіляції (див. Джерела) для використання Microsoft.Speech у коді (здебільшого впливає на речення з використанням, решта коду ідентична)
Джордж Бірбіліс

1
SpeechLib, згаданий у вищевказаному коментарі, перемістився на github.com/zoomicon/SpeechLib (оскільки Codeplex зараз заморожений до режиму архівування)
Джордж Бірбіліс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.