IT이야기

C # 음성 인식

cyworld 2021. 4. 17. 10:33
반응형

C # 음성 인식-사용자가 말한 것입니까?


음성 인식 엔진 (내장 된 비스타 엔진 또는 타사 엔진)을 사용하는 응용 프로그램을 작성해야합니다.이 응용 프로그램은 단어 나 구를 표시하고 사용자가 읽을 때 (또는 그 근사치)를 인식 할 수 있습니다. ). 또한 운영 체제의 언어를 변경하지 않고 언어간에 빠르게 전환 할 수 있어야합니다.

사용자는 매우 짧은 기간 동안 시스템을 사용할 것입니다. 응용 프로그램은 사용자의 음성에 대해 인식 엔진을 먼저 훈련시킬 필요없이 작동해야합니다.

이 방법이 Windows XP 이하 버전의 Windows Vista에서 작동한다면 환상적 일 것입니다.

선택적으로 시스템은 사용자가 선택한 언어로 화면의 정보를 다시 사용자에게 읽을 수 있어야합니다. 사전 녹음 된 음성 해설을 사용하여이 사양을 해결할 수 있지만 선호하는 방법은 텍스트 음성 변환 엔진을 사용하는 것입니다.

누구든지 나를 위해 무언가를 추천 할 수 있습니까?


얼마 전 소프트웨어에서 Joel에게 비슷한 질문이 제기되었습니다. System.Speech.Recognition 네임 스페이스를 사용 하여이 작업을 수행 할 수 있습니다 . 프로젝트에 System.Speech (GAC에 있어야 함)를 추가합니다. 다음은 WinForms 앱의 샘플 코드입니다.

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();
    for (var i = 0; i <= 100; i++)
      c.Add(i.ToString());
    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }

이것은 1에서 100까지의 숫자를 인식하고 결과 숫자를 양식에 표시합니다. lblLetter라는 레이블이있는 양식이 필요합니다.

System.Speech는 사전 정의 된 단어 또는 구 목록에서만 작동합니다. 다재다능하거나 인식 품질면에서 정확히 NaturallySpeaking이 아닙니다. 그러나 사용자의 음성에 맞춰 훈련 할 필요는 없으며 사용자가 말할 수있는 몇 가지 다른 내용 만 있으면 합리적으로 잘 작동합니다. 그리고 그것은 무료입니다! (Visual Studio가있는 경우)

아주 짧은 문구를 사용하면 잘 작동하지 않습니다. 나는 내 아이가 알파벳 글자를 말하고 화면에서 볼 수 있도록 프로그램을 만들었지 만, 많은 글자가 비슷하게 들리기 때문에 (특히 4 살짜리 아이의 입에서) 잘 작동하지 않습니다.

더 유연한 옵션에 관해서는 SDK가있는 앞서 언급 한 NaturallySpeaking이 있습니다. 그러나 어떤 종류의 액세스 권한을 얻으려면 영업팀에 문의해야하며 가격 책정이 나열되어 있지 않으므로 "비용이 얼마입니까? 음, 얼마를 얻었습니까?"중 하나로 표시됩니다. 일종의 것들. "다운로드 및 사용"옵션이없는 것 같습니다. :(

텍스트 음성 변환의 경우 System.Speech.Synthesis 가이를 수행합니다. 음성 인식보다 훨씬 쉽습니다. 입력하고 Enter 키를 누르고 텍스트를 큰 소리로 읽을 수있는 작은 프로그램을 작성했습니다. 내 네 살짜리 아이는 그것에 매료됩니다. :) ( "아빠, 난 워봇에게 톡하고 싶어.")


[참고 : .NET 3.0에서 관리되는 음성 인식 API의 개발 책임자였습니다.]

System.Speech는 .NET 3.0의 일부이므로 Vista와 XP에서 모두 사용할 수 있습니다. Vista에서는 음성 인식 엔진이 OS에 미리 설치되어 있다는 추가적인 이점이 있습니다. XP에서 선택할 수있는 옵션은 다음과 같습니다. 매우 오래된 엔진과 함께 SAPI 5.1 SDK를 사용하고 (하지만 명령 및 제어 시나리오에 충분히 잘 작동 할 수 있음) 최신 버전의 인식기를 설치하는 Office 2003을 설치합니다. 몇 가지 SAPI 5 호환 음성 인식 엔진도 사용할 수 있습니다.

언어를 전환해야하는 경우 지원해야하는 언어에 대한 SR 엔진을 선택할 수있는 System.Speech.Recognition.SpeechRecognitionEngine 클래스를 사용하는 것이 좋습니다. 엔진은 지원하는 언어 집합으로 정의됩니다 (동일한 바이너리를 사용하고 추가 언어를 지원하기 위해 데이터 파일 만 교체 할 수 있음).

