I am making a Smart House Control System right now, and I have a little problem.
I was thinking on using Cosmos for a base system, and adding the needed namespace libraries to it, but as the usual System.Speech.Recognition namespace depends too much on Windows Speech API, I have to forget about using it.
So my question is, is there any (free if possible) voice recognition and/or speech speech synthesizer library for C#, what has the following:
support for multi-language speaking
extracting text content from speech sample
synthesizing speech with selectable (or user-written) speech pattern (voice)
A general usage, non-windows dependent library would be the best, and of course, if it was free too.
Voxeo offers developer accounts which you could use to develop a speech powered home automation system. I've interfaced it to my own home automation system for a small subset of the commands my home understands and it works great. You'll need to learn some VoiceXML to use it.
SAPI works OK for voice synthesis; I use SAPI in my system for spoken prompts in the house like a weather forecast that comes over the speakers in the morning when you walk into the bathroom. If Cosmos doesn't allow you to include all the DLLs you need maybe you could create a separate service using SAPI and then use WCF (or other) to communicate between them??
For the related problem of understanding natural language in a typed form I've developed a C# NLP Engine which I hope to be able to make available for non-commercial at some point in the future.
Extracting text from speech without specifying any grammar up-front is a very hard problem and is going to be error prone. Even if you could solve that, you'd still have the problem of trying to understand what they said using NLP. Constructing a grammar that guides the recognizer to the kinds of sentences you want to recognize (like VoiceXML does) is likely to achieve much higher accuracy.
Check out this project: http://cmusphinx.sourceforge.net/
It's an open source speech recognition project. It is trainable with any language you want plus since its open source you can modify it to suit your needs or expand it.
Related
I'm not sure if it is possible but anyway,
I use using System.Speech.Recognition; in winform C# app.
I'm wondering if it is possible not only to recognize speech, but also recognize voice, somehow recognize difference between different voices
to get something near to reading of multiply content from each separate voice, for example from two simultaneously or separately speaking users as different two.
Or at least maybe some method to control background loudness, for example if AudioLevelUpdated event allows me to see input volume, but maybe also exist some specific way to separate loud voice from extra noise or voices in background
System.Speech.Recognition will not help you in voice recognition.
System.Speech.Recognition is intended for speech to text. Adding grammar to it improves its efficiency. You can train the Windows desktop for better conversion. Refer Speech Recognition in Control Panel.
There are couple of 3rd party libraries available for voice recognition.
For removal of noise, you can refer Sound visualizer in C#.
You can find an interesting discussion at msdn forum.
I think you should take a look at CRIS which is part of Microsoft Cognitive Services, at least for you question about noise.
CRIS is a Custom Speech Service and its basic use is to improve the quality of Speech-to-text using custom acoustics models (like background noise) and learning vocabulary using samples.
You can import :
Acoustic Datasets
Language Datasets
Pronunciation Datasets
For example in acoustic models you have:
Microsoft Conversational Model for recognizing speech spoken in a conversational style (i.e. speech directed at another person).
Microsoft Search and Dictation Model for speech directed to an application, such as commands, search queries or dictation.
There is also a Speaker Recognition API available in preview
I am good programmer but I am new for Robotics. I want to make small project which will recognize my speech and my light on and off.
Please provide me some reference library for all things.
What kind of hardware I need for it.
If you are new to Robotics I would diffiently recommend you to check out the Arduino device. The Arduino device is an easily programmable circut board. You can read more at http://www.arduino.cc
Regarding Speech recogniztion you could use Microsoft Speech recogniztion software, which allows you to communicate with your app via. An library. Find out how to install it here: http://support.microsoft.com/kb/306537
The example given in your comments of saying "Lights Off" to turn a light off in a room sounds more like home automation than robotics. I would look at the open source project called Mayhem on CodePlex. This applications makes it easy to wire events with actions using plug in modules and was developed by Microsoft Labs. Modules are easy to develop and it comes out of the box with an event module for speech recognition. You just configure an event for speech recognition by telling the app what phrase you are looking for like "Lights Off". There is already an extensive list of add-on modules for Mayhem, and one of them is a reaction module for Insteon devices. This add-on module lets you control INSTEON-brand lighting and home automation devices. There is also a PhidgetsModule which allows you to control Phidgets, a set of "plug and play" building blocks for low cost USB sensing and control from your PC. Microsoft had a contest to encourage developers to create new add-on modules and you can see a demonstration here of a module called RemoteCommand which shows how you could use speech recognition over a telephone to remotely control your home.
I'm looking for speech (wave files) to text on windows server 2008 (or win server 2008 r2) using c# (at least an api that i can call from c#) that supports multilanguage.
As far as i know i can't use .net speech (sapi) because it works only on vista \ windows 7.
I can't use Microsoft Speech Platform because it not supports all the languages i need (as far as i checked there is no Hebrew (he) support).
It can't be a web based service (i need it on my server).
I'm looking for something that can be used in commercial software and i'm also willing to pay for a third party product.
Can you please help me with that?
Thanks
You have text-to-speech listed as a tag but the description sounds like speech recognition. If I understand what you want to do it is to take a wav file with speech in it and convert it too text. Actually this is not even normal speech recognition because most of the speech reco systems work on targeted speech input that use grammars to restrict the search space that the speech engine has to use. I think what you are describing is automatic translation or transcription, akin to what Google Voice does to your voice mail messages when it sends you a text translation in an email. This is a much more difficult problem and the state-of-the-art is not that advanced right now. Most of these solutions are offered as services and the best ones still use human translators when the speech recognition confidence rate is low. I think the leader in this area is Nuance. I would check with them for a solution. I know they recently bought out a company that provides this automated transcription service and perhaps they now offer it as a product. They are also a leader in transcribing doctors orders/findings automatically to text with their product Dragon Naturally Speaking.
So, you've all probably seen Iron Man where Tony interacts with an AI system called Jarvis. Demo clip here (Sorry it's a commercial).
I'm very familiar with C#, C++ and Visual Basic, but I am unsure what options I have available for me to program something like this. Ideally, I'd like to have it assist me while working on some projects by automating a few things.
After doing a bit of research, I saw that a lot of people where using apple script. Well, I'm a windows developer and I work on windows, SO, that won't work.
Microsoft has a Speech SDK, but I hear that I can't program it to learn custom words... as in it just uses it's standard library. Is this true? What are the other limitations of speech recognition with the SDK? Is there something else then?
Also, which language would be better to use for a project like this? C# or VB?
The .NET 3.0 System.Speech.Recognition namespace has very elegant .NET wrapper classes around the SAPI SDK. Including the Grammar class to customize the recognition. As usual, any .NET enabled language can take advantage of it, the specific language doesn't matter.
I am making a robot that responds to few voice commands. I am using Windows XP and C# to achieve that. My only problem is that I don't know how to use speech recognition with C#.
I've been searching Google and MSDN, but I did not find any beginner friendly tutorial yet..
Any suggestions??
Also, I know -from my experience with windows' speech recognition in M$ word- that I need to train the computer before starting the speech recognition application. This may cause a big problem for me because I may need to present my robot using different computers/or/different people may be the presenters.
So is there any way to make a predefined list of words that any user can say to the application without having to train it first???
Thanks for help!
Yes, you'll have to train anything that uses pattern recognition to respond to things. In Philadelphia, they pronounce "water" as "wudder". How could an algorithm figure that out? A predefined list would require you to have a working knowledge of every accent in the target sales countries.
SAPI 5.4 in Windows 7 does a very good job of recognizing limited command & control grammars without training.
If you keep your command set (grammar) small (say, no more than 10-15 commands), you should be able to get good results.
Dictation or a large command set requires training; there's just too much uncertainty.