SpeechRecognitionEngine.SetInputToDefaultAudioDevice 호출 시 System.InvalidOperationException 예외 발생
(업데이트: 2023-03-30) 이 글에 대한 질문은 더 이상 받지 않습니다. (하시다 보면, 제가 왜 이 기술에 대해 흥미를 못 느끼는 지 아시게 될 것입니다. ^^ SpeechRecognitionEngine에 특별한 업데이트가 없는 한 다루지 않을 것입니다.)
C#으로 만드는 음성인식/TTS 프로그램
; https://www.sysnet.pe.kr/2/0/1228
위의 예제 코드에서, SetInputToDefaultAudioDevice 메서드 호출 시 예외가 발생할 수 있습니다.
using (SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine("SR_MS_ko-KR_TELE_11.0"))
{
Grammar grammar = new Grammar("computer.xml");
recognizer.LoadGrammar(grammar);
recognizer.SetInputToDefaultAudioDevice(); <== System.InvalidOperationException 예외 발생
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
recognizer.RecognizeAsync(RecognizeMode.Multiple);
while (true)
{
Console.ReadLine();
}
}
System.InvalidOperationException was unhandled
Message=Cannot find the requested data item, such as a data key or value.
Source=System.Speech
StackTrace:
at System.Speech.Recognition.RecognizerBase.SetInputToDefaultAudioDevice()
at ConsoleApplication1.Program.Main(String[] args) in D:\...\ConsoleApplication1\Program.cs:line 37
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
원인은, 가용한 Audio Recording Device가 없어서 그럴 수 있습니다. 예를 들어, 위의 예외가 발생했을 때 제 컴퓨터의 제어판에는 아래와 같이 모든 Recording Device가 비활성 상태였습니다.
이 중에서 하나라도 선택해서 다음과 같이 "Enable" 시켜주면,
이제부터는 SetInputToDefaultAudioDevice 메서드 호출 시에 예외가 발생하지 않습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]