livestt
Installation
pip install livestt # this could take a while
Usage
Livestt gives access to 3 main classes/functions.
Wait for the wake word
from livestt import wait
def callback_func():
print("Wakeword said!")
wait(callback=callback_func)
The wait function takes in these args:
callback (Callable): The function to be called when the wake word is detected.
args (tuple[any] | None): The arguments to be passed to the callback function. The default is None.
wake_word (str): The wake word that the function is waiting for. The default is "Sheila".
prob_threshold (float): The probability threshold for the wake word detection. The default is 0.5.
chunk_length_s (float): The length of the audio chunk to be processed at a time, in seconds. The default is 2.0.
stream_chunk_s (float): The length of the audio stream chunk to be processed at a time, in seconds. The default is 0.25.
debug (bool): If True, debug information will be printed. The default is True.
Raises:
ValueError: If the wake word is not in the set of valid class labels.
Returns:
None
Record audio
from livestt import Recorder
import time
recorder = Recorder("test.wav")
recorder.start() # Starts recorder thread
time.sleep(5) # Waits before ending thread
recorder.end() # Writes recording to "test.wav"
The Recorder class when started starts a new recorder thread where it will listen to the audio until the thread is ended. Upon the thread ending, the recording will be saved to a file. The Recorder class takes these args:
chunk (int): The number of audio frames per buffer.
format (int): The sample format for the recording.
channels (int): The number of channels for the recording.
fs (int): The sample rate of the recording.
filename (str): The name of the output file where the recording will be saved. The file_ MUST currently be .wav
listening (bool): A flag indicating whether the recorder is currently recording.
Transcribe a given audio file
from livestt import transcribe
transcription = transcribe("test.wav")
for t in transcription:
print(t.text)
The transcribe function transcribes the given audio file and outputs the transcribed text along with other information. The transcribe function takes these args:
input_file (str): The path to the audio file to be transcribed.
language (str): The language of the audio file. The default is "en" (English).
model_name (str): The name of the model to be used for transcription. The default is "tiny.en".
This function yields a tuple with the following fields:
text (str): The transcribed text.
language_probability (float): The probability of the detected language.
language (str): The detected language.
segment_end (float): The end time of the transcribed segment.
segment_start (float): The start time of the transcribed segment.
Examples
For a full example, check out the example in the file example/main.py.
Tech stack
- Pyaudio for recording audio.
- faster-whisper for transcription.
- openWakeWord for wakeword detection.
Acknowledgments
Thanks to Kolja for the inspiration. I couldn't figure out how to use his library so I made my own. Check this out here.
Contribution
Contributions are always welcome! Open an issue or make a PR. Or just contact me on discord: @a3l6
Author(s)
Metadata
Release files for livestt 1.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| livestt-1.0.7.tar.gz | 7.7 kB | Without provenance | Details for livestt-1.0.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| livestt-1.0.7-py3-none-any.whl | Python 3 | none | any | Details for livestt-1.0.7-py3-none-any.whl |
Total release size: 14.6 kB
Release files / livestt-1.0.7.tar.gz
| Download URL | livestt-1.0.7.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a34884cb885404f422bf2f6cc572eea00afac303941849670680349548626419
|
|
BLAKE2b-256 checksum How to use checksums |
7b01e514728fcf1fa444d3e72f70f1d397423b6002a24dfbb1e50cbbbcab3b0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.18
|
Release files / livestt-1.0.7-py3-none-any.whl
| Download URL | livestt-1.0.7-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e2d86b4046ff81f5d8c6b97bd1bde19b284f236a35364a12f3d1aec6c042f8e
|
|
BLAKE2b-256 checksum How to use checksums |
37e839538bb6ab135b014fbd7045db18d10989709c9ce32d61f044c3dc9f1db7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.18
|
Security for livestt 1.0.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.