System.Speech.Recognition과 Microsoft.Speech.Recognition의 차이점은 무엇입니까?


79

.NET에서 음성 인식을위한 두 개의 유사한 네임 스페이스와 어셈블리가 있습니다. 나는 차이점과 둘 중 하나를 사용하는 것이 적절한 때를 이해하려고 노력하고 있습니다.

System.Speech 어셈블리 (System.Speech.dll에 있음)의 System.Speech.Recognition이 있습니다. System.Speech.dll은 .NET Framework 클래스 라이브러리 3.0 이상에서 핵심 DLL입니다.

어셈블리 Microsoft.Speech (microsoft.speech.dll에 있음)의 Microsoft.Speech.Recognition도 있습니다. Microsoft.Speech.dll은 UCMA 2.0 SDK의 일부입니다.

문서가 혼란스럽고 다음과 같은 질문이 있습니다.

System.Speech.Recognition이 "Windows 데스크톱 음성 기술"을위한 것이라고 말합니다. 이것은 서버 OS에서 사용할 수 없거나 대규모 응용 프로그램에 사용할 수 없음을 의미합니까?

UCMA 2.0 음성 SDK ( http://msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx )에서는 Microsoft Office Communications Server 2007 R2가 필수 구성 요소로 필요하다고 말합니다. 그러나 회의 및 회의에서 현재 상태 및 워크 플로와 같은 OCS 기능이 필요하지 않으면 OCS없이 UCMA 2.0 Speech API를 사용할 수 있다고 들었습니다. 이것이 사실입니까?

서버 애플리케이션을위한 간단한 인식 앱을 구축하고 있는데 (예를 들어 음성 메일을 자동으로 기록하고 싶음) OCS의 기능이 필요하지 않은 경우 두 API의 차이점은 무엇입니까?

답변:


102

짧은 대답은 Microsoft.Speech.Recognition은 서버 버전의 SAPI를 사용하는 반면 System.Speech.Recognition은 데스크톱 버전의 SAPI를 사용한다는 것입니다.

API는 거의 동일하지만 기본 엔진은 다릅니다. 일반적으로 서버 엔진은 명령 및 제어 응용 프로그램을위한 전화 품질의 오디오를 수용하도록 설계되었습니다. Desktop 엔진은 명령 및 제어 및 받아쓰기 응용 프로그램 모두에 대해 고품질 오디오를 수용하도록 설계되었습니다.

서버 OS에서 System.Speech.Recognition을 사용할 수 있지만 Microsoft.Speech.Recognition만큼 확장하도록 설계되지 않았습니다.

차이점은 서버 엔진은 교육이 필요하지 않고 저품질 오디오에서 작동하지만 데스크톱 엔진보다 인식 품질이 낮다는 것입니다.


52

나는 Eric의 대답이 정말 도움이된다는 것을 알았고 내가 찾은 세부 사항을 더 추가하고 싶었습니다.

System.Speech.Recognition을 사용하여 데스크톱 인식기를 프로그래밍 할 수 있습니다. SAPI 및 데스크탑 인식기는 제품에 포함되어 있습니다.

  • 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 : Recognizer v6.1

Microsoft.Speech.Recognition을 사용하여 서버 인식기를 프로그래밍 할 수 있습니다. 서버 인식기는 제품에 포함되어 있습니다.

  • Speech Server (다양한 버전)
  • OCS (Office Communications Server) (다양한 버전)
  • UCMA – 재배포 가능한 인식기가 포함 된 OCS 용 관리 API입니다.
  • Microsoft 서버 음성 플랫폼 – 인식기 v10.2

Microsoft Server Speech Platform 10.2 버전 용 전체 SDK는 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 또는 공유를 실행하도록 설계되었습니다. 공유 인식기는 음성 명령을 사용하여 열려있는 모든 응용 프로그램을 제어하는 ​​데스크톱에서 유용합니다. 서버 인식기는 inproc 만 실행할 수 있습니다. Inproc 인식기는 단일 응용 프로그램에서 인식기를 사용하거나 wav 파일 또는 오디오 스트림을 인식해야 할 때 사용됩니다 (공유 인식기는 오디오 파일을 처리 할 수없고 입력 장치의 오디오 만 처리 할 수 ​​있음).

데스크톱 음성 인식기에만 받아쓰기 문법 (자유 텍스트 받아쓰기에 사용되는 시스템 제공 문법)이 포함됩니다. System.Speech.Recognition.DictationGrammar 클래스는 Microsoft.Speech 네임 스페이스에 보완 요소가 없습니다.

API를 사용하여 설치된 recongizer를 쿼리 할 수 ​​있습니다.

  • 데스크톱 : 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는 Kinect 인식기에 사용되는 API이기도합니다. 이것은 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/…
Jean-Philippe Encausse

microsoft.com/en-us/download/details.aspx?id=27224 에서 다운로드 한 이탈리아어를 설치 했지만 System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers는 음성 인식을위한 유일한 활성 언어로 en-US를 표시합니다. 내가 뭔가 그리워?
POW

7

다음은 음성 라이브러리 (MS Server 음성 플랫폼)에 대한 링크입니다.

Microsoft Server Speech Platform 10.1 출시 (26 개 언어의 SR 및 TTS)


2
10.2도 최근에 출시되었습니다. microsoft.com/downloads/en/…
Michael Levy

정보에 대해서 감사드립니다. 이제 문법 검사기가 포함되어 있습니다. 나는 내가 만들고있는 오류를 찾으려고 머리를 부러 뜨렸다. 향후 릴리스에 대한 뉴스를 계속 주시해야합니까?
Switch Commerce

"향후 릴리스에 대한 뉴스를 어디에서 계속 주시해야합니까?" 좋은 질문입니다 !!! microsoft.com/speech/developers.aspx 가 오래되었습니다. 같은 음성 블로그 blogs.msdn.com/b/speakblogs.msdn.com/b/speech는 항상 최신 업데이트를하지 않아도됩니다. gotspeech.net 또는 gotuc.net 과 같은 관련 사이트를 사용해 볼 수 있습니다 . 그러나 보시다시피 최신 정보를 유지할 수있는 훌륭한 소스를 찾지 못했습니다.
Michael Levy

1
작성 당시 최신 버전은 버전 11입니다.- microsoft.com
en

문법 검사기는 위에서 언급 한 이후 BTW, 참조 msdn.microsoft.com/en-us/library/hh378407%28v=office.14%29.aspx 문법 도구 목록
조지 Birbilis

4

Microsoft가 Microsoft Speech Platform과 Windows SAPI의 차이점에 대해 설명하는 기사를 작성한 것으로 보입니다-https: //msdn.microsoft.com/en-us/library/jj127858.aspx . Kinect의 음성 인식 코드를 Microsoft.Speech에서 System.Speech로 변환하는 동안 제가 발견 한 차이점 은 전자가 tag-format = semantics / 1.0-을 사용하여 SGRS 문법을 지원한다는 것입니다 ( http://github.com/birbilis/Hotspotizer 참조 ). 리터럴, 후자는 그렇지 않으며 x를 out = "x"로 변경하여 semantics / 1.0으로 변환해야합니다. 태그에서


3
btw, 내 SpeechLib 코드가 유용하다는 것을 알 수 있습니다 ( SpeechLib.codeplex.com ). 여기서 System.Speech 참조를 제거하고 대신 Microsoft.Speech를 사용하고 코드에서 Microsoft.Speech를 사용하도록 적절한 조건부 컴파일 기호 (소스 참조)를 설정할 수 있습니다 (대부분 using 절에 영향을 미치고 나머지 코드는 동일 함).
George Birbilis

1
위의 주석에서 언급 한 SpeechLib는 github.com/zoomicon/SpeechLib로 이동했습니다 (Codeplex가 지금 아카이브 모드 로 고정 되었기 때문에)
George Birbilis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.