<p>I'm really interested in speech-to-text algorithms, but I'm not sure where to start studying up on them. A bunch of searching around led me to <a href="http://cslu.cse.ogi.edu/HLTsurvey/download.html" rel="noreferrer">this</a>, but it's from 1996 and I'm fairly certain that there have been improvements since then.</p>

<p>Does anyone who has any experience with this sort of stuff have any recommendations for reading / source code to examine? Or just general advice on what I should be trying to learn about if I want to get into the world of writing speech recognition programs (sometimes it's hard to know what to search for if you don't have much knowledge about the domain).</p>

<p>Edit: I'd like to do something cross-platform, but for the moment I'd be targeting linux. </p>

<p>Edit 2: Thanks csmba for the well-thought out reply. At this point in time, I'm mainly interested in being able to create applications that allow automation, or execution of different commands through voice. So, a limited amount of recognizable commands being able to be strung together. An example would be a music player that took commands like "Play the album Hello Everything by Squarepusher", or an application launcher that allowed the user to create voice-shortcuts to launch specific apps.</p>

<p>I realize that it's a pretty giant problem, and that I have nowhere near the level of knowledge required right now to tackle implementing an entire recognition engine, although the techniques involved with doing so fascinate me, and it is something I'd like to work myself up to doing. In all likelihood, I'll probably end up picking up a book or two on the subject and studying up / playing with "simple" implementations in my free time.</p>

