Just throw this up on the wiki on the mod_cepstral page.<div>-MC<br><br><div class="gmail_quote">On Fri, Nov 11, 2011 at 9:10 AM, Tom Parrott <span dir="ltr">&lt;<a href="mailto:tomp@tomp.co.uk">tomp@tomp.co.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi,<br>
<br>
I am happy to, although I&#39;m sure it can be improved as this is my first<br>
lua script. Although its in production now and working like a charm. :)<br>
<br>
First, I created a phrase macro for requesting TTS, and then call the LUA<br>
script from there:<br>
<br>
  &lt;!--Provides a phase to speak custom text--&gt;<br>
  &lt;macro name=&quot;tts&quot;&gt;<br>
    &lt;input pattern=&quot;(.*)&quot;&gt;<br>
      &lt;match&gt;<br>
        &lt;action function=&quot;execute&quot; data=&quot;lua(tts_cache.lua &#39;$1&#39;)&quot;/&gt;<br>
        &lt;action function=&quot;play-file&quot; data=&quot;${tts_file}&quot; /&gt;<br>
      &lt;/match&gt;<br>
    &lt;/input&gt;<br>
  &lt;/macro&gt;<br>
<br>
Then this is the tts_cache.lua script:<br>
<br>
-- This script generates a wav file of the sentence passed in to it.<br>
-- It uses the Cepstral swift command to perform text-to-speech conversion.<br>
-- If the wav file already exists for this sentence, then it is not<br>
generated.<br>
-- Author: Thomas Parrott &lt;<a href="mailto:thomas.parrott@infinity-tracking.com">thomas.parrott@infinity-tracking.com</a>&gt;<br>
api         = freeswitch.API();<br>
msg         = argv[1];<br>
msgMd5      = api:execute( &quot;md5&quot;, msg );<br>
filename    = &#39;/var/lib/tts_cache/&#39; .. msgMd5 .. &#39;.wav&#39;;<br>
cmd         = &#39;/opt/swift/bin/swift&#39;;<br>
<br>
-- Set a channel variable so that we know which file to play back.<br>
session:setVariable( &#39;tts_file&#39;, filename );<br>
<br>
-- Check whether the file already exists.<br>
file, errMsg = io.open( filename, &quot;r&quot; )<br>
if not file then<br>
api:execute( &#39;system&#39;, cmd .. &#39; -o &quot;&#39; .. filename .. &#39;&quot; &quot;&#39; .. msg .. &#39;&quot;&#39; );<br>
end<br>
<br>
If I can have a branch into contrib I&#39;ll post it up there.<br>
<br>
Thanks<br>
Tom<br>
<br>
&gt; On 11/11/2011 01:00 AM, Tom Parrott wrote:<br>
&gt; [snip]<br>
&gt;&gt; Let me know if you would like to see the script.<br>
&gt;<br>
&gt; Good to see you found a solution. If you don&#39;t mind sharing your script<br>
&gt; with the Community perhaps you could ask one of the developers to put it<br>
&gt; somewhere in contrib/ or give you access to your own branch in contrib/.<br>
&gt;<br>
&gt; Regards,<br>
&gt; Patrick<br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br>
<a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-dev mailing list<br>
<a href="mailto:FreeSWITCH-dev@lists.freeswitch.org">FreeSWITCH-dev@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-dev</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
</blockquote></div><br></div>