Writing and coding by voice with Talon
blakewatson.com
blakewatson.com
One difference between voice vs keyboard/mouse is that the number of 'commands' that can be in scope at any moment is much much larger. With a mouse you must sacrafice screen space for each command, for keyboard shortcuts the user must memorize often somewhat arbitrary key combinations for every new app/command.
With voice, there are still descoverability and some memorization issues, but they feel a lot different. I can remember the command "rename variable" much more easily than "command-alt-r", or was it "command-shift-r"? These commands can also be common across editors, reducing the friction of trying different editors.
One other observation is how I now think of apps more as (often poorly defined) sets of APIs whose inputs are keyboard/mouse events. I really wish more apps had a cleaner method of exposing this API. Some apps have a command pallet or something similar where a keyboard shortcut brings up a auto completed list of all possible actions available, which is still clumsy, but workable. Atom and jupyter notebooks both have this. Something more direct would be very nice.
https://medium.com/bambuu/state-of-voice-coding-2017-3d2ff41...
https://github.com/melling/ErgonomicNotes/blob/master/progra...
Caster project seems up-to-date and Dragonfly as well with a new fork that's actively integrating other speech recognition engines.
Combined with Aenea I can dictate code on Linux
It doesn’t depend on Dragon at all, and Nuance dropping support for Dragon 6 isn’t a huge problem yet as long as you can still buy it (Talon has a builtin speech engine, and also fixes/works around most of the long-standing problems in Dragon Mac, and I’m probably more able to help with problems than their support). Integrating more engines is on the roadmap, but slightly after multi platform support (since there’s already a good free engine on Mac).
Let me know if you have any questions or if there’s anything I can do to make Talon work better for your use case.
It’s also worth reading back through my HN comments as I’ve talked in detail about Talon there.
The builtin engine is a much nicer experience than Dragon (very fast startup, no config), but simply isn’t as good at recognizing English, and there’s also a weird behavior in it I haven’t worked around yet that makes it harder to mix English with commands (it greedily prioritizes commands sometimes). The accuracy is quite good for American accents at least. I found it to be consistently more accurate than wav2letter (haven’t tried ++) and DeepSpeech with some simple test audio.
I've got something close to the Talon control, without eye tracking, I'm working on now and then, using the Google API for voice interpret, because CMUSphinx was awful (50% accuracy per word, whereas Google was closer to 90%).
I'm hoping that Mozilla Voice when it comes will finally solve this or make it easy to build a decent control system.
Mozilla Common Voice [2] is the project to collect more training data so that DeepSpeech (and other projects) can achieve the accuracy that is known to be possible with the same architecture trained on larger private datasets.
Then there's Facebook's newly released wav2letter++ [3], which claims to achieve better accuracy with the same training data. However, some people have been unable to exactly reproduce those results, getting "only" 5.15% WER [4]. Still better than what Mozilla DeepSpeech can deliver, though.
[1] https://github.com/mozilla/DeepSpeech/releases/latest
[3] https://github.com/facebookresearch/wav2letter
[4] https://github.com/facebookresearch/wav2letter/issues/88
I have open-sourced over 100 of my projects. My current decision is to not open-source Talon at least as long as it is my full-time job for no real salary. I’m putting a lot of work into it and giving it away for free, this is what you get.
There’s the fear approach (I personally believe >50% of people who use computers full-time will develop at least minor hand injuries), but I don’t think fear is enough on its own.
The most promising thing I think is workflow improvements. For voice, the ability to issue commands like “next song” while typing feels amazing. You can also be more specific about many commands, like “focus chrome” is nicer than mashing cmd-tab a bunch or binding a key to each app. For eye tracking, I think autoscrolling text as you read and jumping your mouse to the right spot when you look at your second monitor are two big ones.
That said, once you are proficient, writing code can definitely be as fast or faster than skilled keyboard.