<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>/bill's House O Insomnia&lt;img src="http://www.williamgryan.com/images/originalcuckoo.jpg" alt="Bill Ryan" /&gt; : Humor, SpeechSynthesize.SpeakSsml</title><link>http://msmvps.com/blogs/williamryan/archive/tags/Humor/SpeechSynthesize.SpeakSsml/default.aspx</link><description>Tags: Humor, SpeechSynthesize.SpeakSsml</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>SpeechSynthesizer Al Qaeda Style</title><link>http://msmvps.com/blogs/williamryan/archive/2007/05/31/speechsynthesizer-al-qaeda-style.aspx</link><pubDate>Thu, 31 May 2007 02:17:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:934939</guid><dc:creator>William</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/rsscomments.aspx?PostID=934939</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/williamryan/commentapi.aspx?PostID=934939</wfw:comment><comments>http://msmvps.com/blogs/williamryan/archive/2007/05/31/speechsynthesizer-al-qaeda-style.aspx#comments</comments><description>&lt;p&gt;I don&amp;#39;t know why, but every time I hear &lt;a href="http://en.wikipedia.org/wiki/Adam_Yahiye_Gadahn"&gt;Adam Gadahn&lt;/a&gt;&amp;nbsp; I start cracking up.&amp;nbsp; I think he&amp;#39;d be a lot scarier with like a black cape, or a monacle and a persian or something but he doesn&amp;#39;t get on me about how I dress, so I should grant him the same courtesy.. I know I know.&amp;nbsp; This is serious stuff and I shouldn&amp;#39;t be cracking jokes about it, but oh well.&amp;nbsp; Anyway, I have dug into SSML enough that I&amp;#39;m starting to get pretty comfortable with it.&amp;nbsp; After going through the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.speech.synthesis.promptbuilder.aspx"&gt;PromptBuilder&lt;/a&gt;&amp;nbsp;class, I realized it would in fact do everything I was looking for.&amp;nbsp; So I decided to play around with it some.&amp;nbsp; First, I pulled down a &lt;a href="http://www.lauramansfield.com/j/default.asp"&gt;transcript of his latest video. &lt;/a&gt;Then I did a quick parse of it loading each sentence into a &lt;a href="http://www.williamgryan.com/Gadahn.txt"&gt;String array&lt;/a&gt; .&amp;nbsp; I decided to see what it would sound like with him as a Teenage Girl and my good buddy the PromptBuilder was johny on the spot:&lt;/p&gt;
&lt;p&gt;So first I changed my picture from the WereCuckoo to brother Adam:&lt;br /&gt;&lt;img alt="Adam Gadahn" src="http://www.williamgryan.com/images/trashtalking.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;Next I had to add a little code:&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; btnSpeak_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; sender, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;RoutedEventArgs&lt;/font&gt;&lt;font size="2"&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;SpeechSynthesizer&lt;/font&gt;&lt;font size="2"&gt; sz = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;SpeechSynthesizer&lt;/font&gt;&lt;font size="2"&gt;(); &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#2b91af" size="2"&gt;PromptBuilder&lt;/font&gt;&lt;font size="2"&gt; pb = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;PromptBuilder&lt;/font&gt;&lt;font size="2"&gt;();&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;&lt;font color="#2b91af" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;[] GadahnsRap = BuildGadahnText();&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;pb.StartParagraph();&lt;/p&gt;pb.StartVoice(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;VoiceGender&lt;/font&gt;&lt;font size="2"&gt;.Female, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;VoiceAge&lt;/font&gt;&lt;font size="2"&gt;.Teen, 2);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; Sentence &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; GadahnsRap)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&amp;nbsp;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pb.StartSentence();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pb.AppendText(Sentence);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pb.EndSentence();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pb.EndVoice();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pb.EndParagraph();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sz.SpeakSsml(pb.ToXml());&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;[] BuildGadahnText()&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; textValues = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;StreamReader&lt;/font&gt;&lt;font size="2"&gt; sr = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;StreamReader&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;@&amp;quot;C:\Gadahn.txt&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;))&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textValues = sr.ReadToEnd();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/font&gt;&lt;font size="2"&gt; textValues.Split(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;#39;.&amp;#39;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;All that was left now was to let it run.&amp;nbsp; If you thought he was scarry before, you should here him as a teenage chick.&amp;nbsp; Anyway, you can easily change the Voice inside the loop within each sentence, and use Random or whatever method you feel comfortable with to randomly change the voice.&amp;nbsp; Doing this yeilds even funnier results.&amp;nbsp; Creating a SSML writer was fun, and I learned a lot, but i think the PromptBuilder does everything I was hoping to accomplish and it&amp;#39;s very easy to use, so i think I&amp;#39;m scrapping that project for now.&amp;nbsp; If I can think of anything cool to do with this, I&amp;#39;ll post it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=934939" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/williamryan/archive/tags/Humor/default.aspx">Humor</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/SpeechSynthesizer/default.aspx">SpeechSynthesizer</category><category domain="http://msmvps.com/blogs/williamryan/archive/tags/SpeechSynthesize.SpeakSsml/default.aspx">SpeechSynthesize.SpeakSsml</category></item></channel></rss>