[WinAPI] TTS(Text To Speech) 만들어보기 – ISpVoice

Windows에서는 문자를 음성으로 출력할 수 있는 TTS(Text To Speech) 기능을 제공합니다.
당연히 다른 상용화된 TTS 제품들과 비교하면 매우 낮은 수준이지만, 간단하게 코딩해서 사용할 수 있다는 것에 의미만 두면 되겠습니다.
한글 TTS는 Windows 8 이후부터 지원합니다.

필요 헤더 파일은 아래와 같습니다.

#include <sapi.h>

Visual C++에서 TTS는 COM을 사용하여 간단하게 만들 수 있습니다.
COM을 사용하고, 이후 사용하지 않을 때엔 초기화와 해제를 해줘야합니다.

CoInitialize( NULL ); // 생성

CoUninitialize(); // 해제

생성과 해제 사이에 CComPtr<ISpVoice>를 선언하여 객체를 선언합니다.

전체 코드는 아래와 같습니다.

CoInitialize( NULL );

CComPtr<ISpVoice> ptr_tts; 
// 객체 생성
HRESULT hr = ptr_tts.CoCreateInstance( CLSID_SpVoice );
if ( SUCCEEDED( hr ) )
{
	// 텍스트 음성출력
	ptr_tts->Speak( _T( "안녕하세요?" ), SPF_DEFAULT, 0 );
	// 해제
	ptr_tts.Release();
}

CoUninitialize();

관련 MSDN 링크도 참고바랍니다.