Am I to assume that voicemail requires Cepstral? I setup a dialplan to test and I get the following debug when the call rolls to voicemail: 2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:252 switch_ivr_phrase_macro() Handle speak-text:[4211 is not available.] (en:en) 2007-12-04 21:33:33 [ERR] switch_core_speech.c:60 switch_core_speech_open() invalid speech module [cepstral]! 2007-12-04 21:33:33 [ERR] switch_ivr_play_say.c:1532 switch_ivr_speak_text() Invalid TTS module! 2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:117 switch_ivr_phrase_macro() No language specified - Using [en] 2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:252 switch_ivr_phrase_macro() Handle speak-text:[goodbye.] (en:en) 2007-12-04 21:33:33 [ERR] switch_core_speech.c:60 switch_core_speech_open() invalid speech module [cepstral]! 2007-12-04 21:33:33 [ERR] switch_ivr_play_say.c:1532 switch_ivr_speak_text() Invalid TTS module! I uncommented the cepstral line in modules.conf.xml and I get the following: 2007-12-04 21:52:08 [CRIT] switch_loadable_module.c:726 switch_loadable_module_load_file() Error Loading module /usr/local/freeswitch/mod/mod_cepstral.so **/usr/local/freeswitch/mod/mod_cepstral.so: cannot open shared object file: No such file or directory** So I am guessing that Cepstral isn't included as part of freeswitch and I have to get it elsewhere and compile it to actually use voicemail. Is that correct? Peder
You assume wrong. It can and does work with sound files. We'll have these sound files up for you to download shortly. You have to change our includes slightly to use the sound file versions vs the tts version. You can buy cepstral ports at http://www.cepstral.com /b On Dec 4, 2007, at 9:59 PM, Peder @ NetworkOblivion wrote:
Am I to assume that voicemail requires Cepstral? I setup a dialplan to test and I get the following debug when the call rolls to voicemail:
2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:252 switch_ivr_phrase_macro() Handle speak-text:[4211 is not available.] (en:en) 2007-12-04 21:33:33 [ERR] switch_core_speech.c:60 switch_core_speech_open() invalid speech module [cepstral]! 2007-12-04 21:33:33 [ERR] switch_ivr_play_say.c:1532 switch_ivr_speak_text() Invalid TTS module! 2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:117 switch_ivr_phrase_macro() No language specified - Using [en] 2007-12-04 21:33:33 [DEBUG] switch_ivr_play_say.c:252 switch_ivr_phrase_macro() Handle speak-text:[goodbye.] (en:en) 2007-12-04 21:33:33 [ERR] switch_core_speech.c:60 switch_core_speech_open() invalid speech module [cepstral]! 2007-12-04 21:33:33 [ERR] switch_ivr_play_say.c:1532 switch_ivr_speak_text() Invalid TTS module!
I uncommented the cepstral line in modules.conf.xml and I get the following:
2007-12-04 21:52:08 [CRIT] switch_loadable_module.c:726 switch_loadable_module_load_file() Error Loading module /usr/local/freeswitch/mod/mod_cepstral.so **/usr/local/freeswitch/mod/mod_cepstral.so: cannot open shared object file: No such file or directory**
So I am guessing that Cepstral isn't included as part of freeswitch and I have to get it elsewhere and compile it to actually use voicemail. Is that correct?
Peder
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
On Dec 4, 2007, at 9:59 PM, Peder @ NetworkOblivion wrote:
Am I to assume that voicemail requires Cepstral? I setup a dialplan to test and I get the following debug when the call rolls to voicemail:
There seems to be some confusion about what is going on, so I will try to explain on the list for everyone. :)
The phrase subsystem allows you to define whether or not you will use sound files, TTS or whatever. This is defined in freeswitch.xml in the section 'phrases'. You can define the language, which can be changed via a channel variable for a particular call, you can define what the prompts actually are, etc. This offers a great deal of flexibility, and allows proper usage of different languages since not all will say things the same way. Examples are dates/times (Dutch will use a 24 hour clock, and 'half elf' means 11:30a in English/American for example). Other things can be done properly, for example "You have 2 messages" in Japnaese cannot use 'ni' for 2 since that would be like saying 'two-cycle' in English so you can have proper language sensitive prompts for different languages and define what is said via a combination of a module (which provides the logic for how to say numbers, counts, currency, dates etc) and XML which defines the actual phrases to be used. You are free to use any sound files that you want, subject to the licensing terms of those sound files. They can be in any format that FS understands (based on a format module that provides the capability to read and understand a given file format). There are a couple of different modules that provide native (no transcoding), various common formats and mp3. In addition other formats can be supported by adding new modules, since the playback parts are abstracted it would require no code changes to any other modules or to the core to add new formats for playback. The abstraction layer exists so that you can have different TTS engines, although currently cepstral is the only one that exists - all without the things that are going to use it knowing anything specific about them, different file formats, again without different parts knowing anything specific, etc. A tip - if you use mod_xml_curl (the configuration stuff is abstracted too :) you can fetch the phrases xml data from a web server as its requested so you could make decisions on which one to return based on the specific call. So you could allow for people to have more selection in which voice they get (either set of recordings or TTS) whether they use TTS or recordings, what the actual content would be, etc. This allows for a very high level of customization that is generally not available in other telephony products (commercial or otherwise). Another tip - xml_curl isnt the only way to get config data, a module can be written that will pull it from anywhere, any source, and generate the XML data which then gets fed into FS. xml_curl is a good example of how to do this, and can be used as a reference work for obtaining the data from any number of sources.
I uncommented the cepstral line in modules.conf.xml and I get the following:
2007-12-04 21:52:08 [CRIT] switch_loadable_module.c:726 switch_loadable_module_load_file() Error Loading module /usr/local/freeswitch/mod/mod_cepstral.so **/usr/local/freeswitch/mod/mod_cepstral.so: cannot open shared object file: No such file or directory**
In addition to uncommenting it in modules.conf.xml it must be built, that error 'no such file or directory' means that it was not installed (modules.conf in the main src directory). In order for it to be built, you have to have libswift.so/dll which is installed as part of a voice from cepstral.
If you get a voice without a license you can use it for testing, it will add a 'nag phrase' saying that it is not registered, but it lets you test and play with it, without actually spending anything. I *think* a single channel license is $20 which will remove the nag message. -- Trixter http://www.0xdecafbad.com Bret McDanel Belfast +44 28 9099 6461 US +1 516 687 5200 http://www.trxtel.com the phone company that pays you!
Bret, Well done on this post. This would make an awesome wiki article if it doesn't already exist. Let me know if you'd like me to generate some wiki content based on this email thread... -MC
-----Original Message----- From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch- users-bounces@lists.freeswitch.org] On Behalf Of trixter aka Bret McDanel Sent: Tuesday, December 04, 2007 8:55 PM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] Voicemail
On Dec 4, 2007, at 9:59 PM, Peder @ NetworkOblivion wrote:
Am I to assume that voicemail requires Cepstral? I setup a dialplan to test and I get the following debug when the call rolls to voicemail:
There seems to be some confusion about what is going on, so I will try to explain on the list for everyone. :)
The phrase subsystem allows you to define whether or not you will use sound files, TTS or whatever. This is defined in freeswitch.xml in the section 'phrases'. You can define the language, which can be changed via a channel variable for a particular call, you can define what the prompts actually are, etc.
This offers a great deal of flexibility, and allows proper usage of different languages since not all will say things the same way. Examples are dates/times (Dutch will use a 24 hour clock, and 'half elf' means 11:30a in English/American for example). Other things can be done properly, for example "You have 2 messages" in Japnaese cannot use 'ni' for 2 since that would be like saying 'two-cycle' in English so you can have proper language sensitive prompts for different languages and define what is said via a combination of a module (which provides the logic for how to say numbers, counts, currency, dates etc) and XML which defines the actual phrases to be used.
You are free to use any sound files that you want, subject to the licensing terms of those sound files. They can be in any format that FS understands (based on a format module that provides the capability to read and understand a given file format). There are a couple of different modules that provide native (no transcoding), various common formats and mp3. In addition other formats can be supported by adding new modules, since the playback parts are abstracted it would require no code changes to any other modules or to the core to add new formats for playback.
The abstraction layer exists so that you can have different TTS engines, although currently cepstral is the only one that exists - all without the things that are going to use it knowing anything specific about them, different file formats, again without different parts knowing anything specific, etc.
A tip - if you use mod_xml_curl (the configuration stuff is abstracted too :) you can fetch the phrases xml data from a web server as its requested so you could make decisions on which one to return based on the specific call. So you could allow for people to have more selection in which voice they get (either set of recordings or TTS) whether they use TTS or recordings, what the actual content would be, etc. This allows for a very high level of customization that is generally not available in other telephony products (commercial or otherwise).
Another tip - xml_curl isnt the only way to get config data, a module can be written that will pull it from anywhere, any source, and generate the XML data which then gets fed into FS. xml_curl is a good example of how to do this, and can be used as a reference work for obtaining the data from any number of sources.
I uncommented the cepstral line in modules.conf.xml and I get the following:
2007-12-04 21:52:08 [CRIT] switch_loadable_module.c:726 switch_loadable_module_load_file() Error Loading module /usr/local/freeswitch/mod/mod_cepstral.so **/usr/local/freeswitch/mod/mod_cepstral.so: cannot open shared object file: No such file or directory**
In addition to uncommenting it in modules.conf.xml it must be built, that error 'no such file or directory' means that it was not installed (modules.conf in the main src directory). In order for it to be built, you have to have libswift.so/dll which is installed as part of a voice from cepstral.
If you get a voice without a license you can use it for testing, it will add a 'nag phrase' saying that it is not registered, but it lets you test and play with it, without actually spending anything. I *think* a single channel license is $20 which will remove the nag message.
-- Trixter http://www.0xdecafbad.com Bret McDanel Belfast +44 28 9099 6461 US +1 516 687 5200 http://www.trxtel.com the phone company that pays you!
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
All of the info on how tts and sounds work makes sense, but I still am not sure what I need to change to get it to use files versus tts. Here is the snippet of code from the config file that uses tts. How does it need to be changed to use sounds instead? <!-- phrases section (under development still) --> <section name="phrases" description="Speech Phrase Management"> <macros> <language name="en" sound-path="/snds" tts-engine="cepstral" tts-voice="david"> <!--#include "lang_en.xml"--> <!--voicemail_en_tts is purely implemented with tts, we need a files based implementation too --> <!--#include "voicemail_en_tts.xml"--> </language> </macros> </section> FYI, I just updated about an hour ago.
There are macros that define whether it does a TTS or a sound file. When you include voicemail_en_tts.xml it will be set up to use TTS. If you compare that against say lang_en.xml you will see the macro names are the same but what is defined for each prompt is different. This enables you to mix and match what you want. You can create entirely new prompts if you wanted just by editing the xml. Now I will go on a little rant for a second :) If you have static data, prompts and the like, it is best to use static files, lower CPU load, etc. If you have dynamic data, say you are reading someones email to them, or providing some other data that cant easily be pre-generated, then you have to use TTS. That is my opinion, I know others may disagree, but for cpu reasons its best to not use TTS if you can avoid it. For rapid prototyping/testing of a new system TTS is great, you can work out all the prompts, then you know what has to be said, how, when, etc. You can then look at either just generating TTS->soundfile prompts or getting them recorded by live talent. -- Trixter http://www.0xdecafbad.com Bret McDanel Belfast +44 28 9099 6461 US +1 516 687 5200 http://www.trxtel.com the phone company that pays you!
There are macros that define whether it does a TTS or a sound file. When you include voicemail_en_tts.xml it will be set up to use TTS. If you compare that against say lang_en.xml you will see the macro names are the same but what is defined for each prompt is different.
This enables you to mix and match what you want. You can create entirely new prompts if you wanted just by editing the xml.
Excellent explanation of a very cool feature of FS.
Now I will go on a little rant for a second :) If you have static
data,
prompts and the like, it is best to use static files, lower CPU load, etc. If you have dynamic data, say you are reading someones email to them, or providing some other data that cant easily be pre-generated, then you have to use TTS.
That is my opinion, I know others may disagree, but for cpu reasons its best to not use TTS if you can avoid it.
I agree. Until CPU power is cheaper (and more plentiful) than disk space and RAM then static prompts should be static data sitting in sound files that are ready to be played.
For rapid prototyping/testing of a new system TTS is great, you can
work
out all the prompts, then you know what has to be said, how, when, etc. You can then look at either just generating TTS->soundfile prompts or getting them recorded by live talent.
Yup. -MC P.S. - 0xdecafbad = 11011110110010101111101110101101 :)
FIrst off we need to get you up to the latest configs. This config is older .. refer to how the one in SVN is and it'll be even clearer. If not find me on IRC and i'll assist you ;) /b On Dec 18, 2007, at 10:20 PM, Peder @ NetworkOblivion wrote:
All of the info on how tts and sounds work makes sense, but I still am not sure what I need to change to get it to use files versus tts. Here is the snippet of code from the config file that uses tts. How does it need to be changed to use sounds instead?
<!-- phrases section (under development still) --> <section name="phrases" description="Speech Phrase Management"> <macros> <language name="en" sound-path="/snds" tts-engine="cepstral" tts-voice="david"> <!--#include "lang_en.xml"--> <!--voicemail_en_tts is purely implemented with tts, we need a files based implementation too --> <!--#include "voicemail_en_tts.xml"--> </language> </macros> </section>
FYI, I just updated about an hour ago.
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
participants (4)
-
Brian West
-
Michael Collins
-
Peder @ NetworkOblivion
-
trixter aka Bret McDanel