Friday, May 22, 2009

perl로 만드는 win util / tts.pl

보물 하나더,

제 컴퓨터에는 Microsoft SAPI (Speach API)가 설치되어 있고, Voice가 영어, 일본어가 설치되어 있습니다. (중국어는 설치했다가 삭제했습니다만.)
주로 emeditor에서 파일 편집작업을 많이 하는데 emeditor에서 TTS speech하도록 한 매크로가 있습니다만, 음성 출력이 완료되기까지 Editing작업을 할 수 없어 만들어 놓고 그다지 사용하고 있지 않았습니다.
콘솔용으로 만들 수 없는 건 아니지만, 콘솔용으로 만들었을 때, 그 프로그램에 출력하는 문장을 전달하는 것이 좀 만족스럽지 않아서 보류하고 있었습니다만,
다음의 Perl Package의 예제를 발견했습니다.


use Win32::OLE qw( EVENTS );

our $myTTS = new Win32::OLE( "Sapi.SpVoice" );
get_text();

sub get_text{
$output_speech = ;
chomp($output_speech);
if($output_speech eq ":jp"){
$myTTS->{voice} = $myTTS->GetVoices("Name=VW Misaki", "Language=932")->Item(0);
}
elsif($output_speech eq ":en"){
$myTTS->{voice} = $myTTS->GetVoices("Name=VW Kate", "Language=409")->Item(0);
}
if($output_speech ne ":q"){
say_this();
get_text();
}
}

sub say_this{
$myTTS->Speak( "$output_speech" );
while( $myTTS->{Speaking} )
{
Win32::OLE->SpinMessageLoop();
Win32::Sleep( 100 );
}
}


Perl로 하면, speech할 본문을 URL에서 가져온다던지, 어제 발견한 MSNd로부터 입력받은 내용을 speech하게 한다던지, 훨씬 쓰임새가 있어보입니다.
다음에는 인터넷의 자동번역하는 페이지에 post해 일본어<->한글 하는 코드를 javascript로 만들어 둔 것이 있는데 perl로 옮겨두어야 겠습니다.

No comments: