[Freeswitch-users] Record and live stream WAV to HTTP server
Michael Jerris
mike at jerris.com
Tue Apr 5 21:14:50 MSD 2016
Unimrcp isn't going to provide the interface he's talking about. Can I ask
which engine this is?
On Tuesday, April 5, 2016, Sergey Safarov <s.safarov at gmail.com> wrote:
> Look at http://www.unimrcp.org/ and
> https://wiki.freeswitch.org/wiki/Mod_unimrcp
>
> On Tue, Apr 5, 2016, 19:38 Vincent Gire <vincent.gire at gmail.com
> <javascript:_e(%7B%7D,'cvml','vincent.gire at gmail.com');>> wrote:
>
>> We are building an IVR completely driven by ASR.
>> ASR is performed in a distant location by a HTTP service (supporting
>> chunked transfer) and adds an incompressible latency. We would like to
>> stream the record to the ASR service as soon as it starts to reduce the
>> overall latency before response.
>> Does it make sense ?
>>
>>
>> On Tue, Apr 5, 2016 at 5:39 PM, Michael Jerris <mike at jerris.com
>> <javascript:_e(%7B%7D,'cvml','mike at jerris.com');>> wrote:
>>
>>> I would stay away from mod_vlc. Its audio portions with recording have
>>> known issues. We do use the rtmp streaming in mod_av heavily but thats
>>> obviously not wav. Can you explain a bit more why you have this
>>> requirement?
>>>
>>> On Apr 5, 2016, at 5:36 AM, Vincent Gire <vincent.gire at gmail.com
>>> <javascript:_e(%7B%7D,'cvml','vincent.gire at gmail.com');>> wrote:
>>>
>>> Ok thanks.
>>> It looks promising !
>>> I'll dig into mod_vlc.
>>>
>>> Best
>>>
>>> Vincent
>>>
>>> On Tue, Apr 5, 2016 at 10:04 AM, Sergey Safarov <s.safarov at gmail.com
>>> <javascript:_e(%7B%7D,'cvml','s.safarov at gmail.com');>> wrote:
>>>
>>>> Think is requred streaming feature of freeswitch.
>>>> Look at mod_esf
>>>> <https://freeswitch.org/confluence/display/FREESWITCH/mod_esf> and
>>>> mod_vlc <https://wiki.freeswitch.org/wiki/Mod_vlc>
>>>> Instruction to compile mod_vlc on provided link is to old but helpfull
>>>> to undestand how to stream media to http server.
>>>>
>>>> For compiling mod_vlc please use vlc repo
>>>> <https://freeswitch.org/stash/projects/SD/repos/vlc/browse> and centos
>>>> instruction
>>>> <https://freeswitch.org/confluence/display/FREESWITCH/Creating+RPM+repositary>
>>>> .
>>>> After you intall vlc, then you can enable mod_vlc module in freeswitch
>>>> sources(SPEC file) and compile freeswitch.
>>>>
>>>> Sergey
>>>>
>>>>
>>>> вт, 5 апр. 2016 г. в 10:31, Vincent Gire <vincent.gire at gmail.com
>>>> <javascript:_e(%7B%7D,'cvml','vincent.gire at gmail.com');>>:
>>>>
>>>>> webdav, mod_http_cache or mod_httapi all results in sending the
>>>>> recording only *after* it is complete.
>>>>> They all write the recording to a file, wait for the recording to
>>>>> complete and the file to close and then send it over HTTP.
>>>>>
>>>>> I would like to start sending the recording to the remove server as
>>>>> soon as it starts (max 1 sec latency).
>>>>> mod_http_cache or mod_httapi would be perfect if they were streaming
>>>>> the recording like mod_shout.
>>>>>
>>>>>
>>>>> On Mon, Apr 4, 2016 at 8:50 PM, Sergey Safarov <s.safarov at gmail.com
>>>>> <javascript:_e(%7B%7D,'cvml','s.safarov at gmail.com');>> wrote:
>>>>>
>>>>>> Input/output latency is not problem. I use Kazoo on my servers and
>>>>>> call recording is stored to database during 5 seconds after hangup.
>>>>>> What is broken in your case if save file using webdav or http_cache?
>>>>>>
>>>>>> On Mon, Apr 4, 2016, 21:10 Vincent Gire <vincent.gire at gmail.com
>>>>>> <javascript:_e(%7B%7D,'cvml','vincent.gire at gmail.com');>> wrote:
>>>>>>
>>>>>>> Hello Sergey,
>>>>>>>
>>>>>>> Thank you for your answer.
>>>>>>> I've looked into webdav mounted filesystem.
>>>>>>>
>>>>>>> Unfortunately, most WebDav clients (especially davfs2 on debian) do
>>>>>>> a lot of buffering, caching and even lock-null requests (lock a non
>>>>>>> existent resource before writing to it). I also suspect that they wait for
>>>>>>> the end of the write operation.
>>>>>>> The result is a latency of a few seconds witch is not much better
>>>>>>> than what I achieve with mod_shout if I transcode the MP3.
>>>>>>>
>>>>>>> Any other idea ?
>>>>>>>
>>>>>>> Thank you !
>>>>>>>
>>>>>>> Best regards
>>>>>>>
>>>>>>> Vincent
>>>>>>>
>>>>>>> On Sun, Apr 3, 2016 at 7:30 PM, Sergey Safarov <s.safarov at gmail.com
>>>>>>> <javascript:_e(%7B%7D,'cvml','s.safarov at gmail.com');>> wrote:
>>>>>>>
>>>>>>>> Please look at webdav mounted filesystem.
>>>>>>>>
>>>>>>>> On Sun, Apr 3, 2016, 19:17 Vincent Gire <vincent.gire at gmail.com
>>>>>>>> <javascript:_e(%7B%7D,'cvml','vincent.gire at gmail.com');>> wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> Thank you to all contributing to FreeSWITCH !
>>>>>>>>>
>>>>>>>>> I'm working on a IVR project where logic is implemented on a HTTP
>>>>>>>>> server.
>>>>>>>>> We are leaving Twilio because we now need to record and live
>>>>>>>>> stream the session to the HTTP server in WAV format (chunked transfer
>>>>>>>>> encoding).
>>>>>>>>>
>>>>>>>>> *mod_httapi* looks great (HT TAPI very similar to Twilio's) but
>>>>>>>>> it seems that the records are first saved to disk before there are sent to
>>>>>>>>> the server as chunked data.
>>>>>>>>> We need the transfer to start as soon as the recording starts.
>>>>>>>>>
>>>>>>>>> *mod_shout* does start the request almost as the records starts
>>>>>>>>> but it does not support WAV file and shout:// is not exactly a HTTP request
>>>>>>>>> (SOURCE method instead of PUT).
>>>>>>>>>
>>>>>>>>> Is there a way to use these modules to achieve our goal ?
>>>>>>>>>
>>>>>>>>> If not, we are willing to author a specific module or rather
>>>>>>>>> contribute to the existing ones.
>>>>>>>>>
>>>>>>>>> We've identified two approaches:
>>>>>>>>>
>>>>>>>>> 1. From *mod_httapi* Modify mod_httapi to directly stream the
>>>>>>>>> record instead of completely saving it to disk before the HTTP chunked
>>>>>>>>> transfer starts.
>>>>>>>>> This seems the most logical but with more than 3000 lines,
>>>>>>>>> mod_httapi does not seem to be the easiest module to build upon for
>>>>>>>>> newcomers!
>>>>>>>>>
>>>>>>>>> 2. From *mod_shout*
>>>>>>>>> 1. Modify libshoot to replace the custom SOURCE method with
>>>>>>>>> standard HTTP PUT method
>>>>>>>>> 2. Modify mod_shout to support wav files
>>>>>>>>> 3. Implement our IVR in script (javascript/lua)
>>>>>>>>>
>>>>>>>>> What do you think ?
>>>>>>>>>
>>>>>>>>> Thank you for your help.
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>
>>> _________________________________________________________________________
>>> Professional FreeSWITCH Consulting Services:
>>> consulting at freeswitch.org
>>> <javascript:_e(%7B%7D,'cvml','consulting at freeswitch.org');>
>>> http://www.freeswitchsolutions.com
>>>
>>> Official FreeSWITCH Sites
>>> http://www.freeswitch.org
>>> http://confluence.freeswitch.org
>>> http://www.cluecon.com
>>>
>>> FreeSWITCH-users mailing list
>>> FreeSWITCH-users at lists.freeswitch.org
>>> <javascript:_e(%7B%7D,'cvml','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
>>>
>>
>>
>>
>> --
>> Vincent Gire
>> _________________________________________________________________________
>> Professional FreeSWITCH Consulting Services:
>> consulting at freeswitch.org
>> <javascript:_e(%7B%7D,'cvml','consulting at freeswitch.org');>
>> http://www.freeswitchsolutions.com
>>
>> Official FreeSWITCH Sites
>> http://www.freeswitch.org
>> http://confluence.freeswitch.org
>> http://www.cluecon.com
>>
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> <javascript:_e(%7B%7D,'cvml','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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160405/5cf5c680/attachment-0001.html
Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users
mailing list