본문 바로가기

Hacked Brain/embeddedland.net

MSRS VPL 을 이용한 TTSAgent 음성출력 예제




공개용 음성출력 및 음성인식기 TTSAgent.exe(한국어 및 기타 언어 지원) 및 SpeechRecognizer.exe를 이용하는 방법 중 첫번째인 VPL을 이용한 음성출력 예제입니다.
우선, TTSAgent를 이용하기 위해  SpeechRec&TTS.zip에 포함 된
SAPI4용 제어판인 SpchCpl.exe를 설치하고, 각 언어별 TTS 엔진을 http://www.microsoft.com/msagent/downloads/user.aspx
의 Text-to-speech engines:부분에서
L&HTTS3000 TTS engine - Korean(3MB exe)을 선택해 다운로드하고 설치하십시오.

이후 TTSAgent를 실행해 오른쪽 버튼을 클릭하여 Options을 선택하면

아래와 같은 화면이 표시됩니다.

사용자 삽입 이미지


위 화면에서 해당 언어(현재는 한국어)를 선택하고 [TTS TEST]버튼을 눌러 음성출력을 테스트 할 수 있습니다.
이 후 이전 게시물에서 설명드린것 처럼, WinMessage서비스를 비주얼 스투디오에서 열어 2byte 코드인 한글 지원을 위한 cbData cbData = lpData.Length*2 + 1; 로 바꾼 뒤 솔루션을 다시 빌드(F6)해 줍니다.
이제, VPL프로그램을 실행해 Services툴박스에서 Message를 입력해 WinMessage서비스를 아래의 그림과 같이 찾습니다.

사용자 삽입 이미지


찾아진 서비스 중 Windows Message Sample 을 선택합니다.
이후 string 타입의 Data Activity를 두개 만들고 하나에는 윈도우 메세지를 보낼 윈도우 어플리케이션 이름인 TTSAgent를 입력하고 다른 하나에는 출력할 음성텍스트를 입력합니다.
이 후 Join Activity를 이용해 두개를 연결한뒤 Windows Message 서비스로 SendMessageString으로 연결합니다. 연결된 다이어그램은 아래와 같습니다.

사용자 삽입 이미지


이후 Windows Message서비스에서 오른쪽 버튼을 클릭해 Data connections를 선택해 아래의 그림과 같이 Data를 연결합니다.

사용자 삽입 이미지

이제 F5를 눌러 완성된 예제를 실행해 보면, 윈도우 메시지를 이용해 원하는 음성텍스트를
TTSAgent로 보내 음성이 출력되는 것을 확인합니다. 다음 그림은 예제를 수행한 뒤 TTSAgent의 동작화면입니다.
 

사용자 삽입 이미지


이 예제에서는 Windows Message 서비스를 이용해 TTSAgent를 사용하는 방법을 보여주었습니다.
Windows Message서비스는 기존의 윈도우 애플리케이션으로 제작된 프로그램과 MSRS의 상호운용을 위해 제작된 유용한 서비스 입니다. Windows Message 서비스는 윈도우 애플리케이션에 윈도우 메지시를 보내고 받는 다양한 방법을 지원합니다. 여기에서는 WM_COPYDATA 메시지를 통해 string데이터를 TTSAgent로 보냈으며, 이 서비스를 이용해 WM_CLOSE 등 다양한 윈도우 메시지를 원하는 윈도우 애플리케이션으로 보내 여러 작업을 수행해 볼 수 있습니다. 다음 VPL 예제에서는 공개 음성인식기인 SpeechRecognizer.exe 로 부터 보내진 음성인식 결과 string을 Windows Message서비스를 이용해 WM_COPYDATA메시지로 받아 처리하는 방법을 보여줄 예정입니다.