FreeSWITCH 支持調用第三方TTS命令,自己已經搭好了框架,只須要配置便可用。session
下面寫一下步驟,以避免忘記,也但願給你帶來幫助。app
第一步:編譯模塊mod_tts_commandline,並加載。框架
編輯源碼下 modules.conf 文件,把 asr_tts/mod_tts_commandline 這一行的註釋去掉。測試
而後 ./configure, make, makeinstalllua
重啓FreeSWITCHspa
在CLI界面看到code
freeswitch@internal> module_exists mod_tts_commandline true
表示模塊 mod_tts_commandline 加載成功。xml
第二步:修改配置文件blog
修改 freeswitch/conf/autoload_configs/tts_commandline.conf.xml ip
1 <configuration name="tts_commandline.conf" description="TextToSpeech Commandline configuration"> 2 <settings> 3 <!-- 4 Some variables will be replaced : 5 ${text}: input text (quoted) 6 ${rate}: sample rate (example: 8000) 7 ${voice}: voice_name passed to TTS(quoted) 8 ${file}: output file (quoted, including .wav extension) 9 10 Example commands can be found at: 11 http://wiki.freeswitch.org/wiki/Mod_tts_commandline#Example_commands 12 --> 13 <!--param name="command" value="echo ${text} | text2wave -f ${rate} > ${file}"/--> 14 <param name="command" value="sh /tmp/tts_test.sh ${text} ${file}"/> ----這一行是我加的,/tmp/tts_test.sh是轉換的腳本
15 </settings> 16 </configuration>
<param name="command" value="sh /tmp/tts_test.sh ${text} ${file}"/>
----這一行是我加的,/tmp/tts_test.sh是轉換的腳本,核心的TTS命令就寫在這個腳本里面。具體的命令就不寫了,能夠支持科大,百度等第三方公司。
2個參數
${text} --- 要轉換的文字,在後面的撥號方案中賦值
${file} --- 轉換後的wav文件名字,全路徑,帶wav後綴,在後面的撥號方案中賦值
第三步:修改撥號方案腳本。
假如你的撥號方案會觸發到lua腳本,而後在lua腳本中加入下面幾行,進行測試:
1 session:answer(); 2 session:setVariable("tts_engine", "tts_commandline"); 3 session:setVariable("tts_voice", "girl"); 4 session:setVariable("file", "/tmp/justtts.wav"); 5 session:execute("speak", "歡迎您使用光大銀行電子銀行業務,查詢餘額請按一,修改密碼請按二");
上面的app都比較清晰,不作過多解釋。
第四步:打電話測試
當你聽到聲音 "歡迎您使用光大銀行電子銀行業務,查詢餘額請按一,修改密碼請按二" 時,大功告成!
以上只是我的實現,可能還有其餘更好的方法,歡迎在下面留言,謝謝。