Mod tts commandline
From FreeSWITCH Wiki
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

