转自:http://blog.sina.com.cn/s/blog_971194760100yde6.html
mod_say只能唸出數字,所以前幾天試了一下mod_flite,感覺還不錯,Flite是TTS(Text To Speech)的一種,有四種發音,目前Freeswitch提供的只有英文發音,如果需要中文的,可能要花點工夫。
slt (female voice) <– 有氣無力,聽起來要死不活;
rms (male voice) <– 像國中時代用的電子字典;
awb (male voice) <– 這個發音稍微清楚點,所以我用這個;
kal (male voice) <– 語音速度太快,用不了(沒找到可以控制語音速度的參數)。
按Wiki上的說明,可以在Dial Plan的分機中引用設定tts為flite,然後再指定發音,如Kal
<extension name=”flite”>
<condition field=”destination_number” expression=”^9886$”>
<action application=”set” data=”tts_engine=flite”/>
<action application=”set” data=”tts_voice=awb”/>
<action application=”speak” data=”This is flite on FreeSWITCH”/>
</condition>
</extension>
但在實際的應用當中,我們可以用Script來讓它活用起來,Script可以是Javascript,也可以是官方推薦的Lua,但個人習慣且較熟悉Perl,所以用Perl來寫一段身份驗證代碼:
#!/usr/bin/perl -w
our $session;
@white_list = (“addison”, “1001”, “1003”, “linsane”);
$user_name = $session->getVariable(“caller_id_number”);
$session->set_tts_parms(flite, awb);
if (grep(/^$user_name$/,@white_list))
{
$session->speak(“Welcome! $user_name. This is flite on FreeSWITCH”);
}
else
{
$session->hangup;
}
return 1;
這時候就可以在需要用到的地方加入
<action application=”perl” data=”/scripts/flite.pl”/>
說到活用? 這個能做什麼呢?
1.寫一個自動抓取新聞的程式,在每天早上上班途中(如果是開車),讓它在週一到週五8:30AM自動呼叫你的手機,然後把新聞唸給你聽,當然你最好跟我一樣已經把GSM或CDMA語音卡整合起來,並且確定已申請過網內互打免費的套餐;
2.整合到Nagios網路監控系統,讓你的Nagios不僅能夠發簡訊,也可以用電話呼叫你,並且依照自己設定好的語句,把故障的機器用語音報給你(開車看簡訊還是相對危險的);
3.其它可以想到需要電話語音的,都可以利用TTS這樣的系統結合起來…