Talon uses a speech recognition engine that translates voice audio to text. There are multiple options for speech engines, and you will need to choose one. Starting out: Only if you are already using Dragon, you might want to start out with Dragon. Otherwise, Talon’s own engine wav2letter is recommended.
Again, in case you want to know your options:
|Builtin macOS (10.11-10.14)||Public||macOS||(Note that 10.15’s speech recognition engine does NOT work.)|
|Dragon Dictate 6||Public||Windows/macOS||Must purchase separately.||Windows|
|wav2letter||Public||Windows/macOS/Linux||Currently recommended engine for general use||Install instructions|
|wav2letter large-b2||Beta||macOS/Linux||Newer experimental wav2letter model, not yet available for Windows||Install instructions|
|wav2letter sconv-b6||Beta||macOS/Linux||Newer experimental wav2letter model, not yet available for Windows||Install instructions|
|web2letter (deprecated)||Beta||Windows/macOS/Linux||Remote access to a server running outdated wav2letter gen2||Ask
|webspeech||Beta||Windows/macOS/Linux||Uses chrome or firefox for speech recognition.||Setup instructions|
Builtin macOS and Dragon support work automatically when available and active, for wav2letter please follow the instructions at the links.
The newer wav2letter models use better training data and training methodology compared to the classic version. They improve speech recognition in many areas, but they are not yet polished and optimized. That means, you have to expect some worse performance, or some odd behavior now and then. That being said, many Talon users report significant improvements.
To reduce the download burden, the files for the newer wav2letter models only include the updated voice model, but not the language model (
lm-ngram.bin). You have to copy or link that file. So the basic procedure is (details may vary, see the links from the table!):
~/.talon/. It will create a new folder similar named like
user/w2l.pyby commenting out the other model and add a new line pointing to the new model:
#engine = W2lEngine(model='en_US', debug=True) engine = W2lEngine(model='en_US-MODELNAME', debug=True)
If you do not have anything specific in mind, start out using knausj_talon, which has become the most shared Talon configuration. Of course there are alternatives, but only use one repository - they should not be mixed.
|Talon Release||GitHub Repository||Description|
|Public||knausj85’s knausj_talon||The currently recommended go-to repository for general use|
|Public||Fidgetingbit’s Talon Config||Fork of Knausj’s config with VimSpeak support|
|Public||mrob95’s Talon Config||Mark Robert’s Talon config with support for Windows dev tools (Windows Terminal, Mintty, Windows Workspaces)|
A mouse grid can be used to control the mouse cursor with neither hands nor eye-tracking. An implementation for Talon is included in the knausj_talon repository. There is a
settings.talon file inside the knausj repository where you need to turn the mouse grid on if you want to use it.
If you’d like a notification to show you what Talon is hearing you say, add this notify.py in
~/.talon/user (anywhere in the .talon/user folder is fine) or create your own notify.py file with its contents.
Warning! This is a hack that could stop working tommorrow!
Talon makes extensive use of all the information it has on known and expected commands and words to guide the speech recognition: Impossible words won’t be recognized, and this can help speech with slightly off pronounciation to still work just fine.
If you want to write down a specific full Talon phrase, for documentation or discussion, just dictating it regularly could be much more difficult than just saying the command, because in a free-text phrase Talon cannot make use of this information. But! Using this little hack, you actually can dictate a Talon command! No explanation, because: here be dragons!
from talon import actions, speech_system def fn(d): words = d['parsed']._unmapped if words == 'keeper': actions.insert(' '.join(words[1:])) d['parsed']._sequence =  speech_system.register('pre:phrase', fn)