Freeswitch 에서 TTS 서비스를 제공하는 방법은 크게 두가지가 있다.
1. Dialplan 에서 해당 모듈을 직접 호출하는 방법.
2. Python, Lua 와 같은 스크립트 모듈에서 호출하는 방법
여기에서는 Python 스크립트 모듈에서 사용하는 방법을 기술한다.
mod_tts_commandline 을 사용하는 방법
Freeswitch 에서는 TTS 서비스를 위해 여러가지 모듈들을 제공하는데, 그 중 mod_tts_commandline 모듈은 서버에 설치되어 있는 TTS 프로그램과 연동하여 TTS 서비스를 제공하는 모듈이다 .
먼저 mod_tts_commandline 모듈을 설치하자.
cd /freeswitch/souce/directory
vi 편집기로 modules.conf 파일에서 asr_tts/mod_tts_commandline 부분을 주석 해제하자.
./configure && make && make install
설치가 끝나면, 해당 모듈이 자동 로드될 수 있도록 해주자.
vi /freeswitch/config_directory/conf/autoload_configs/modules.conf.xml
<load module=”mod_tts_commandline”/> 부분을 주석해제해주자.
tts_commandline.conf.xml 파일을 수정해야 한다. 여러가지 명령어 구문들이 가능한데.. 다음은 epseak 를 사용한 예제 명령어 구문이다.
<param name=”command” value=”echo ${text} | espeak –stdin –stdout -v default| sox -t wav – -r ${rate} ${file}”/>
기타 다른 예시 명령어 문구는 https://wiki.freeswitch.org/wiki/Mod_tts_commandline 에서 확인할 수 있다.
이후 Python 스크립트에서 다음과 같이 호출하여 사용하면 된다.
session.set_tts_params("espeak", "default"); session.speak("Hello, world!");
mod_shout 를 사용하는 방법
본래, mod_shout 는 외부 자원을 재생시키는 모듈이다. 하지만 이를 이용하면 외부(웹)에서 제공하는 TTS 서비스를 사용할 수 있다.
외부(웹)에서 TTS 를 제공하는 곳은 크게, Bing/Google 이 있는데, 여기서는 Google 을 기준으로 설명한다.
간단하다. mod_shout 설치 후, 다음과 같이 사용하면 된다.
session.streamFile("shout://translate.google.com/translate_tts?tl=en&q=Hello+world", "") # 혹은... recvDtmf=session.playAndGetDigits(1, 1, 1, 1, "", "shout://translate.google.com/translate_tts?tl=en&q=Hello+world", "", "", "", 0, "")
참조:
https://wiki.freeswitch.org/wiki/Mod_shout
https://wiki.freeswitch.org/wiki/Session_streamFile
https://wiki.freeswitch.org/wiki/Playing_recording_external_media
https://wiki.freeswitch.org/wiki/Mod_tts_commandline
http://wiki.freeswitch.org/wiki/Category:TTS
https://wiki.freeswitch.org/wiki/Mod_lua
Tags: TTS, freeswitch, mod_shout, mod_tts_commandline, python