Python library to identify spoken numbers and characters?

Question:

Is there a library that can translate spoken characters/numbers to text? Most of what I have found after googling (example SpeechRecognition) has the ambition of identifying words in a certain language, but I need something "dumber". It should only identify single characters/numbers and not try to interpret them as words. Preferably I would like to configure what symbols that have a meaning.

I’m curious whether it would be possible to speak out scout codes for volleyball and have a daemon translate it into written text. An example of such code would be:

a10SM-1A5C *12R#5C3B etc

The reason is that I’m a lousy typist, and I lose track of the game when having to focus on the keyboard. Between plays, the identified code could be pasted into the scouting software.

Any pointers to such a library? It does not have to be in Python, but it is the language I use the most so it would be nice if something like this existed there.

Asked By: Lennart

||

Answers:

I’ll add my reflections regarding talonvoice as suggested in a comment by TessellatingHeckler.

Overall it works surprisingly well, but one obstacles along the way (tried on linux) was that I could not figure out how to install the speech recognition engine. It turns out that one can install AppIndicator and KStatusNotifierItem Support in gnome and install it from there.

I cloned knausj_talon and modified knausj_talon/code/keys.py to fit my needs:

default_alphabet = "away home attack serve dig block set freeball receve high medium fast other quick tense super a b c d k stop".split(
" "
)

letters_string = "a*ASDBEFRHMNOQTUABCDKs"

I also extended:

default_digits = "zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiftheen sixteen seventeen eighteen nineteen twenty".split(" ")
numbers = [str(i) for i in range(21)]

I tried it together with a demo version of Volleystation and it works reasonable well. I’m pretty sure it will work with Datavolley as well, but since that is only supported on Windows I have not tried it.

A phrase like:

<four><serve><medium><minus><one><a><one><c><space><away><thirteen><receive><high><minus><one><c><eight><b><away><k><five><plus><away><ten><attack><hash><four><a><seven><a><enter>

Where correctly interpreted as:

*4SM-1A1C a13RH-1C...

I have yet to see how well it works in a crowded arena, but since it was just an experiment I’m quite happy with the result.

Answered By: Lennart