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

.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의 차이점은 무엇입니까?



답변

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

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

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

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


답변

나는 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에 설명되어 있습니다 .


답변

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

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


답변

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으로 변환해야합니다. 태그에서


답변