stt.picovoice.speech
stt.picovoice.speech
- class platypush.plugins.stt.picovoice.speech.SttPicovoiceSpeechPlugin(library_path: Optional[str] = None, acoustic_model_path: Optional[str] = None, language_model_path: Optional[str] = None, license_path: Optional[str] = None, end_of_speech_timeout: int = 1, *args, **kwargs)[source]
This plugin performs speech detection using PicoVoice. NOTE: The PicoVoice product used for real-time speech-to-text (Cheetah) can be used freely for personal applications on x86_64 Linux. Other architectures and operating systems require a commercial license. You can ask for a license here.
Requires:
cheetah (
pip install git+https://github.com/BlackLight/cheetah
)
- __init__(library_path: Optional[str] = None, acoustic_model_path: Optional[str] = None, language_model_path: Optional[str] = None, license_path: Optional[str] = None, end_of_speech_timeout: int = 1, *args, **kwargs)[source]
- Parameters:
library_path – Path to the Cheetah binary library for your OS (default:
CHEETAH_INSTALL_DIR/lib/OS/ARCH/libpv_cheetah.EXT
).acoustic_model_path – Path to the acoustic speech model (default:
CHEETAH_INSTALL_DIR/lib/common/acoustic_model.pv
).language_model_path – Path to the language model (default:
CHEETAH_INSTALL_DIR/lib/common/language_model.pv
).license_path – Path to your PicoVoice license (default:
CHEETAH_INSTALL_DIR/resources/license/cheetah_eval_linux_public.lic
).end_of_speech_timeout – Number of seconds of silence during speech recognition before considering a phrase over (default: 1).
- before_recording() None
Method called when the
recording_thread
starts. Put here any logic that you may want to run before the recording thread starts.
- convert_frames(frames: bytes) tuple [source]
Conversion method for raw audio frames. It just returns the input frames as bytes. Override it if required by your logic.
- Parameters:
frames – Input audio frames, as bytes.
- Returns:
The audio frames as passed on the input. Override if required.
- detect(audio_file: str) SpeechDetectedResponse [source]
Perform speech-to-text analysis on an audio file.
- Parameters:
audio_file – Path to the audio file.
- detect_speech(frames: tuple) str [source]
Method called within the
detection_thread
when new audio frames have been captured. Must be implemented by the derived classes.- Parameters:
frames – Audio frames, as returned by
convert_frames
.- Returns:
Detected text, as a string. Returns an empty string if no text has been detected.
- detection_thread() None
This thread reads frames from
_audio_queue
, performs the speech-to-text detection and calls
- on_detection_ended() None [source]
Method called when the
detection_thread
stops. Clean up your context variables and models here.
- on_detection_started() None
Method called when the
detection_thread
starts. Initialize your context variables and models here if required.
- on_recording_ended() None
Method called when the
recording_thread
stops. Put here any logic that you want to run after the audio device is closed.
- on_recording_started() None
Method called after the
recording_thread
opens the audio device. Put here any logic that you may want to run after the recording starts.
- on_speech_detected(speech: str) None
Hook called when speech is detected. Triggers the right event depending on the current context.
- Parameters:
speech – Detected speech.
- recording_thread(input_device: Optional[str] = None, *args, **kwargs) None [source]
Recording thread. It reads raw frames from the audio device and dispatches them to
detection_thread
.- Parameters:
block_duration – Audio blocks duration. Specify either
block_duration
orblock_size
.block_size – Size of the audio blocks. Specify either
block_duration
orblock_size
.input_device – Input device
- start_detection(*args, **kwargs) None [source]
Start the speech detection engine.
- Parameters:
input_device – Audio input device name/index override
seconds – If set, then the detection engine will stop after this many seconds, otherwise it’ll start running until
stop_detection
is called or application stop.block_duration –
block_duration
override.