STT are independent projects so they can be developed under a github project. Anyone can clone them and place them under the STT repository and reuse them or directly install them
Creating a new STT must follow some rules:
The STT inherits from the OrderListener coming from the Core.
from kalliope.core.OrderListener import OrderListener
class Google(OrderListener):
The STT has a constructor init which is the entry point. The constructor has an incoming callback to call once we get the text. The constructor has a **kwargs argument which is corresponding to the Dict of incoming variables:values defined either in the settings file.
The STT must init itself first.
Attach the incoming callback to the self.attribute.
Obtain audio from the microphone in the constructor. (Note : we mostly use the speech_recognition library)
Once you get the text back, let give it to the callback
def __init__(self, callback=None, **kwargs):
OrderListener.__init__(self)
self.callback = callback
# -------------------
# do amazing code
# -------------------
self.callback(audio_to_text)
Example of STT structure
mystt/
├── __init__.py
├── mystt.py
├── dna.yml
├── install.yml
└── README.md
Example of STT code
class Mystt(OrderListener):
def __init__(self, callback=None, **kwargs):
OrderListener.__init__(self)
self.callback = callback
# -------------------
# - get the microphone audio
# - do amazing code to retrieve the text
# - call the callback giving it the result text -> self.callback(audio_to_text)
# -------------------