Mod tts commandline

From FreeSWITCH Wiki

Revision as of 14:25, 3 May 2011 by Garmt (Talk | contribs)
Jump to: navigation, search

Run a command line and play the output file.

It is mainly for testing purpose. It may not fit for extensive use (but it may). Once you have chosen your TTS engine, write a native module!

Contents

Installing mod_tts_commandline

  • In modules.conf, add asr_tts/mod_tts_commandline.

Linux:

  • Run make, make install.

Windows:

  • copy the msvc project from freeswitch-contrib in grmt\mod_tts_commandline for windows
  • add project to Freeswitch.2010.sln and build it (sorry, I didn't test MSVC 2008)

Configuring mod_tts_commandline

  • In freeswitch/conf/autoload_configs/modules.conf.xml, uncomment <load module="mod_tts_commandline"/>.
  • Edit conf/autoload_configs/tts_commandline.conf.xml.
  • Reload configuration by reloadxml (or restarting FreeSWITCH)
  • Add tts_commandline to dialplan (or phrase, etc.) like this:
<action application="speak" data="tts_commandline|pico|This is an example of using tts_commandline"/>

Example commands

Using festival's text2wave:

echo ${text} | text2wave -f ${rate} > ${file}

Using festival's server client:

echo ${text} | festival_client --server xxx.xxx.xxx.xxx --otype riff --ttw --output ${file}

(may be needed ajust festival's default sample rate on server)

Using Cepstral's swift:

swift -n ${voice} ${text}  -o ${file}

Using espeak (using sox to adjust sample rate):

echo ${text} | espeak --stdin -v ${voice} --stdout | sox -t wav - -r ${rate} ${file}

Using espeak + mbrola :

echo ${text} | espeak --stdin -v mb/mb-fr4 | mbrola -e /usr/share/mbrola/voices/fr4 - -.au | sox -t au - -r ${rate} ${file}

Using lliaphon + mbrola (French voice fr4) (NB it does not work for me):

echo ${text} | (lliaphon 2>/dev/null) | mbrola -e -f 1.0 -t 0.6 -l 8000 -I /usr/local/share/lliaphon/initfile.lia /usr/share/mbrola/voices/fr4 - ${file}

Using svox pico (from the Android project - supports it-IT, fr-FR, es-ES, de-DE, en-US and en-GB languages:

pico2wave --lang=fr-FR --wave=/tmp/$$.wav ${text} && sox /tmp/$$.wav -r ${rate} ${file} && rm /tmp/$$.wav

(You should apply patches from here (see alsoissue 4362 and issue 4363)

Write your own here...

Notes on svox pico

Windows:

  • build from MSVC 2010 solution file freeswitch-contrib in grmt\svox pico\svoxpico for windows (again sorry I didn't do MSVC 2008)

Linux (at least tested on x64 centos - includes fixes from below and even more fixes from debian-sid and some more fixes to make it compatible with MSVC 2010):

  • freeswitch-contrib in grmt/svox\ pico/svox/pico
  • sh ./autogen.sh
  • ./configure
  • make && make install

or alternatively (although this didn't work without changes on 29-apr-2011):

Here is a sample of cmd that work on centos 5 64bit (This code includes a fix so it works ok on a 64bit system)

mkdir ~/src
cd ~/src
git clone git://git.debian.org/collab-maint/svox.git svox-git
cd svox-git
git branch -a
git checkout -f origin/debian-sid
cd pico
base64 -d -i << EOF | patch -p2
ZGlmZiAtLWdpdCBhL3BpY28vTWFrZWZpbGUuYW0gYi9waWNvL01ha2VmaWxlLmFtCmluZGV4IGEx
OWM0MmEuLmFmZWI0YmUgMTAwNjQ0Ci0tLSBhL3BpY28vTWFrZWZpbGUuYW0KKysrIGIvcGljby9N
YWtlZmlsZS5hbQpAQCAtODMsNiArODMsNiBAQCBiaW5fUFJPR1JBTVMgPSBwaWNvMndhdmUKIHBp
Y28yd2F2ZV9TT1VSQ0VTID0gXAogCWJpbi9waWNvMndhdmUuYwogcGljbzJ3YXZlX0xEQUREID0g
XAotCWxpYnR0c3BpY28ubGEKKwlsaWJ0dHNwaWNvLmxhIC1scG9wdCAtbG0KIHBpY28yd2F2ZV9D
RkxBR1MgPSAtV2FsbCAtRHBpY29sYW5nZGlyPVwiJChwaWNvbGFuZ2RpcilcIiAtSSBsaWIgLWxt
IC1scG9wdAogCmRpZmYgLS1naXQgYS9waWNvL2xpYi9waWNvYXBpLmMgYi9waWNvL2xpYi9waWNv
YXBpLmMKaW5kZXggYmU2ZDFhMi4uZDA5OWJkYSAxMDA2NDQKLS0tIGEvcGljby9saWIvcGljb2Fw
aS5jCisrKyBiL3BpY28vbGliL3BpY29hcGkuYwpAQCAtNDEsMTAgKzQxLDEwIEBAIGV4dGVybiAi
QyIgewogI2RlZmluZSBNQUdJQ19NQVNLIDB4NTA2OTYzNkYgIC8qIFBpY28gKi8KIAogI2RlZmlu
ZSBTRVRfTUFHSUNfTlVNQkVSKHN5cykgXAotICAgIChzeXMpLT5tYWdpYyA9ICgocGljb29zX3Vp
bnQzMikgKHN5cykpIF4gTUFHSUNfTUFTSworICAgIChzeXMpLT5tYWdpYyA9ICgocGljb29zX3Vp
bnRwdHJfdCkgKHN5cykpIF4gTUFHSUNfTUFTSwogCiAjZGVmaW5lIENIRUNLX01BR0lDX05VTUJF
UihzeXMpIFwKLSAgICAoKHN5cyktPm1hZ2ljID09ICgoKHBpY29vc191aW50MzIpIChzeXMpKSBe
IE1BR0lDX01BU0spKQorICAgICgoc3lzKS0+bWFnaWMgPT0gKCgocGljb29zX3VpbnRwdHJfdCkg
KHN5cykpIF4gTUFHSUNfTUFTSykpCiAKIAogCmRpZmYgLS1naXQgYS9waWNvL2xpYi9waWNvYXBp
LmggYi9waWNvL2xpYi9waWNvYXBpLmgKaW5kZXggYWE2MDM1OC4uYTBmZDVjMyAxMDA2NDQKLS0t
IGEvcGljby9saWIvcGljb2FwaS5oCisrKyBiL3BpY28vbGliL3BpY29hcGkuaApAQCAtMTc2LDcg
KzE3Niw2IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IHBpY29fVWludDMyOwogI2Vycm9yICJwbGF0
Zm9ybSBub3Qgc3VwcG9ydGVkIgogI2VuZGlmCiAKLQogLyogQ2hhciBkYXRhIHR5cGUgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVk
ZWYgdW5zaWduZWQgY2hhciBwaWNvX0NoYXI7CmRpZmYgLS1naXQgYS9waWNvL2xpYi9waWNvYXBp
ZC5oIGIvcGljby9saWIvcGljb2FwaWQuaAppbmRleCBlZjYyNzAxLi5iMzhiYzg2IDEwMDY0NAot
LS0gYS9waWNvL2xpYi9waWNvYXBpZC5oCisrKyBiL3BpY28vbGliL3BpY29hcGlkLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgZXh0ZXJuICJDIiB7CiAKIC8qIFBpY28gc3lzdGVtIGRlc2NyaXB0b3IgKi8K
IHR5cGVkZWYgc3RydWN0IHBpY29fc3lzdGVtIHsKLSAgICBwaWNvb3NfdWludDMyIG1hZ2ljOyAg
ICAgICAgLyogbWFnaWMgbnVtYmVyIHVzZWQgdG8gdmFsaWRhdGUgaGFuZGxlcyAqLworICAgIHBp
Y29vc191aW50cHRyX3QgbWFnaWM7ICAgICAgICAvKiBtYWdpYyBudW1iZXIgdXNlZCB0byB2YWxp
ZGF0ZSBoYW5kbGVzICovCiAgICAgcGljb29zX0NvbW1vbiBjb21tb247CiAgICAgcGljb3JzcmNf
UmVzb3VyY2VNYW5hZ2VyIHJtOwogICAgIHBpY29jdHJsX0VuZ2luZSBlbmdpbmU7CmRpZmYgLS1n
aXQgYS9waWNvL2xpYi9waWNvY3RybC5jIGIvcGljby9saWIvcGljb2N0cmwuYwppbmRleCAzYzY1
ODMxLi40YjE5NDdmIDEwMDY0NAotLS0gYS9waWNvL2xpYi9waWNvY3RybC5jCisrKyBiL3BpY28v
bGliL3BpY29jdHJsLmMKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIHBpY29jdHJsX2Rpc3Bvc2VD
b250cm9sKHBpY29vc19NZW1vcnlNYW5hZ2VyIG1tLAogICogIHNob3J0Y3V0ICAgICA6IGVuZwog
ICovCiB0eXBlZGVmIHN0cnVjdCBwaWNvY3RybF9lbmdpbmUgewotICAgIHBpY29vc191aW50MzIg
bWFnaWM7ICAgICAgICAvKiBtYWdpYyBudW1iZXIgdXNlZCB0byB2YWxpZGF0ZSBoYW5kbGVzICov
CisgICAgcGljb29zX3VpbnRwdHJfdCBtYWdpYzsgICAgICAgIC8qIG1hZ2ljIG51bWJlciB1c2Vk
IHRvIHZhbGlkYXRlIGhhbmRsZXMgKi8KICAgICB2b2lkICpyYXdfbWVtOwogICAgIHBpY29vc19D
b21tb24gY29tbW9uOwogICAgIHBpY29yc3JjX1ZvaWNlIHZvaWNlOwpAQCAtNTA4LDEwICs1MDgs
MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgcGljb2N0cmxfZW5naW5lIHsKICNkZWZpbmUgTUFHSUNfTUFT
SyAweDUwNjk0MzZGICAvKiBQaUNvICovCiAKICNkZWZpbmUgU0VUX01BR0lDX05VTUJFUihlbmcp
IFwKLSAgICAoZW5nKS0+bWFnaWMgPSAoKHBpY29vc191aW50MzIpIChlbmcpKSBeIE1BR0lDX01B
U0sKKyAgICAoZW5nKS0+bWFnaWMgPSAoKHBpY29vc191aW50cHRyX3QpIChlbmcpKSBeIE1BR0lD
X01BU0sKIAogI2RlZmluZSBDSEVDS19NQUdJQ19OVU1CRVIoZW5nKSBcCi0gICAgKChlbmcpLT5t
YWdpYyA9PSAoKChwaWNvb3NfdWludDMyKSAoZW5nKSkgXiBNQUdJQ19NQVNLKSkKKyAgICAoKGVu
ZyktPm1hZ2ljID09ICgoKHBpY29vc191aW50cHRyX3QpIChlbmcpKSBeIE1BR0lDX01BU0spKQog
CiAvKioKICAqIHBlcmZvcm1zIGFuIGVuZ2luZSByZXNldApkaWZmIC0tZ2l0IGEvcGljby9saWIv
cGljb29zLmggYi9waWNvL2xpYi9waWNvb3MuaAppbmRleCA4NTllMTc2Li5mZTVhZmJhIDEwMDY0
NAotLS0gYS9waWNvL2xpYi9waWNvb3MuaAorKysgYi9waWNvL2xpYi9waWNvb3MuaApAQCAtNzAs
NiArNzAsOCBAQCB0eXBlZGVmIHBpY29wYWxfdWludDggICBwaWNvb3NfYm9vbDsKIHR5cGVkZWYg
cGljb3BhbF9vYmpzaXplX3QgcGljb29zX29ianNpemVfdDsKIHR5cGVkZWYgcGljb3BhbF9wdHJk
aWZmX3QgcGljb29zX3B0cmRpZmZfdDsKIAordHlwZWRlZiBwaWNvcGFsX3VpbnRwdHJfdCBwaWNv
b3NfdWludHB0cl90OworCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwogLyogZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCmRpZmYgLS1naXQgYS9waWNvL2xpYi9waWNvcGFsLmggYi9waWNvL2xpYi9waWNv
cGFsLmgKaW5kZXggYWNmYzhlMC4uMmU2NDQyNyAxMDA2NDQKLS0tIGEvcGljby9saWIvcGljb3Bh
bC5oCisrKyBiL3BpY28vbGliL3BpY29wYWwuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
PHN0ZGRlZi5oPgogI2luY2x1ZGUgInBpY29wbHRmLmgiCiAjaW5jbHVkZSAicGljb2RlZnMuaCIK
KyNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIg
ewpAQCAtMTE3LDYgKzExOCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgIHBpY29wYWxfdWNo
YXI7CiAKIHR5cGVkZWYgc2l6ZV90ICAgIHBpY29wYWxfb2Jqc2l6ZV90OwogdHlwZWRlZiBwdHJk
aWZmX3QgcGljb3BhbF9wdHJkaWZmX3Q7Cit0eXBlZGVmIHVpbnRwdHJfdCBwaWNvcGFsX3VpbnRw
dHJfdDsKIAogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KIC8qIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCmRpZmYgLS1naXQgYS9waWNvL2xpYi9waWNvcHIuYyBiL3BpY28vbGliL3BpY29wci5jCmlu
ZGV4IDBkNjE1ZDkuLmMwMWNmZGUgMTAwNjQ0Ci0tLSBhL3BpY28vbGliL3BpY29wci5jCisrKyBi
L3BpY28vbGliL3BpY29wci5jCkBAIC0zMjA5LDExICszMjA5LDExIEBAIHBpY29fc3RhdHVzX3Qg
cHJSZXNldChyZWdpc3RlciBwaWNvZGF0YV9Qcm9jZXNzaW5nVW5pdCB0aGlzLCBwaWNvb3NfaW50
MzIgcmVzZXRNCiAgICAgcHItPmFjdEN0eENoYW5nZWQgPSBGQUxTRTsKICAgICBwci0+cHJvZExp
c3QgPSBOVUxMOwogCi0gICAgaWYgKCgocGljb29zX3VpbnQzMilwci0+cHJfV29ya01lbSAlIFBJ
Q09PU19BTElHTl9TSVpFKSA9PSAwKSB7CisgICAgaWYgKCgocGljb29zX3VpbnRwdHJfdClwci0+
cHJfV29ya01lbSAlIFBJQ09PU19BTElHTl9TSVpFKSA9PSAwKSB7CiAgICAgICAgIHByLT53b3Jr
TWVtVG9wID0gMDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHByLT53b3JrTWVtVG9wID0g
UElDT09TX0FMSUdOX1NJWkUgLSAoKHBpY29vc191aW50MzIpcHItPnByX1dvcmtNZW0gJSBQSUNP
T1NfQUxJR05fU0laRSk7CisgICAgICAgIHByLT53b3JrTWVtVG9wID0gUElDT09TX0FMSUdOX1NJ
WkUgLSAoKHBpY29vc191aW50cHRyX3QpcHItPnByX1dvcmtNZW0gJSBQSUNPT1NfQUxJR05fU0la
RSk7CiAgICAgfQogICAgIHByLT5tYXhXb3JrTWVtVG9wPTA7CiAgICAgcHItPmR5bk1lbVNpemU9
MDsKZGlmZiAtLWdpdCBhL3BpY28vbGliL3BpY29yc3JjLmMgYi9waWNvL2xpYi9waWNvcnNyYy5j
CmluZGV4IGQ2ZTFlNTEuLjY4MGI4MzggMTAwNjQ0Ci0tLSBhL3BpY28vbGliL3BpY29yc3JjLmMK
KysrIGIvcGljby9saWIvcGljb3JzcmMuYwpAQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gIkMiIHsK
ICAqCiAgKi8KIHR5cGVkZWYgc3RydWN0IHBpY29yc3JjX3Jlc291cmNlIHsKLSAgICBwaWNvb3Nf
dWludDMyIG1hZ2ljOyAgLyogbWFnaWMgbnVtYmVyIHVzZWQgdG8gdmFsaWRhdGUgaGFuZGxlcyAq
LworICAgIHBpY29vc191aW50cHRyX3QgbWFnaWM7ICAvKiBtYWdpYyBudW1iZXIgdXNlZCB0byB2
YWxpZGF0ZSBoYW5kbGVzICovCiAgICAgLyogbmV4dCBjb25uZWN0cyBhbGwgYWN0aXZlIHJlc291
cmNlcyBvZiBhIHJlc291cmNlIG1hbmFnZXIgYW5kIHRoZSBnYXJiYWdlZCByZXNvdXJjZXMgb2Yg
dGhlIG1hbmFnZXIncyBmcmVlIGxpc3QgKi8KICAgICBwaWNvcnNyY19SZXNvdXJjZSBuZXh0Owog
ICAgIHBpY29yc3JjX3Jlc291cmNlX3R5cGVfdCB0eXBlOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHR5
cGVkZWYgc3RydWN0IHBpY29yc3JjX3Jlc291cmNlIHsKICNkZWZpbmUgTUFHSUNfTUFTSyAweDcw
NDk2MzRGICAvKiBwSWNPICovCiAKICNkZWZpbmUgU0VUX01BR0lDX05VTUJFUihyZXMpIFwKLSAg
ICAocmVzKS0+bWFnaWMgPSAoKHBpY29vc191aW50MzIpIChyZXMpKSBeIE1BR0lDX01BU0sKKyAg
ICAocmVzKS0+bWFnaWMgPSAoKHBpY29vc191aW50cHRyX3QpIChyZXMpKSBeIE1BR0lDX01BU0sK
IAogI2RlZmluZSBDSEVDS19NQUdJQ19OVU1CRVIocmVzKSBcCi0gICAgKChyZXMpLT5tYWdpYyA9
PSAoKChwaWNvb3NfdWludDMyKSAocmVzKSkgXiBNQUdJQ19NQVNLKSkKKyAgICAoKHJlcyktPm1h
Z2ljID09ICgoKHBpY29vc191aW50cHRyX3QpIChyZXMpKSBeIE1BR0lDX01BU0spKQogCiAKIApA
QCAtNjAzLDcgKzYwMyw3IEBAIHBpY29fc3RhdHVzX3QgcGljb3JzcmNfbG9hZFJlc291cmNlKHBp
Y29yc3JjX1Jlc291cmNlTWFuYWdlciB0aGlzLAogICAgICAgICAgICAgc3RhdHVzID0gKE5VTEwg
PT0gcmVzLT5yYXdfbWVtKSA/IFBJQ09fRVhDX09VVF9PRl9NRU0gOiBQSUNPX09LOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChQSUNPX09LID09IHN0YXR1cykgewotICAgICAgICAgICAgcmVtID0g
KHBpY29vc191aW50MzIpIHJlcy0+cmF3X21lbSAlIFBJQ09PU19BTElHTl9TSVpFOworICAgICAg
ICAgICAgcmVtID0gKHBpY29vc191aW50cHRyX3QpIHJlcy0+cmF3X21lbSAlIFBJQ09PU19BTElH
Tl9TSVpFOwogICAgICAgICAgICAgaWYgKHJlbSA+IDApIHsKICAgICAgICAgICAgICAgICByZXMt
PnN0YXJ0ID0gcmVzLT5yYXdfbWVtICsgKFBJQ09PU19BTElHTl9TSVpFIC0gcmVtKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Cg==
EOF
./autogen.sh
mkdir m4
./configure --prefix=/opt/svox-pico/
make install
Personal tools

Community
Support FreeSWITCH