[Freeswitch-users] How to implement TTS barge-in using FS ESL
xl127
x.liu at hw.ac.uk
Thu Nov 17 16:28:19 MSK 2011
Hi Christopher,
After some more tests, I found followings:
1. Testing from dialplan, the log output is the string of "CRIT
${speech_detect_result}" rather than the recognition results.
2. Regarding to non barge in, I first send "speak" command then send
play_and_detect_speech with parameter:
detect:unimrcp:nuance5-mrcp1-1
{start-input-timers=false,no-input-timeout=25000,recognition-timeout=25000}dudeYNNC_Nuance
in which I removed the "say:" part.
But very soon I received event CHANNEL_EXECUTE_COMPLETE for
play_and_detect_speech before the text playing finishes,
and speech_detect_result is null (actually the event header does
not contain this variable)
I tried with "say:" part with empty text like "say:unimrcp:en-GB:
" but it doesn't work, see issue 3 below.
3. It seems that I can not send "speak" command twice before the
first one finishes. In my case I run one port TTS server on one machine.
If I send the command twice FS will give me Synthesizer
Error/Invalid TTS Module.
I thought the TTS request would be queued rather than it
immediately looks for the TTS resource.
If I send the second command to another TTS machine, no error
occurs but I can only hear one utterance being spoken,
it looks like one utteraance was dropped somehow.
Any ideas?
Thanks!
Xing
On 16/11/11 16:51, xl127 wrote:
> Hi Christopher,
>
> The questions are cleared to me now. Many thanks for your explanations!
>
> Best regards,
>
> Xing
>
>
> On 16/11/11 15:52, Christopher Rienzo wrote:
>>
>> Responses inline
>>
>>
>> Now it works in my ESL app though I am just able to do one
>> dialogue ( I need to add the event catching for furthur dialgoues).
>>
>> I have a couple of questions here:
>>
>> 1. In the first try, my Nuance server was able to be accessed
>> somehow (FS says the MRCP is not responding in 5000ms,
>> something like that), then FS says: [WARNING]
>> rtsp_client.c:386 () Failed to Connect to RTSP Server
>> *MailScanner warning: numerical links are often malicious:*
>> 99.185.85.31:554 <http://99.185.85.31:554>,
>> later FS says:
>> [ERR] mod_unimrcp.c:1860 (TTS-6) SYNTHESIZER channel error!
>> [ERR] switch_ivr_play_say.c:2439 Invalid TTS module!
>>
>> The SYNTHESIZER channel error and Invalid TTS module error are
>> obvious.
>>
>> What I don't understand is why it went to this stange
>> address: *MailScanner warning: numerical links are often
>> malicious:* 99.185.85.31:554 <http://99.185.85.31:554>?
>>
>>
>> check your unimrcp configuration. Make sure the default TTS and ASR
>> profiles are set to actual servers.
>>
>> 2. I specified TTS engine in play_and_detect_speech as
>> "say:unimrcp:nuance5-mrcp1-1: the text to speak"
>> It works though I didn't specify the TTS voice.
>>
>> How do I specify the TTS voice? In the mrcp profile (how?)?
>> or something like:
>> "say:unimrcp:nuance5-mrcp1-1:Serena: the text to speak"
>> (this seems not right.)
>>
>>
>> That won't work. Set the tts_engine variable as I explained
>> previously, or use say:unimrcp:voice:text to speak with the desired
>> voice and the correct default TTS profile defined in
>> unimrcp.conf.xml. This is a limitation of the say: notation.
>> Alternatively, the voice can be defined with the tts_voice channel
>> variable.
>>
>> 3. The barge-in works well, thanks!. Is the barge-in
>> configurable? In some scenarios, we might not allow barge-in.
>>
>>
>> If you don't want to barge in, just do "playback (or speak)" first,
>> then "play_and_detect_speech" with a silence prompt.
>>
>>
>> 4. How could I get the text which has spoken to the user when
>> barge-in occurs?
>> Or Could I get the time when barge-in occurs? If I know the
>> barge-in time and rough totale time for the whole text
>> to be spoken I can figure out the spoken text by manually
>> checking the recorded audio file later, which would be painful.
>>
>>
>> If this is necessary, you might want to use the lower-level functions
>> instead to watch for the begin-speaking event.
>>
>>
>> 5. when I use "speak" and "detect_speech" apps in ESL, I can
>> catch event: DETECTED_SPEECH and speech-type: begin-speaking
>> and "detected-speech", then I do the recognition results
>> processing.
>>
>> The new app play_and_detect_speech seems not generate these
>> events any more. The way that I can think of to get the results
>> is to catch event:CHANNEL_EXECUTE_COMPLETE then check if
>> variable_current_application=play_and_detect_speech, then get
>> the results from variable_detect_speech_result.
>>
>> Is this the proper way to get the results in ESL app? Or will
>> play_and_detect_speech later on be consistent with detect_speech
>> in term of ASR events?
>>
>>
>> play_and_detect_speech is a higher level abstraction to simplify
>> things. If you want to have more control, go back to using the ESL
>> events. Reading the code in mod_dptools and switch_ivr_async will
>> give you hints about how to do it correctly.
>>
>>
>> 6. I'd like to set start-input-timers=false in the initial
>> request then start the recognition timers (start-input-timers=true)
>> after the TTS finishes.
>> How possibly could I do this?
>>
>>
>> This is automatically done in the
>> switch_ivr_play_and_detect_speech() function. You just need to
>> specify start-input-timers=false in the beginning.
>>
>>
>>
>> _________________________________________________________________________
>> Professional FreeSWITCH Consulting Services:
>> consulting at freeswitch.org
>> http://www.freeswitchsolutions.com
>>
>>
>>
>>
>> Official FreeSWITCH Sites
>> http://www.freeswitch.org
>> http://wiki.freeswitch.org
>> http://www.cluecon.com
>>
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>
>
> ------------------------------------------------------------------------
>
> Scottish University of the Year 2011-12 *Heriot-Watt University is the
> Sunday Times
> Scottish University of the Year 2011-2012*
>
> Heriot-Watt University is a Scottish charity
> registered under charity number SC000278.
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
>
>
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
--
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.
Heriot-Watt University is the Sunday Times
Scottish University of the Year 2011-2012
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111117/d8e8b047/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 4803 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111117/d8e8b047/attachment-0001.jpe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hw_uni_of_year.jpg
Type: image/jpeg
Size: 4803 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111117/d8e8b047/attachment-0001.jpg
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users
mailing list