Voice Recognition for a Techie?
kaybee asks: "I am a long-time developer, sysadmin, and general computer junkie (for fun and for work) who needs to seriously curb the usage of his hands. I'm curious as to the current voice recognition options, preferably usable on Linux and Windows. I prefer the command-line to a GUI, I prefer Vim to anything else, and I still read my email with Pine. I'd like to hear options for sending email via voice, which I hope is easy, and I'd love to hear of any solutions that allow effective coding via voice, which seems much more difficult."
Oh, I'm sorry. I thought you said voice recognition for a Trekkie....
Tibbon
tibbon.com
Write it yourself. Grab the Microsoft Speech SDK and WINE or some suitable interoperatibility layer and you should be good for Windows and Linux. The Microsoft Speech SDK doesn't require oodles of code to make it work, so you should be able to get a working sample under Windows in about half an hour. It comes with some rudimentry samples as well, and since it's not released under any particularly binding license you can just build your code around it.
'Course you could go the other way with some Open Source speech recognition and cygwin or similiar.
I'll subscribe to Slashdot when I see a month without a dupe, a typo, or an article the "editors" didn't read.
No, computer, I said, "awk single quote left curly print dollar one right curly single quote file dot txt pipe sort pipe uniq dash see greater than a dot out"
shudder
[...]who needs to seriously curb the usage of his hands.
Lest they... *ahem* wander.
I've actually used some vioce recognition over the years and it's got a lot better than it used to be. last time I used to use a voice recognition software on my computer even though I did loads of the training it just didn't seem to get it; eventually I had to give up... it wasn't cheap either. Whilst I think it will have potential to do a lot in the future I'm just not sure that it's really at the stage where it can be considered a full time replacement; especially for technical jobs
*''I can't believe it's not a hyperlink.''
The main issue I see with coding by voice is that each character needs to be said by a word. We only have 26 single sounds we can make (at least us english speakers) and so pretty much everything besides the basic sounds have to be the result of multiple letters strung together. Here's some math:
Lets say you type at about 40wpm, or about 160characters per minute (this is a low estimate of 4 chars per word), or about 2.5 characters per second.
To be as productive speaking, you'd probabily have to speak about the same number of words per second as you type characters, or 2.5 words. That's really fast.
Sorry bub, doesn't look speech is a very good alternative. Hell, Brain Implants on the other hand...
Voice recognition is good for letter-writing but bad for overall computer usage, especially in UNIX shell (incl vi and especially Emacs). Picking programs that don't require jumping all over the keyboard for basic tasks can reduce the strain. Same goes for programming syntax: Python is a lot more RSI-friendly than Perl, for example. (IMHO) Write scripts that automate routine tasks, even if it's just one line with lots of regex.
Eye won stride to yews voice wreck iginition soft wear tomb ache a slash dot post. Eye was knot imp pressed. It was sofa king we todd did
Seriously, who would choose a voice recognition system over a normal keyboard? Given the problems inherent in understanding human speech, a keyboard is always going to be the superior solution.
Wouldn't he need it to be written in order to write it?
Seriously, if you're suffering hand or arm pain, you should think about the way you're doing things now. Speech recognition is unlikely to replace your current coding practices, although it might help with writing reports.
Instead, try using the keyboard break feature in gnome. To start with, have it kick you off your computer every 30 mins for a 3 min break, and don't allow yourself to postpone breaks. Get some equivalent software for windows too. Use your 3 min breaks to walk around and stretch. Within a week, you won't be a lot less productive, but your arms will feel a lot better. Then you can maybe up it to 40 mins. In the short term, a course of anti-inflams might help (ask your doctor).
Also, don't come home in the evening and play games on your computer, or do more work. Your arms probably can't take it. Equivalently, inform your employer of your condition and subsequent inability to work reckless overtime hours.
These two things should get you started for long-term sustainable maintenance of your arms.
It's been a while since I've had to look into speech recognition for linux, but this link should help you get started: Linux Accessibility Resource Site
Read down to the section about speech recognition. I hope that helps.
My inner self is ineffable, so don't eff with me.
Seriously. Try not using CLI for everything and see if that helps your problem.
Voice recognition is still hit-or-miss.
Don't think that a small group of dedicated individuals can't change the world. It's the only thing that ever has.
For gaming on WinXP, I use an app called Shoot!. While playing Falcon, I use it for fairly simple (press T, wait 5 seconds, press 1) macros. I was dicking around and decided to set up a profile for some simple stuff in Cygwin. If I say "list", the program returns "ls". "List all" will return "ls -a". "List all long" will return "ls -la".
You can, with some tweaking, even get it to understand complicated stuff. If I say "manual g r u b", I can get "man grub". "Vi save quit" could be mapped to ":wq" without too much trouble.
Anything you can type, it can do.
I don't think it works under Linux. I don't know of anything like it under linux. It does, however, work quite well inside PuTTY.
I'd rather you do it wrong, than for me to have to do it at all.
http://cmusphinx.sourceforge.net/html/cmusphinx.ph p
no idea how to use it, but you're such a techie, you'll surely figure out..
Java-based speech recognition. 'nuff said.
..please infringe a patent of your choice
"I'd like to hear options for sending email via voice, which I hope is easy, and I'd love to hear of any solutions that allow effective coding via voice, which seems much more difficult."
I've wondered about this myself. I tend to use my computer with the headphones on. Often, I'm listening to music or.. well just plain silence, just the standard dings of Windows. I do pay attention, though, to the sounds coming from the computer. (i.e. the traditional hoo-hoo of recieving an email.) I've always wondered about what more could be done with sound to make the user more aware of the goings on with their computer, especially when a number of apps are actively working. I think I was inspired by an episode of Futurama I caught. One of the character's personalities was in the Pilot's body. The Pilot, whose personality was in yet another body was trying to describe how to interact with the ship. I remember him saying "Can you hear that faint little tone? That's the status of..".. or something or other.
In any event, it's fun to imagine. I wouldn't mind if a soft low-volume voice were to say "You have recieved an email from: John Smith." I had a job a few years ago where that would have been a nice little feature since messages would come in that required urgent attention. My solution to the problem at the time was to use a custom filter that would specficially notify me of important messages by bringing a little window up to the surface. That was fairly annoying, though, when the computer was busy and it was slow as molasses to get the window to go away.
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
Yea, you've ever talked dirty to your computer and felt as if the feelings are not mutual?
I hope better voice recognition and TTS will resolve that.
I ran into this problem while working (coding) & trying to do grad school (in Comp Sci). The first point I'd make is, take a rest break (no computer use) for a while if you can. ASR isn't really there yet, & it won't help you with other things you might want to be pain-free for... seriously. That said, there is a group called "Open Source Speech Recognition Initiative" whose mailing list I'm on, but they don't have any product yet. Might get a better answer posting there, though. Or not. There's also a group on Yahoo (I think) called VoiceCoder. That's your best bet right now, although it's all about Dragon Naturally Speaking & various hacks & kludges to be able to do coding, use Dragon for Linux, etc. Dragon has been reported to run under WINE, but of course YMMV depending on your hardware, versions, etc., etc. Finally, whatever approach you try, expect it to take a good long while before you begin to approach your hand-using productivity. The technology isn't there yet, and even though I know how to improve it, I have no Ph.D. so no one would give me the $$ to do the research that could back up my claim.
nificant.
http://perlbox.sourceforge.net/
http://cmusphinx.sourceforge.net/
Command and control is a lot easier to do with voice recognition since the dictionary the engine has to choose from is so much smaller. Having voice recognition engines understand arbitrary words well is still a bit difficult.
You just want to send email without typing? Record an MP3 and just email it off??? You'll have to do a few clicks but not too many one would think...The recipient can just listen to it. Yes, large package size, who cares? If the people getting your email know in advance that you are having probs with your hands and fingers, they will either understand and put up with it, or they really aren't your friends.
I don't know the state of the art, but dragon naturally speaking and such like programs are out there now, for dictation, to use for email or whatever, maybe that is what you want to keep it to text-only.
A long time ago I had a mac classic program that would open and run applications with voice, it worked well, too, but I can *not* recall the name of it right this second. someone else might remember it though.
Coding, no idea, hire some neighbor kid cheap to type for you while you talk, they should pick up on it quickly enough...
I was looking to make a headless system that I could bark commands at, and I was quite sucessful at developing my own actually. I used IBM's ViaVoice SDK and modified a few of the sample programs they had that were written in C. It took a little work getting the system running, it being a tad old and all, but eventually got it down to where it was completely useable and could make requests like "new mail" and "talk to me dirty". Oh and yes, it was a Linux system it was running on (Slackware 8).
Google it.
A new and inovative input device has had some positive reviews floating around the net lately. It's called AlphaGrip and is basically a keyboard mapped onto a large game controller (with a track ball to boot). I ordered one a few days ago so I don't have first hand experiance with it yet but the reviewes come from some reputable sites (linked below). It clames to allow 50-wpm with only 30 hours of training. I'm not so sure about that but I'm willing to find that out for myself. Sorry for the short post but I'm eating a pizza with one hand and typing with the other and I have to be to work in five minutes and my wrist is killing me. http://www.extremetech.com/article2/0,1697,1949084 ,00.asp
http://www.alphagrips.com/ product page with live demonstratio0n video
Ah, di fish da Bibble!?!
Technically, it's "speech recognition".
Obviously, what we need is a voice recognition algorithm with Phonetic Punctuation support built in.
Of course, we will have to extend it - Victor Borge didn't have sounds for #, < or > - but I'm sure we can come up with something.
Of course, some programming languages will be better than others - Ada will sound almost normal (other than having to bark out all the words in your best Drill Instructor parade voice), while Perl.... you'll need a good sock on the mike to keep the spit out, and people will think you have Tourette's.
www.eFax.com are spammers
First, find a solution that makes it easy to enter text into a GUI (gnome accessibility, WINE w/dragon natural speaking, whatever).
Find a subset of words that are short, easy to remember, easy to say, and above all -- accurately translated by the chosen voice recognition software.
Then create a small perl script that can take this coded input and convert it into a nicely formatted chunk of code.
You can have different translators for different target languages... for example
In shell programming, you might have the following:
hash -> #
bang -> !
pipe -> |
test -> [
end test -> ]
mark -> '
quote -> "
end mark/quote (keeps them balanced for shell scripts)
for identifiers... don't name them. For example, lets' say you wanted to do this:
#!/bin/bash
function hello_lcase {
HELLO = $1
if [ -z $HELLO ] ; then
echo "Hello world"
else
echo -n "Hello from "
echo $HELLO | sed -e 's/.*/\L\0/'
fi
}
you would say:
hash bang slash bin slash bash
new function 1
set local 1 ref in 1
if test empty ref local 1 end test
then
echo string 1
else
echo option n string 2
echo ref local 1 pipe program s e d option e space
mark s slash dot star slash back upper l back 0 slash end mark
end if
end function 1
you'd run the perl script and it'd ask you:
what do you want to call function 1: foo
what do you want to call local variable 1 in function 1: HELLO
what do you want to use for string resource 1: Hello World
what do you want to use for string resource 2: Hello from
and it'd output the script (maybe after running through indent)
You could substitute "1" for any easily recalled mnemonic or symbol the text->speech translator is unlikely to mistranslate (in this case "foo" and "hello" would probably be fine as is)
Then you'd get a chance to globally "refactor" your symbols and give them nice-looking names, only having to type them once.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
I just did a presentation on speech recognition software for the Office of Disabilities Services at my school, and since I see that you have a lot of response on the technical aspect of it, I'd like to bring up something else: how speaking to the computer affects *you*. One of the things that most surprised me about using speech recognition is how speaking comes from a different part of the brain than typing. Composition through speech is *very* difficult to start; don't think you're going to just dive in and compose an essay or report right off the top: even if the computer can understand you, you won't be able to coherently phrase your thoughts in a truly professional manner. Speech recognition is at its best when used for email and (ironically, at least I thought) instant messaging, because these forms of communication most accurately mimic speech. I don't know how it's going to affect coding, though, 'cause I wasn't brave enough to try that (but I can only imagine it would be difficult). I just wanted to offer a slightly differerent perspective on it. It certainly seemed like I was using different neural pathways or *something*, so just remember: as much as you're going to be training the speech recognition profile, you're going to be training yourself, as well!
The speech recognition out there may not be useful enough to work well under current CLI environments. But why do we need to use the same old CLI, and the same old programming languages? Why not work instead on developing programming languages and programming environments that are better tuned for use with input by speech recognition.
When GUI interfaces first appeared, their design paradigm was a distinct departure from the old modal interfaces that had dominated before the GUI. Modality never went away. It is the right tool for certain problems. GUI interfaces, GUI frameworks, and GUI applications are the right tool for other problem sets. Why not re-frame programming frameworks, application design, and administrative frameworks again for use with input by speech recognition?
Don't get too discouraged by the large number of commenters who haven't used speech recognition or who don't understand why someone might need to lay off the keyboard for a while. I wrote 100k lines of C++ code hands-free for my astronomy thesis over the course of two years, using with speech recognition software that is now about 10 years out-of-date. There have been significant improvements in both the speech recognition technology and tools for coding by voice since then. For coding, take a look at the VoiceCode project at http://voicecode.iit.nrc.ca/VoiceCode/public/ywiki .cgi
For other tools/approaches to coding by voice, see also the VoiceCoder group at yahoo groups:
http://groups.yahoo.com/group/VoiceCoder/
I don't know of any open-source or non-commercial dictation software which matches the accuracy and ease-of-use of the Dragon NaturallySpeaking (fair warning - I work for Nuance, which makes Natspeak, though I was a user long before I became an employee). Natspeak is only available for MS Windows, but you can always put a Windows box on your desk and connect to a unix host via an X server (exceed, xwin32). That generally works well for command-line stuff, not so great for GUIs (but you say you prefer command-lines anyway).
Parent makes a good point and presents an alternative to the MS speech SDK as the submitter asked. Is it because he said "wine shit"?
Had he said "with no need for wine" would you have modded him down?
Even if he said "wine is shit", just because you don't agree with an ON TOPIC, informative post is no reason to mod it down. Read the moderator guidelines.
You can mod this down too if you like.
Stack overflow: pid 352258, proc httpd, addr 0x11f7ffff0, pc 0x12000195c Segmentation fault (core dumped)
After my last appointment, I tried to avoid the internet, but I went and checked my email and before I knew it I'd spent 6 or 8 hours on the computer. Arms all inflamed, etc etc.
The writer who asked the question has a bonfire going in his arms/shoulders/wherever. Most the usual suggestions for "RSI" won't do anything to deal with the "stack of wood" (trauma/structural misalignments/etc) that creates the conditions for the bonfire to thrive.
Also see my comments in this thread (be sure to follow the link to my comments in an earlier story), and perhaps others I've made in the last year (buy a subscription).
Learn the rules so you know how to break them properly.
www.teslabox.com
For something that runs on Linux directly, you might have a look at the Accessible Speech Recognition Technology software. It's a research project, not a polished system, but you might be able to hack it to do what you need.
In the UK the terms are different. Over here the process to which you are referring (having a computer hear, understand and interpret words being spoken to it) is called "Speech Recognition". This process is very tough because the machine needs to be trained by the individual doing the speaking - there are differences in dialect, accent, timbre, pitch, all kinds of voice attributes which can throw the machine off course.
OTOH, "Voice Recognition" is used to describe the process of taking a voice sample and comparing it with previously analysed voice samples to provide a means of authentication. The very attributes listed above which make automated speech recognition so difficult make voice recognition possible.
To answer your question: speech recognition is still way too flaky to be used in something which requires such precision as systems management, but the casual end user can probably get away with it. Since you use the CLI a lot you should find that any sort of speech-based input is really going to slow you down.
Burns: We're building a casino!
McAllister: Arrr. Give me 5 minutes.
I seriously doubt that WINE supports the speech API. Last I heard only the most commonly used elements of win32 were supported. Maybe someone more familiar with WINE would care to comment.
xvoice is a gtk1 X application which uses IBM's ViaVoice engine to provide voice control and dictation support to arbitrary X applications. xvoice.sf.net is the url. The mailing list mainly covers issues of getting the ViaVoice libs working on modern distributions. The last release of VV was around the glibc2.0/2.1 era and most new ld.so's will struggle to execute the libraries and java dependancies. It's also fairly hard to buy a copy of VV 2nd hand anywhere and IBM appear to ignore any request to release it.
However once you get past all of these issues (actually even running the old gtk1 xvoice becomes hard on modern dists), it works a charm. As it's X clean, you can X to any X server, be it one run under OSX or Windows, or a Sun SPARC box. You just need the mic connected to the x86 Linux box the client runs on.
This meets your requirement for editing in vim etc. The accuracy, I found was fantastic.
I'll Ike's peach recognition all hot. Hits deaf finite Lisa free king she tune awe wad aim in. Soon Hampshire wheel used at took converse hate tuna Delhi basis. Him a gin bee ink ape able loft haul King Kong chats norm ally a Zeus aim thai mass Jah king of. the hill Harry you sand dumb harass Sing Sing whool after behaving the peep hole gay thing York raze him ownings trains crypted, dead Bill Ike wad deaf hock.
You just got troll'd!
It's possible to recognize speech pretty well (and no, the ridiculous examples of "I'll Ike's peach recognition all hot" don't really happen for any reasonable engine that uses language models, and most of them do these days).
... delete ... delete ... replace Yesterday with Monday" (while it's possible to recognize "replace X with Y", you still have to be pretty focused not to say anything else).
The main problem is that no one actually speaks or writes as eloquently as people present speech recognition.
Try this experiment: map backspace, delete and arrow keys to @ and try to write a letter or some code. You'll quickly give up. When you see demos of speech recognition, you never hear someone saying "Yesterday I went to the cinema. umm Monday actually. Ha, look the computer is still writing. Oh boy... delete delete delete delete
The missing bit is the intelligent dialogue that is redundant when you type. When you type, you have arrow keys, control keys and backspace. When you talk, these things are part of the communication, and writing an intelligent dialogue system is not trivial. If you want another experiment for the limits of speech recognition, just try whatever you want a computer to do with a real person. Try to dictate code to someone, and you'll soon find that it's not that simple. A person can even ask at the right time "empty brackets?" after you say a function name followed by a semi-colon, yet it's still very difficult to dictate code (or even a letter without any corrections).
There is another problem: Imagine that you type away, and suddenly you see that you've forgotten a semi-colon. But as you're writing a game, you have the constants UP, DOWN, LEFT and RIGHT. Hmmmmm.... Now you have to change your code (or the code you've downloaded) to suit the interface. Not good. Another option would be "missing semi-colon at the end of the line beginning with strcpy", but you need a very intelligent dialogue system for that.
Note: I've assumed that the recognition is perfect (and the problem is with our brains), but of course it isn't.
Some early post suggested the MS Speech API/SDK. There is that, and for general correspondence (ie, nothing in particular), it's pretty good.
There's also Sphinx from Carnegie Mellon. I think IBM also recently released their source code for one of their engines (not Via Voice, though).
You still might be able to get Dragon for Windows, but I don't think there is a *nix version. I could be wrong... after all, Dragon created a speech recognition language library for Klingon, so they might have stuff for *nix and coders.
Philips might have binaries available for *nix. I'm not sure if it's available for single users or if you have to pay licence-until-grave fees. I'm also pretty sure there isn't a coder's language library.
Coding would actually be an excellent language library: there is a relatively limited vocabulary for coding and it occurs in reasonably predictable environment. But, there isn't a demand yet.
You will have to hack around whatever solution you get. The first hack will be to get it to cooperate in Windows and in *nix. The next hack will be teaching it "coders language". I don't think either is trivial.
Or, you could spend less time at the keyboard.
Good luck!
Yep, stop playing games, and get right with your keyboard. That means GET A GOOD CHAIR. A good steno chair, which will set you back $200. No arms. Back support.
.01% more damage each day than you heal, and someday you simply won't have hands. So heal as much or more each night, and slowly you'll get better.
Mouse as little as possible.
Anti-inflamatories are your friend. Much of what's happening to your hands is your own body's doing.
You need to be able to heal over night as much as you do damage during the day. Do
Eat a little more amino acids or protein or whatever your doctor says gives you easy access to building blocks for healing.
One deal here is that you're scared. You're in danger of losing your job/life's vocation etc. Fear causes stress, and stress SLOWS DOWN THE HEALING PROCESS.
So relax, and have confidence that things will get better. Take a LOT of ibuprofen, and have a liver function test if you wind up doing that for months (under the supervision of a doctor).
Yoga, meditation and other pleasant things will reduce your stress level. Embrace them.
The first thing to realize is that you're going to be OK. You're going to do what's necessary, and it'll be less than you imagine. It's just going to take some time. After all, if your healing process was VASTLY (say 5%) worse than your damaging process, you'd have been laid up after a few weeks of typing. So you don't have to make many changes for the good to eliminate this probelm in a few months.
Keep in mind that variants and dialects of English can vary quite a bit, and the book itself says some speakers may be missing a few of the phonemes.
With, of course, the classic case of cot, caught, and bother, which are defined with three different phonemes, but where the average person in the use uses only two of them based upon region.
This sig has absolutely no significance and serves only to take up screen space and waste the time of the reader.
Software sucks. Open Source sucks less.
A few years ago (ahem... 1996-1997) when VR became the big business buzz I was tasked with implementing a pilot project for a large government organization. The goal was to get rid of stenographers and have extremely-highly-paid analysts do their own bottom-of-the-pay-scale transcription. Keep in mind it was government -- which meant that most of the people in these positions were 50+ and many had never learned how to type, and only started using computers because my prior big project forced them to.
Almost everyone abandoned the VR for various reasons... out of over 250 users, I think only 2 used the systems for more than a month or two. The error rate was within spec (around 95% after training) but in a page there would still be 15-20 errors that needed proof-reading and correction. Never mind the speed issues as well as background noise, answering the telephone etc.
The main point of this post is that a several people started to get problems with their voice -- sore throats and loss of voice -- after only a short while using VR. This was particularly alarming given that it was specifically targeted at one of these people due to RSI in her hands from typing.
The reason given was that in order for the computer to be accurate, people were forced to speak in a measured monotone, quite different from regular speech or using a dictaphone. This stressed people's vocal cords, some to the point where they suffered temporary voice loss for several days.
My advice: vary your speaking tone, don't dictate for more than say 30 minutes straight before taking a break, and drink lots of water. It would really suck not being able to type or speak.
Some folks might remember that OS/2 Warp 4 (September 1996) was released with both IBM voice navigation and IBM voice dictation technology as part of the standard package.
The initial product package even included a headset microphone in the box.
Not many people used it, and at that point in time it required some initial training to use in an effective manner (it had to learn each person's pronunciation habits), but there were still a few folks I knew that got a lot of mileage out of the technology at the time.
I wonder why industry focus has fallen away from such tech? Is it that useless in the real world?
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
http://freshmeat.net/projects/speechlion
Dragon version 8 made major improvements in recognition. The preferred version will read out loud. My wife has neck and shoulder problems, Dragon allows her to use a computer reasonably well. They have ratings for different microphones, I sprung for 5 Dragon usb mic. Doesn't make sense to cheap out after the software's installed. We got an upgrade offer after giving up on Dragon many versions ago. The version 8 release is actually worthwhile.
Each time speech recognition gets mentioned on /. I see comments about how it doesn't work, or comments on ViaVoice. I am continually amazed at the lack of comments on DNS. DNS8 is a fantastic product with full command and control, auto-punctuation, and almost no training needed. The accuracy is high its hard to demo the slick correction tools; you really need to slur your speach to force it to mis-recognize. Unfortunatly there is no MAC or Lunix support. If you want it, please let the management http://www.nuance.com/naturallyspeaking/support/ know. No work will be done unless there is a buisness case for it.
Also watch for the DNS9 beta starting soon.