Voice Recognition Software For Developers

29

Solution 1

It's out there, and it works...

There are quite a few speech recognition programs out there, of which Dragon NaturallySpeaking is, I think, one of the most widely used ones. I've used it myself, and have been impressed with its quality. That being a couple of years ago, I guess things have improved even further by now.

...but it ain't easy...

Even though it works amazingly well, I won't say it's an easy solution. It takes time to train the program, and even then, it'll make mistakes. It's painstakingly slow compared to typing, so I had to keep saying to myself "Don't grab the keyboard, don't grab the keyboard, ..." (after which I'd grab the keyboard anyway). I myself tend to mumble a bit, which didn't make things much better, either ;-). Especially the first weeks can be frustrating. You can even get voice-related problems if you strain your voice too much.

...especially for programmers!

All in all, it's certainly a workable solution for people writing normal text/prose. As a programmer, you're in a completely different realm, for which there are no real solutions. Things might have changed by now, but I'd be surprised if they have.

What's the problem? Most SR software is built to recognize normal language. Programmers write very cryptic stuff, and it's hard, if not impossible, to find software that does the conversion between normal language and code. For example, how would you dictate:

if (somevar == 'a')
{
   print('You pressed a!');
}

Using the commands in your average SR program, this is a huge pain: "if space left bracket equal sign equal sign apostrophe spell a apostrophe ...". And I'm not even talking about navigating your code. Ever noticed how much you're using the keyboard while programming, and how different that usage is from how a 'normal' user uses the keyboard?

How to make the best of it

Thus far, I've only worked with Dragon NaturallySpeaking (DNS), so I can only speak for that product. There are some interesting add-ons and websites targeted for people like programmers:

  • Vocola is an unofficial plugin that allows you to easily add your own commands to DNS. I found it essential, basically. You'll also be able to find command sets written by other programmers, for e.g. navigating code. It's based on a software package written in Python, so there are also some more advanced and fancy packages around. Also check out Vocola's Resources page. (Warning: when I used it, there were some problems with installing Vocola; check out the newsgroup below for info!)
  • SpeechComputing.com is a forum/newsgroup with lots of interesting discussions. A good place to start.

Closing remarks

It seems that the best solution to this problem is, really:

  • Find ways around actual coding.
  • Try to recover. I'm somewhat reluctant to recommend this book, but it seems to work amazingly well for people with RSI/carpal tunnel and other chronic pain issues: J.E. Sarno, Mindbody prescription. I'm working with it right now, and I think it's definitely worth reading.

Solution 2

I dictate VB.net and TSQL using Dragon NaturallySpeaking 10 Professional. VB.net is inherently closer to a "spoken" language, but I don't see any reason why it couldn't work for C# or others. I start with a completely empty vocabulary, and build it from scratch to suit my needs (which is why I use the professional version).

Here's the basic steps (this assumes you have already created and trained a user):

  1. Create a new vocabulary based on "Base General - Empty Dictation".
  2. Don't have it scan your documents or email.
  3. Add lists of keywords with pronunciation specific to your programming language (Dim, ByVal\by-val, etc.).
  4. Create a .txt document that contains all of your code minus comments.
  5. Harvest words from this document and add them with pronunciations.
  6. Use the document to train the vocabulary's language model.

I'll write up something with more detail when I get a chance if anyone is interested.

Edit:

Here's how to dictate SQL code. The word list created here can be included in other vocabularies if you are a database developer.

Solution 3

Check out Using Python to Code by Voice.

Solution 4

Another idea is to find another good developer to pair program with. It worked really well for me. I get to rest my hands without necessarily slowing down, end up producing better quality code - or at least not having to review as much of it.

Solution 5

For all Linux folks, I'd like to share some links.

Let's begin from Simon - open source speech recognition software:

and some other:

and

Share:
29

Related videos on Youtube

Stefan Schneider
Author by

Stefan Schneider

Updated on February 02, 2020

Comments

  • Stefan Schneider
    Stefan Schneider over 4 years

    I need to query an URL for the included ID and then redirect to different files according to the ID. I tried with RewriteCond %{QUERY_STRING} but it's not working out. Please help.

    This is the sample URL which needs to be redirected: http://www.example.com/people/123456.html, where 123456 is the user ID.

    If user ID is >= 300000 and <= 399999, redirect to http://www.example.com/people/profile-old.php&userid=xxx

    If user ID is >= 400000 and <= 499999, redirect to http://www.example.com/people/profile-1.php&userid=xxx

    Else redirect to http://www.example.com/people/profile-2.php&userid=xxx

    • Jason 'Bug' Fenter
      Jason 'Bug' Fenter over 15 years
      Just in case you end up coming back to this topic: how have things been going since September? What did you end up doing? Could you perhaps share some of your experiences? I for one would be really interested!
    • hippietrail
      hippietrail almost 13 years
    • dearlbry
      dearlbry over 12 years
      I think you'll have to use a server-side script for this (looks like you're running PHP?). I don't know of any way to do numerical comparison in a rewrite rule. Rewrite everything that matches /people to a people-router.php and do the redirecting in there.
  • Keith Walton
    Keith Walton over 15 years
    I started on Dragon Dictate as well. The whole "not working" thing is a powerful motivator to use speech recognition.
  • Keith Walton
    Keith Walton over 15 years
    The "cryptic stuff" is why I have stuck with VB.net and SQL. Whenever I have to dictate javascript I hate life.
  • Phaedrus
    Phaedrus over 12 years
    I can second recommending the book by J.E Sarno. There's definitely something to it. It hasn't miraculously cured me, but it's definitely helped look at things from an altogether different perspective.
  • Keith Walton
    Keith Walton about 11 years
    @JulioRodrigues Take a look at this: stackoverflow.com/questions/350348/…
  • mike rodent
    mike rodent over 10 years
    Yes, I hate the mouse. I always have and seem to observe that most people who work with computers get wrist and finger strain from the mouse, not the keyboard. Autohotkey is the way to go, and I find the programming fairly logical once you get into it: it's as powerful as you want it to be. Often wondered, as someone who dreams of changing to Linux, whether there is anything similar in Linux? I use DNS too, but nothing to do with wrist strain: I use it for text work and think it's great. Again, shame nothing as good in Linux.
  • mike rodent
    mike rodent over 10 years
    musophobia - fear of mice, so misomusia - hatred of mice... perhaps
  • NitroxDM
    NitroxDM over 10 years
    I have a kinesis advantage... It pretty much rocks! Moving keys from the little finger to the thumb is a home run. The one downside is the function keys are soft rubbery and impossible use while to touch typing.
  • AJJ
    AJJ over 9 years
    Careful about "working on a laptop full-time" though. It might have worked for @marc, but it is for most people, myself included, the first thing to ban. After 30 min working on a laptop my wrists are more painful than after 8 hours on the desktop. How do you maintain a proper body/arms/wrists position while working on a laptop? Some good general advice can be found here: web.eecs.umich.edu/~cscott/rsi.html
  • kennyB
    kennyB over 6 years
    I use dragonfly + caster and have tried Vocola. I find caster superior. Definitely worth mentioning here. Compared to typing, I am 30% faster writing LaTeX code and about 30% slower writing R code. I'm not a professional programmer and it was easy to pick up.
  • KlaymenDK
    KlaymenDK over 6 years
    Just came across this question, and wanted to make sure that that video was referenced. Thanks, Steven. BTW, a good example starts at 8m 34s in that video.