<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=BG link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>If you break and store
everything as separate words, then you&#8217;ll be ignoring the intonation.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>I think there should be a
table that maps phrases (a sequence of words) to a wave file. The matching
algorithm should always try to find the longest phrase. This way you can
improve the quality by simply recording additional phrases. Of course, the
phrases should be language-specific.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Probably there could be
another function like this:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; say_sentence_text(&#8220;&#8221;en&#8221;,
&#8220;voice&#8221;, You have &lt;messages&gt;{0}&lt;/messages&gt; new messages
as of &lt;datetime&gt;{1}&lt;/datetime&gt;&#8221;, &#8220;10&#8221;, &#8220;12/18/2006
10:00 AM&#8221;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>But this is still
language specific. Probably there could be another table that has the sentence pattern
like above with some alpha-numeric ID (one map per language) and then the
say_setence function can take either sentence ID or sentence pattern with a list
of parameters like this:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; say_sentence(&#8220;en&#8221;,
&#8220;voice&#8221;, &#8220;vmail.new_messages&#8221;, &#8220;10&#8221;, &#8220;12/18/2006
10:00 AM&#8221;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span lang=EN-US
style='font-size:10.0pt;font-family:Arial;color:navy'>Nikolay</span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><o:p></o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:Tahoma'>
Kannaiyan Natesan [mailto:gbpnkans@gmail.com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Sunday, December 17, 2006
5:29 PM<br>
<b><span style='font-weight:bold'>To:</span></b>
freeswitch-users@lists.freeswitch.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Freeswitch-users]
[Freeswitch-dev] C SAY API</span></font><span lang=EN-US><o:p></o:p></span></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>That applies how you want it to proceed with the preprocessor. Supply
the digits to the preprocessor and it will give the list of words or filenames
to sequence.<br>
<br>
1400 <br>
<br>
we may need output, <br>
<br>
one thousand four hundred <br>
one four zero zero<br>
<br>
It is upto the user to choose it.<br>
<br>
Also with the API,<br>
<br>
switch_channel_set_variable(channel, &quot;language&quot;, &quot;en&quot;);<b><span
style='font-weight:bold'><br>
<br>
switch_channel_set_variable(channel, &quot;language&quot;,
&quot;en&quot;,&quot;<font color=red><span style='color:red'>voice</span></font>&quot;);<br>
<br>
<font color=red><span style='color:red'>voice</span></font> - indicates whose
voice&nbsp; set to select<br>
<br>
</span></b><br>
<br>
Regards,<br>
Kannaiyan <br>
<br>
On 12/18/06, <st1:PersonName w:st="on">Anthony Minessale</st1:PersonName> &lt;<a
href="mailto:anthmct@yahoo.com">anthmct@yahoo.com</a>&gt; wrote:<br>
&gt; <br>
&gt;&nbsp;&nbsp;<br>
&gt; pronounced would be like <br>
&gt; for 1400 <br>
&gt;&nbsp;&nbsp; <br>
&gt; pronounced would be: <br>
&gt;&nbsp;&nbsp; <br>
&gt; one thousand, four hundred<br>
&gt;&nbsp;&nbsp;<br>
&gt; iterated would be: <br>
&gt;&nbsp;&nbsp; <br>
&gt; one, four, zero, zero <br>
&gt;&nbsp;&nbsp; <br>
&gt; this could also possibly apply to dates etc <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp; <br>
&gt; <st1:PersonName w:st="on">Anthony Minessale</st1:PersonName> II<br>
&gt; <br>
&gt; FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>
&gt; ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
&gt; <br>
&gt; AIM: anthm<br>
&gt; <a href="mailto:MSN:anthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>
&gt; JABBER:<a href="mailto:anthony.minessale@gmail.com">anthony.minessale@gmail.com</a><br>
&gt; IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch <br>
&gt; <br>
&gt; FreeSWITCH Developer Conference<br>
&gt; <a href="mailto:sip:888@66.250.68.194">sip:888@66.250.68.194</a><br>
&gt; iax:guest@66.250.68.194 /888<br>
&gt; <a href="mailto:googletalk:freeswitch@gmail.com">googletalk:freeswitch@gmail.com</a><br>
&gt; pstn:213-799-1400 <br>
&gt; <br>
&gt; <br>
&gt;&nbsp;&nbsp;<br>
&gt; ----- Original Message ----<br>
&gt; From: Nikolay Kolev &lt; <a href="mailto:me@nikolay.com">me@nikolay.com</a>&gt;<br>
&gt; To: <a href="mailto:freeswitch-dev@lists.freeswitch.org">freeswitch-dev@lists.freeswitch.org</a>;<br>
&gt; <a href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</a><br>
&gt; Sent: Saturday, December 16, 2006 6:47:44 PM<br>
&gt; Subject: Re: [Freeswitch-users] [Freeswitch-dev] C SAY API<br>
&gt; <br>
&gt;&nbsp;&nbsp;<br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; The idea is great! <br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt; <br>
&gt; OpenPBX seems to have one something similar, but it's unfortunately GPL. <br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt; <br>
&gt; BTW, SSM_ITTERATED is misspelled. What would be the difference between<br>
&gt; SSM_ITERATED and SSM_PRONOUNCED? <br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt; <br>
&gt; Nikolay Kolev <br>
&gt;&nbsp;&nbsp;<br>
&gt;&nbsp;&nbsp;________________________________<br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; From: <st1:PersonName w:st="on">Anthony Minessale</st1:PersonName>
[mailto:<a href="mailto:anthmct@yahoo.com"> anthmct@yahoo.com</a>] <br>
&gt; Sent: Friday, December 15, 2006 3:09 PM<br>
&gt; To: <a href="mailto:freeswitch-dev@lists.freeswitch.org">freeswitch-dev@lists.freeswitch.org</a>
;<br>
&gt; <a href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</a><br>
&gt; Subject: [Freeswitch-dev] C SAY API <br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; Hi, <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; I'm working on a muiti-lingual say api for ivr programmers to be able <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; to generate audio for saying numbers, counting items or expressing amounts<br>
&gt; of things such as currency.&nbsp;&nbsp;I'd like some input from anyone who
has some<br>
&gt; ideas <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; on how to make sure we cover all bases. <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; The basic idea is that we will have an api where each new<br>
&gt; language/implementation would provide it's own version of this function. <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; switch_status_t say(char *tosay,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
switch_say_gender_t gender,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
switch_say_type_t type,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
switch_say_method_t method, <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
switch_input_callback_function_t<br>
&gt; dtmf_callback,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
void *buf,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint32_t buflen); <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; The enums are described in <br>
&gt; <a href="http://www.freeswitch.org/eg/say_api.c">http://www.freeswitch.org/eg/say_api.c</a>
<br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; the idea would be something like <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; switch_say_handle_t *en; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; en = switch_say_load(&quot;en&quot;); <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; switch_ivr_play_file(session, NULL, &quot;/sounds/youhave.wav&quot;, NULL,
NULL, NULL, <br>
&gt; 0); <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; en-&gt;say(&quot;1000&quot;, SSG_ANY, SSM_PRONOUNCED, SST_MESSAGES, NULL,
NULL, 0); <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; switch_ivr_play_file(session, NULL, &quot;/sounds/msgs.wav&quot;, NULL,
NULL, NULL, <br>
&gt; 0); <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; Thoughts? <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; <st1:PersonName w:st="on">Anthony Minessale</st1:PersonName> II<br>
&gt; <br>
&gt; FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>
&gt; ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
&gt; <br>
&gt; AIM: anthm<br>
&gt; <a href="mailto:MSN:anthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com
</a><br>
&gt; JABBER:<a href="mailto:anthony.minessale@gmail.com">anthony.minessale@gmail.com</a><br>
&gt; IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch <br>
&gt;&nbsp;&nbsp;<br>
&gt; <br>
&gt; <br>
&gt; FreeSWITCH Developer Conference <br>
&gt; <a href="mailto:sip:888@66.250.68.194">sip:888@66.250.68.194</a><br>
&gt; iax:guest@66.250.68.194/888<br>
&gt; <a href="mailto:googletalk:freeswitch@gmail.com">googletalk:freeswitch@gmail.com</a><br>
&gt; pstn:213-799-1400 <br>
&gt; <br>
&gt; <br>
&gt; __________________________________________________<br>
&gt; Do You Yahoo!?<br>
&gt; Tired of spam? Yahoo! Mail has the best spam protection around <br>
&gt; <a href="http://mail.yahoo.com">http://mail.yahoo.com </a><br>
&gt; _______________________________________________<br>
&gt; Freeswitch-users mailing list<br>
&gt; <a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; UNSUBSCRIBE:<a
href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<br>
&gt; <a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br>
&gt; <br>
&gt; __________________________________________________<br>
&gt; Do You Yahoo!?<br>
&gt; Tired of spam? Yahoo! Mail has the best spam protection around <br>
&gt; <a href="http://mail.yahoo.com">http://mail.yahoo.com</a> <br>
&gt; _______________________________________________<br>
&gt; Freeswitch-users mailing list<br>
&gt; <a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; UNSUBSCRIBE:<a
href="http://lists.freeswitch.org/mailman/options/freeswitch-users">
http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; <a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br>
&gt; <br>
&gt; <br>
&gt; <o:p></o:p></span></font></p>

</div>

</body>

</html>