吴伟贤のBlog

Feed Rss

转:Freeswitch with mod_flite / mod_perl (

11.27.2012, freeswitch, by .

转自: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這樣的系統結合起來…

评论已关闭。