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: , , , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.