Transcribe long audio files with STT or use the streaming interface
Project description
Listen: STT Services
This program is composed of two parts:
- A server aimed to be runned as a background service to serve STT models within the bounds of a socket.
- A client to query the models to transcribe audio from files or directly from a live microphone stream.
The outputed wav file can be stored for later use.
You can then use the data.helper
script to verify the transcription of every wav file and update the CSV training register before you start training a model.
Requirements
If you intent to use listen
using Python 3.10 or above, you'll need my patched version of PyAudio
for Python 3.10.
pip install git+https://gitlab.com/waser-technologies/technologies/pyaudio.git
Installation
Once you have a working pyaudio
for your version of python, install listen
.
pip install stt-listen
# Or from source
pip install git+https://gitlab.com/waser-technologies/technologies/listen.git
Usage
❯ listen --help
usage: listen [-h] [-f FILE] [--aggressive {0,1,2,3}] [-d MIC_DEVICE]
[-w SAVE_WAV]
Transcribe long audio files using webRTC VAD or use the streaming interface
from a microphone
options:
-h, --help show this help message and exit
-f FILE, --file FILE Path to the audio file to run (WAV format)
--aggressive {0,1,2,3}
Determines how aggressive filtering out non-speech is.
(Integer between 0-3)
-d MIC_DEVICE, --mic_device MIC_DEVICE
Device input index (Int) as listed by
pyaudio.PyAudio.get_device_info_by_index(). If not
provided, falls back to PyAudio.get_default_device().
-w SAVE_WAV, --save_wav SAVE_WAV
Path to directory where to save recorded sentences
--debug Show debug info
Start the server
To use listen
, you need a socket with STT models at the ready.
Example to enable as service.
cp ./listen.service.example /usr/lib/systemd/user/listen.service
systemctl --user enable --now listen.service
Models for STT and punctuation will be downloaded the first time your run the server.
Or manually using python
python -m listen.STT.as_service
Get authorization to listen
You need to authorize the system to listen first. Change the service configuration as follows.
# ~/.assistant/stt.toml
...
[stt]
is_allowed = true
...
Then start the server and use listen
to start transcribing audio.
Use the client
Transcribe a file
You can quickly transcribe a wav file.
❯ listen -f savewav_2022-04-11_17-18-08_578756.wav
Filename Duration(s)
savewav_2022-04-11_17-18-08_578756.wav 3.580
❯ cat savewav_2022-04-11_17-18-08_578756.txt
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: savewav_2022-04-11_17-18-08_578756.txt
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ Bonjour.
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────
Transcribe from a live microphone stream
You can also query the models in real time from a microphone.
❯ listen
You can speak now.
Bonjour.
^C
Stopped listening.
Supported languages
By default, the server uses the system's language according to the environment variable $LANG
.
You can manually specify a supported language for the server to use.
LANG="en_US.UTF-8" python -m listen.STT.as_service
Have a look at stt-models-locals to see the complete list.
If the provided $LANG
is not supported by any STT model, english is used as a failback.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for stt_listen-2.3.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e633949f57e53fa1868520999c5266a5c24dec77ad3fef8da84290f38dce78aa |
|
MD5 | 7f3844da93a6d0d131c9d7b928c32ba2 |
|
BLAKE2b-256 | 5a81bb575a56a34ee1a4932173c0309ae1aa230678805c1ff0b39df0130ec0eb |