[{'answer_id': 14849, 'author': 'rptony', 'author_id': 1781, 'author_profile': 'https://Stackoverflow.com/users/1781', 'pm_score': 0, 'selected': False, 'text': '<p>What platform are you targeting ?. There is <a href="http://www.microsoft.com/speech/speech2007/default.mspx" rel="nofollow noreferrer">Microsoft Speech APIs</a> that you can use if its for windows. </p>\n'}, {'answer_id': 14851, 'author': 'Derek Park', 'author_id': 872, 'author_profile': 'https://Stackoverflow.com/users/872', 'pm_score': 2, 'selected': False, 'text': '<p>I would definitely recommend picking up <a href="http://www.amazon.com/s/ref=nb_ss_b?url=search-alias%3Dstripbooks&amp;field-keywords=speech+recognition&amp;x=0&amp;y=0" rel="nofollow noreferrer">a book</a> or two if you are new to the field.  I\'ve got no experience in the field, so I can\'t make a recommendation.  If you are still in college (or still have close ties), you should find out if any of your professors can make a recommendation.</p>\n\n<p>The survey you linked is probably an excellent resource, too.  I\'m sure there have been advancements since 1996, but the basics are unlikely to have fundamentally changed.  If the survey is well-written, then it would be well worth your time to read it.</p>\n'}, {'answer_id': 14855, 'author': 'Adam Haile', 'author_id': 194, 'author_profile': 'https://Stackoverflow.com/users/194', 'pm_score': 2, 'selected': False, 'text': '<p>For OS X check out this: <a href="http://developer.apple.com/documentation/MacOSX/Conceptual/OSX_Technology_Overview/AppTechnology/chapter_5_section_3.html#//apple_ref/doc/uid/TP40001067-CH270-TPXREF174" rel="nofollow noreferrer">OS X Speech Technologies</a></p>\n\n<p>For Windows check out this: <a href="http://www.microsoft.com/speech/speech2007/default.mspx" rel="nofollow noreferrer">Microsoft Speech API</a></p>\n'}, {'answer_id': 14901, 'author': 'Craig', 'author_id': 1611, 'author_profile': 'https://Stackoverflow.com/users/1611', 'pm_score': 2, 'selected': False, 'text': '<p>I have worked with <a href="http://www-01.ibm.com/software/websphere/products/mobilespeech.jsp" rel="nofollow noreferrer">IBMs ViaVoice product</a>.  It has a good ASR (automated speech recognition) engine, and a nice text-to-speech engine.</p>\n\n<p>The websites not very good, but this is a link for the Embedded version <a href="http://www-01.ibm.com/software/voice/support/" rel="nofollow noreferrer">http://www-01.ibm.com/software/voice/support/</a></p>\n\n<p>It is platform agnostic though, and everything works through a MVC architecture using vxml a variant of xml for voice purposes.</p>\n'}, {'answer_id': 14908, 'author': 'csmba', 'author_id': 350, 'author_profile': 'https://Stackoverflow.com/users/350', 'pm_score': 4, 'selected': True, 'text': '<p>This is a HUGE questions, I wouldn\'t know how to begin... So let me just try giving you the right "terms" so you can refine your quest:</p>\n\n<p>First, understand that Speech Recognition is a diverse and complicated subject, and it has many different applications. People tend to map this domain to the first thing that comes to their head (usually, that would be computers understanding what you are saying like in IVR systems). So first lets distinguise the concept into the main categories:</p>\n\n<p><strong>Human-to-Machine:</strong> Applications that deal with understanding what a human is saying, but the human knows he is talking to a machine and the <em>grammar</em> is very limited. Examples are </p>\n\n<ul>\n<li>Computer automation</li>\n<li>Specialized: Pilots automating some controls for example (noise a huge problem) </li>\n<li>IVR (Interactive Voice Response) systems like Google-411 or when you call the bank and the computer on the other side says "say \'service\' to get customer service"</li>\n</ul>\n\n<p><strong>human-to-human</strong> (Spontaneous speech): This is a bigger, more complex problem. Here we can also break it down into different applciations:</p>\n\n<ul>\n<li>Call Center: conversation between Agent-Customer, phone quality, compressed</li>\n<li>Intelligence: radio/phone/live conversations between 2 or more individuals</li>\n</ul>\n\n<p>Now, Speech-To-Text is not what you should be saying that you care about. What you care about is solving a problem. Different technologies are used to solve different problems. See an overview <a href="http://knol.google.com/k/csmba/speech-analytics/2p76v0g9rhval/3#" rel="nofollow noreferrer">here</a> of some of them. to summarize, other approaches are Phonetic transcription, LVCSR and direct based.</p>\n\n<p>Also, are you interested in being the PHd behind the technology? you would need a Masters equivalent involving <em>Signal processing</em> and probably a PHd to be cutting edge. In which case, you will work for a company that develops the actual <strong>speech engine</strong>. Companies like Nuance and IBM are the big ones, but also Phillips and other startups exist.</p>\n\n<p>On the other hand, if you want to be the one implementing applications, you will not be working on the engine, but working on building application that USE the engine. A good analogy I think is form the gaming industry:\nAre you developing the graphic engine (like the Cry engine), or working on one of several hundred games, all use the same graphic engine?</p>\n\n<p>Don\'t get me wrong, there is plenty to work on the quality of the search also outside the IBM/Nuance of the world. The engine is usually very open, and there are a lot of algorithmic tweaking to be done that can dramatically affect performance. Each business application has different constraints and cost/benefit function, so you can make experiments for many years building  better voice recognition based applications.</p>\n\n<p>one more thing: in general, you would also want to have good statistics background the lower in the stack you want to be.</p>\n\n<blockquote>\n  <p>At this point in time, I\'m mainly interested in being able to create applications that allow automation</p>\n</blockquote>\n\n<p>Good, we are converging here... Then you have no interest in "Speech-to-Text". That buzzwords takes you to the world of full transcription, a place you do not need to go to. You should be focusing on some of the more Human-to-Machine technologies like Voice XML and the ones used in IVR systems (Nuance is the biggest player there)</p>\n'}, {'answer_id': 27101844, 'author': 'Israel Varea', 'author_id': 2119009, 'author_profile': 'https://Stackoverflow.com/users/2119009', 'pm_score': 0, 'selected': False, 'text': '<p>There is also the <a href="http://developer.android.com/reference/android/speech/SpeechRecognizer.html" rel="nofollow">Speech Recognition Service</a> for Android.</p>\n'}]
['https://Stackoverflow.com/questions/14837', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/242853/']