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.
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.
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.
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.