<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>System.Speech</title>
        <link>http://blog.dotnetspeech.net/category/3.aspx</link>
        <description>System.Speech</description>
        <language>en-US</language>
        <copyright>Jeff Certain</copyright>
        <managingEditor>jeff@dotnetspeech.net</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>MSDN July: Text Services Framework</title>
            <link>http://blog.dotnetspeech.net/archive/2007/06/13/msdn-july-text-services-framework.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;Most of what I do with speech recognition centers around very limited grammars, designed to improve recognition accuracy in noisy environments. We also have a requirement to support XP, since most of our users are on Tablet PCs running XP SP2.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;The latest issue of MSDN Magazine (not online yet) has an interesting article by &lt;a target="_blank" href="http://blogs.msdn.com/tsfaware/"&gt;Eric Brown&lt;/a&gt; on using the Text Services Framework to provide full-featured dictation in apps running on Vista. Among other features, TFS looks like an interesting approach to the problem of allowing your users to train the recognition engine as they dictate -- a feature which is of great interest to many developers, but which I have very little experience with at the point.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/15.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/06/13/msdn-july-text-services-framework.aspx</guid>
            <pubDate>Wed, 13 Jun 2007 18:42:27 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/15.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/06/13/msdn-july-text-services-framework.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/15.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Make sure the speech API is installed</title>
            <link>http://blog.dotnetspeech.net/archive/2007/06/12/make-sure-the-speech-api-is-installed.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;This should go without saying, but I've had recent problems with people not understanding this concept. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;If you're using System.Speech in Windows XP, you need to make sure that the speech recognition engine from SAPI 5.1 is installed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;If you're deploying an application, make sure you include the SAPI 5.1 merge module in your installer.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/13.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/06/12/make-sure-the-speech-api-is-installed.aspx</guid>
            <pubDate>Tue, 12 Jun 2007 15:47:44 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/13.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/06/12/make-sure-the-speech-api-is-installed.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/13.aspx</wfw:commentRss>
        </item>
        <item>
            <title>[Update] June issue of VIsual Studio Magazine</title>
            <link>http://blog.dotnetspeech.net/archive/2007/06/11/june-issue-of-visual-studio-magazine.aspx</link>
            <description>&lt;font size="3"&gt;Well, it's official -- the June issue of &lt;/font&gt;&lt;a href="http://www.ftponline.com"&gt;&lt;font size="3"&gt;Visual Studio Magazine&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; is out. I have the &lt;a target="_blank" href="http://www.ftponline.com/vsm/2007_06/magazine/features/jcertain/"&gt;cover article&lt;/a&gt; in this issue, in which I discuss System.Speech, showing the use of dynamically-generated custom grammers for data collection applications.&lt;/font&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/11.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/06/11/june-issue-of-visual-studio-magazine.aspx</guid>
            <pubDate>Tue, 12 Jun 2007 04:09:07 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/11.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/06/11/june-issue-of-visual-studio-magazine.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/11.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Front Range Code Camp Post Mortem</title>
            <link>http://blog.dotnetspeech.net/archive/2007/05/21/front-range-code-camp-post-mortem.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;Well, the Front Range Code Camp was this past Saturday. I gave two talks -- threading and speech recognition.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;The threading talk (code samples and slide deck &lt;/font&gt;&lt;a href="http://blog.dotnetspeech.net/files/threading.zip"&gt;&lt;font size="3"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;) was pretty well attended -- about 12 people, which was a good third of the attendees. The strangest part was that there were only two people in the room that were .NET developers, and one of those was still using 1.1 so my BackgroundWorker examples weren't all that much use to him. The rest were Ruby and Java developers, plus a small cadre of profs from Metro College.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;That only set the stage for my speech recognition talk (code and slide deck &lt;/font&gt;&lt;a href="http://blog.dotnetspeech.net/files/SpeechRecognition.zip"&gt;&lt;font size="3"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;), which only had three people in the audience... one dev each for Ruby, Java and C++. Considering that the talk was entirely focused on System.Speech, and writeen using VB .NET, the code samples were again somewhat less than relevant.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/10.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/05/21/front-range-code-camp-post-mortem.aspx</guid>
            <pubDate>Tue, 22 May 2007 00:50:26 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/10.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/05/21/front-range-code-camp-post-mortem.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/10.aspx</wfw:commentRss>
        </item>
        <item>
            <title>"Is Speech Recognition Finally Good Enough?"</title>
            <link>http://blog.dotnetspeech.net/archive/2007/05/21/is-speech-recognition-finally-good-enough.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9019224"&gt;&lt;font size="3"&gt;An interesting article from Computer World.&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Among other issues, the article explores some of the reasons why most people don't use SR. The biggest reason is the amount of training -- both of the user and the engine -- to get to 98% recognition accuracy, which is the threshold at which users feel that SR is actually useful.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;"Without help on those issues, about three-fourths of the people who attempt to use SR eventually put it aside and go back to keyboarding, Parks said, and even among those with training the rate is about 20%."&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/9.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/05/21/is-speech-recognition-finally-good-enough.aspx</guid>
            <pubDate>Mon, 21 May 2007 23:25:01 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/9.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/05/21/is-speech-recognition-finally-good-enough.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/9.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Dynamically Building Custom Grammars </title>
            <link>http://blog.dotnetspeech.net/archive/2007/05/17/dynamically-building-custom-grammars.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;One of my favorite features of System.Speech is the ability to generate custom grammars dynamically. As I've mentioned earler, this took about 50 lines of code in SAPI 5.1. The System.Speech team has included some very nice coarse-grained methods to accomplish this same task in just four lines of code:&lt;/font&gt;&lt;/p&gt;
