본문 바로가기

Hacked Brain/embeddedland.net

MSRS VPL 및 C# 에서 이용가능한 공개 한글TTS및 음성인식기

출처 : http://cafe.naver.com/msrskorea archegos





TTSAgent.exe(한국어 및 기타 언어 지원) 및 SpeechRecognizer.exe 입니다.
MSRS에서 WinMessage 서비스를 이용해 위의 한글TTS와 음성인식기를 사용할 수 있습니다.
TTSAgent 는 SAPI4를 지원합니다.
실행하시기 전에 SpeechRec&TTS.ZIP에 포함 된 SpchCpl.exe를

설치하고, 각 언어별 TTS 엔진은

http://www.microsoft.com/msagent/downloads/user.aspx

에서 다운로드해서 설치하시면 됩니다.

TTSAgent를 실행하고 나타나는 에이전트에 마우스 오른쪽 버튼을
클릭하시면 옵션을 조정하고 각 TTS엔진을 테스트할 수 있습니다.
WinMessage 서비스는 윈도우 메시지를 이용해 기존 윈도우 응용 프로그램과 MSRS 서비스 사이의 데이터 전송을 지원하는 서비스입니다.
MSRS에 설치된 현재 WinMessage예제는 영어를 지원하며 2byte코드인 한글을 지원하기 위해서

C:\Microsoft Robotics Studio (1.5)\samples\Misc\WinMessage
 
에 있는 예제의 솔루션 파일인 WinMessage.sln를 Visual Studio 에서 열어 다음 코드의 cbData = lpData.Length + 1;을 찾아 cbData = lpData.Length*2 + 1;로 아래와 같이 변경합니다.


    /// <summary>
    /// Structure required to be sent with the WM_COPYDATA message
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    class CopyDataStruct
    {
        public int dwData = 1;//32 bit int to passed.
        public int cbData = 0;//length of string. Will be one greater because of null termination.
        public string lpData;//string to be passed.

        public CopyDataStruct()
        { }
        public CopyDataStruct(string Data)
        {
            lpData = Data + "\0";   //add null termination
            //cbData = lpData.Length + 1; //기존 cdData          
            cbData = lpData.Length*2 + 1; //2byte 코드인 한글 지원을 위한 cbData
        }
    }


Follower - WinMessage음성출력 및 인식버전.zip은

MSRS의 Follower 샘플 서비스를 WinMessage서비스를  통해

TTSAgent와 SpeechRecognizer를 사용하도록 변경된 예제입니다.