더 많은 정보가 필요하면 의견을 말하십시오.

필립


이 전에 'Speech'참조를 추가하십시오.

System.Speech

Kyralessa가 10 월 22 일에 게시 한 코드 예제는 저에게 적합하지 않지만 약간 수정 된 버전은 작동합니다. Choices 개체에 문자열을 추가 할 때 숫자가 아닌 전체 텍스트 영어 단어를 사용하십시오. MS 음성 인식 엔진이 자체적으로 숫자를 인식하지 못하는 것 같습니다.

이전 예제에 몇 가지 주석을 추가하여 이러한 수정 사항을 표시했습니다.

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();

    // Doens't work must use English words to add to Choices and
    // populate grammar.
    //
    //for (var i = 0; i <= 100; i++)
    //  c.Add(i.ToString());

    c.Add("one");
    c.Add("two");
    c.Add("three");
    c.Add("four");
    // etc...

    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }

엔진이 당신이 요청하는 것이라면 나는 찾은 것입니다 (조심하십시오, 나는 단지 목록에 있습니다, 나는 그들 중 어느 것도 시도하지 않았습니다).

Lumenvox 엔진

Microsoft 자체 SAPI SDK 도 있습니다. 텍스트 음성 변환에 대해서만 시도했지만 정의에 따라 :

SDK에는 무료 배포 가능한 TTS (텍스트 음성 변환) 엔진 (미국 영어 및 중국어 간체) 및 SR (음성 인식) 엔진 (미국 영어, 중국어 간체 및 일본어)도 포함되어 있습니다.


먼저 훈련이 필요하지 않으면 좋은 결과를 얻지 못할 것임을 경고하십시오. 음성 인식은 음성학의 통계적 응용으로, 신호에 너무 많은 변화가 있다는 사실에 대해 매우 솔직한 분야로 다른 사람이 말하는 것을 누구나 이해할 수있는 거의 기적입니다. 기성 음성 인식 엔진은보다 일반적인 영어 억양을 선호하는 경향이 있지만 약간 다른 경우에는 비참하게 실패합니다.

그것이 훈련이 중요한 이유입니다. 특히 문제 공간을 줄이면 쉽게 과적 합하여 잘 할 수 있습니다. 하지만 확장 가능한 기계 학습 솔루션을 만드시나요? 거기에는 항상 문지름이 있습니다.

즉, Sphinx-4를 고려하십시오. http://cmusphinx.sourceforge.net/sphinx4/ 에서 사용할 수있는 Java로 작성된 기성 솔루션입니다 .


.NET 3.5의 새로운 Speech 클래스 라이브러리를 확인하세요.

http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognizer.aspx

SR 및 TTS에 대한 일반 문서

http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx http://msdn.microsoft.com/en-us/library/system.speech.synthesis.aspx


Text to Speech는 Speech API에서 사용할 수 있습니다 . 개인적으로 나는 아마도 Vista가 필요하고 System.Speech.SpeechRecognitionSystem.Speech.Synthesis.TtsEngine에 대한 관리 인터페이스를 사용 하지만 실제로 XP 지원이 필요한 경우 관리되지 않는 API에 P / Invoke가 가능해야합니다.


이제 Office Communication Server 2007의 일부인 Microsoft Speech Server를 사용해보십시오 . 여기에는 Visual Studio와 통합되는 SR / TTS 엔진, C # API 및 도구가 포함되어 있습니다.


이것은 Vista 용 System.Speech API 사용에 대해 처음 논의한 MSDN 매거진의 기사입니다. 일부는 API가 베타 (기사 작성 당시)와 Vista 출시 사이에 변경 되었기 때문에 구식이지만, 여전히 제가 찾은 최고의 리소스 중 하나이며 System.Speech 네임 스페이스에 대한 좋은 소개를 다룹니다. . http://msdn.microsoft.com/en-us/magazine/cc163663.aspx 참조


Dragon Naturally Speaking SDK 는 살펴볼 가치가 있습니다. 이 프로젝트 는 흥미로워 보였습니다.

그래도 그들 중 하나와 놀 필요가 없습니다.


이 질문에는 이미 많은 좋은 답변이 있지만 2016 문서의 일부 정보로 Rob Segal과 Philipp Schmid가이 멋진 코드 예제를 가리키는 답변을 업데이트하는 것이 중요하다고 생각합니다.

https://msdn.microsoft.com/en-us/library/office/system.speech.recognition.speechrecognitionengine.aspx

Windows의 공유 인식기 (화면 중앙에 표시되는 작은 Windows 마이크)를 사용하지 않았으며 시각적 신호가 필요없는 멋진 앱 SpeechRecognitionEngine을 사용합니다. UI는 완전히 제어 할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/227140/c-sharp-speech-recognition-is-this-what-the-user-said

반응형