&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;Protected WithEvents reco As SpeechRecognizer&lt;br /&gt;
Public&lt;/font&gt; &lt;font color="#0000ff"&gt;Sub&lt;/font&gt; LoadGrammar(&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt; options &lt;font color="#0000ff"&gt;As&lt;/font&gt; List(&lt;font color="#0000ff"&gt;Of&lt;/font&gt; &lt;font color="#0000ff"&gt;String&lt;/font&gt;))&lt;br /&gt;
&lt;font color="#0000ff"&gt;    Dim&lt;/font&gt; choices &lt;font color="#0000ff"&gt;As&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt; Choices(options.ToArray)&lt;br /&gt;
&lt;font color="#0000ff"&gt;    Dim&lt;/font&gt; gb &lt;font color="#0000ff"&gt;As&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt; GrammarBuilder(choices)&lt;br /&gt;
&lt;font color="#0000ff"&gt;    Dim&lt;/font&gt; g &lt;font color="#0000ff"&gt;As&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt; Grammar(gb)&lt;br /&gt;
    reco.LoadGrammar(g)&lt;br /&gt;
&lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/8.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/05/17/dynamically-building-custom-grammars.aspx</guid>
            <pubDate>Thu, 17 May 2007 15:34:28 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/8.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/05/17/dynamically-building-custom-grammars.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/8.aspx</wfw:commentRss>
        </item>
        <item>
            <title>System.Speech -- What is it?</title>
            <link>http://blog.dotnetspeech.net/archive/2007/05/13/system.speech----what-is-it.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;I've been lurking on the fringes of speech recognition for quite some time. My first exposure required installation of a dedicated ISA sound card. Yes, it was that long ago. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;As you can imagine, that experience was somewhat less than exhilarating.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;My next go round was with Dragon in 1999 (I think they were owned by Corel at that point). Although the engine took a while to train, and didn't do very well on some of the words I tried to feed it ("Kosovo" comes to mind). However, once you corrected what it thought you had said, the engine worked splendidly. At the time, I was still in the Canadian Forces (Army), so much of what I was dictating invovled acronyms and jargon.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Fast-forward to the summer of 2005. The company I work for (which shall remain nameless for the time being) proposed a project to speech-enable an application in a very noisy environment. I spent a few days researching the various technologies available. Most were either intended for embedded systems, required a lot of specialized knowledge, were expensive, had a C API with no .NET wrapper... or some combination of the above.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Then I found SAPI 5.1 -- the speech recognition API for the engine that ships as part of XP. Talk about an awesome tool! &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;No specialized knowledge -- just give it a list of English phrases in an XML file and it would recognize them all. I even tried it with such esoterica as "Boba Fett" and "Obi-Wan Kenobi". Someone on the SAPI team must be a serious Star Wars geek, because those worked the first time. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;There's lots of other great features in SAPI 5.1 -- but the one my boss liked best was the price... free. I won't dwell on the other advantages, since this is deprecated technology. And, who'd want to use it, now that System.Speech is released?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Of course, nothing is perfect. The documentation was pretty much useless to me. And, not even Google pulled very much from the web.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;So let's talk about System.Speech...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;For those of you who haven't found out about this namespace, it's actually buried in WPF. One namespace each for recognition and text-to-speech. System.Speech sits on top of the SAPI shipped with your OS -- either 5.1 for XP or 5.3 for Vista. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;The team at Microsoft has done a superb job of making speech recognition easy. There's a SpeechRecognizer class that exposes that functionality you need to do basic speech recognition. If you're feeling really masochistic, there's also the RecognitionEngine class. I like to describe this class a SpeechRecognizer's ugly bigger brother -- who will gladly give you more than enough rope to hang yourself.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;As a developer, the part I appreciate most is the inclusion of methods that make my life easy. One of the most graphic examples is in the creation of a custom grammar at run-time. With SAPI 5.1, this took about 50 lines of code -- generating an XML file on the fly, saving it to disk, and loading it into the engine. (Okay, maybe there are better ways to do this -- this was the one I could make work.)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;In System.Speech, this takes four lines of code. With no disk IO operations. This is the sort of improvement that makes my life as a developer sooo much easier.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;If you've ever been interested in speech-enabling your applications, you've really got to look into System.Speech. If you want a hand getting started, you'll just have to wait until the June issue of &lt;a target="_blank" href="http://www.ftponline.com/vsm/"&gt;Visual Studio Magazine&lt;/a&gt; (hint, hint).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.dotnetspeech.net/aggbug/3.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jeff Certain</dc:creator>
            <guid>http://blog.dotnetspeech.net/archive/2007/05/13/system.speech----what-is-it.aspx</guid>
            <pubDate>Sun, 13 May 2007 18:37:19 GMT</pubDate>
            <wfw:comment>http://blog.dotnetspeech.net/comments/3.aspx</wfw:comment>
            <comments>http://blog.dotnetspeech.net/archive/2007/05/13/system.speech----what-is-it.aspx#feedback</comments>
            <wfw:commentRss>http://blog.dotnetspeech.net/comments/commentRss/3.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>