[Freeswitch] TTS on python

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

[CTI] TTS Service

TTS 란 Text To Speech 의 약자로서, 글자를 소리내어 읽어주는 서비스/프로그램 을 말한다.
흔히 IVR 같은 서비스에서 사용하는데, IVR 서비스 중에서도 정적으로 고정된 멘트(안녕하세요, *** 서비스에 오신것을 환영합니다)가 아닌 동적인 데이터(이름, 예금 잔고, 신용등급 등)를 나타낼 때 사용한다.

CTI 에서 TTS 기능을 사용하는 방법에는 크게 두가지가 있다.

1. 서버 내부에 설치된 TTS 프로그램 기능을 이용하는 방법.
2. 서버 외부에서 제공하는 TTS 서비스를 이용하는 방법.

 

– 서버 내부에 설치된 TTS 프로그램 기능을 이용하는 방법.

리눅스에서 사용가능한 Espeak 같은 프로그램을 예로 들 수 있다. 혹은 상용의 TTS 프로그램도 이에 해당된다.
이 방법을 사용하게 되면 고객에게 양질의 음성 서비스를 제공할 수 있는 장점이 있지만, 직접 서버 내에서 Text 를 음성으로 변조하는 과정을 거쳐야 하기 때문에 Computing Power 가 요구되는 단점도 있다.

 

– 서버 외부에서 제공하는 TTS 서비스를 이용하는 방법

대표적인 예로 구글의 Translate 서비스를 생각할 수 있다. Translate 서비스의 한 부분으로 입력한 문자열을 음성으로 들려주는 서비스이다.
이 방법을 사용하면 서버내의 Computing Power 를 사용하지 않고도 TTS 서비스를 제공할 수 있지만, 고객 데이터가 외부로 노출된다는 점, 트래픽 제한에 걸릴 수도 있다는 점 등의 단점이 있다.