Compare commits
6
Commits
af840601c0
...
1b48e79e2e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b48e79e2e | ||
|
|
8922879b7d | ||
|
|
a1f1a1eb79 | ||
|
|
ae7b7d0869 | ||
|
|
15657df63f | ||
|
|
0ad663c835 |
@@ -288,6 +288,22 @@ The following wake words are supported:
|
||||
- porcupine
|
||||
- terminator
|
||||
|
||||
### Wake Word Engines
|
||||
|
||||
Two wake word engines are supported:
|
||||
|
||||
- **openwakeword** (default) - Open source, free to use, good accuracy
|
||||
- **pvporcupine** - Picovoice's Porcupine engine, highly optimized
|
||||
|
||||
Choose the engine based on your requirements:
|
||||
```bash
|
||||
# Use OpenWakeWord (default)
|
||||
tooling stt listen --wakeword-engine openwakeword
|
||||
|
||||
# Use Porcupine for better performance
|
||||
tooling stt listen --wakeword-engine pvporcupine
|
||||
```
|
||||
|
||||
### Available Models
|
||||
|
||||
| Model | Speed | Accuracy | Memory | Use Case |
|
||||
@@ -311,6 +327,7 @@ Options:
|
||||
--save-to-file PATH Save transcriptions to a file
|
||||
--sensitivity FLOAT Wake word sensitivity (0.0 to 1.0) [default: 0.6]
|
||||
--device TEXT Device to use (auto, cuda, cpu) [default: auto]
|
||||
--wakeword-engine TEXT Wake word engine (openwakeword, pvporcupine) [default: openwakeword]
|
||||
--verbose Show verbose output and configuration
|
||||
--help Show this message and exit
|
||||
```
|
||||
@@ -342,6 +359,11 @@ tooling stt test --duration 5 --model tiny
|
||||
tooling stt listen --language es --sensitivity 0.8 --wake-word "hey google"
|
||||
```
|
||||
|
||||
**Use different wake word engine:**
|
||||
```bash
|
||||
tooling stt listen --wakeword-engine pvporcupine --wake-word alexa
|
||||
```
|
||||
|
||||
### How it Works
|
||||
|
||||
1. **Initialization**: Loads the selected Whisper model and sets up audio processing
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# STT Status Bar App Usage
|
||||
|
||||
## Overview
|
||||
|
||||
The STT (Speech-to-Text) status bar app provides a convenient macOS menu bar interface for controlling speech-to-text functionality using wake word activation.
|
||||
|
||||
## Features
|
||||
|
||||
- **Start/Stop/Pause/Resume**: Full control over STT recording
|
||||
- **Status Indicators**: Visual status in menu bar (🎙️🔴 recording, 🎙️⏸️ paused, 🎙️⚫ stopped)
|
||||
- **Configurable Settings**: Change wake words and models on the fly
|
||||
- **File Output**: Save transcriptions to a file
|
||||
- **Notifications**: Real-time notifications for transcriptions and status changes
|
||||
|
||||
## Usage
|
||||
|
||||
### Starting the Status Bar App
|
||||
|
||||
```bash
|
||||
# Launch the status bar app
|
||||
tooling stt statusbar
|
||||
|
||||
# Or using the full CLI path
|
||||
python -m tooling.cli stt statusbar
|
||||
```
|
||||
|
||||
### Menu Options
|
||||
|
||||
#### Main Controls
|
||||
- **Start STT**: Begin speech-to-text with current settings
|
||||
- **Stop STT**: Stop speech-to-text completely
|
||||
- **Pause**: Temporarily pause recognition (keeps recorder alive)
|
||||
- **Resume**: Resume recognition from pause
|
||||
|
||||
#### Settings
|
||||
- **Wake Word**: Choose from predefined options:
|
||||
- jarvis (default)
|
||||
- alexa
|
||||
- hey google
|
||||
- hey siri
|
||||
- computer
|
||||
|
||||
- **Model**: Select Whisper model:
|
||||
- tiny (fastest, least accurate)
|
||||
- base (default, good balance)
|
||||
- small (more accurate)
|
||||
- medium (most accurate, slower)
|
||||
|
||||
#### File Management
|
||||
- **Show Recent Transcriptions**: Display last 10 transcription entries
|
||||
- **Save to File...**: Set output file for saving transcriptions
|
||||
|
||||
### Status Indicators
|
||||
|
||||
| Icon | Status | Description |
|
||||
|------|--------|-------------|
|
||||
| 🎙️⚫ | Stopped | STT is not running |
|
||||
| 🎙️🔴 | Recording | STT is active and listening |
|
||||
| 🎙️⏸️ | Paused | STT is paused but can be resumed |
|
||||
|
||||
### Workflow Example
|
||||
|
||||
1. **Launch the app**: `tooling stt statusbar`
|
||||
2. **Look for the 🎙️ icon** in your macOS menu bar
|
||||
3. **Click the icon** to open the menu
|
||||
4. **Set your preferences**:
|
||||
- Choose wake word from Settings > Wake Word
|
||||
- Select model from Settings > Model
|
||||
- Optionally set output file with "Save to File..."
|
||||
5. **Click "Start STT"** to begin
|
||||
6. **Say your wake word** (e.g., "jarvis") to trigger recording
|
||||
7. **Speak clearly** after the wake word is detected
|
||||
8. **Get notifications** with your transcribed text
|
||||
9. **Use Pause/Resume** as needed
|
||||
10. **Click "Stop STT"** when done
|
||||
|
||||
### Notifications
|
||||
|
||||
The app provides notifications for:
|
||||
- STT started/stopped/paused/resumed
|
||||
- Transcribed speech (shows first 100 characters)
|
||||
- Settings changes (when STT is running)
|
||||
- File operations
|
||||
|
||||
### File Output
|
||||
|
||||
When you set an output file:
|
||||
- Transcriptions are saved with timestamps
|
||||
- Sessions are marked with start/end timestamps
|
||||
- File is automatically created in ~/Documents/ by default
|
||||
- Each transcription includes: `[HH:MM:SS] transcribed text`
|
||||
|
||||
### Requirements
|
||||
|
||||
- macOS (rumps requires macOS and PyObjC)
|
||||
- RealtimeSTT library
|
||||
- Working microphone
|
||||
- Python 3.11+
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
- **No menu bar icon**: Make sure you're running on macOS and rumps is installed
|
||||
- **No transcriptions**: Check microphone permissions and try speaking louder
|
||||
- **Wake word not detected**: Try adjusting sensitivity or use a different wake word
|
||||
- **High CPU usage**: Consider using the "tiny" model for better performance
|
||||
|
||||
### Advanced Configuration
|
||||
|
||||
The status bar app uses sensible defaults, but you can modify the underlying configuration by editing the STTStatusBarApp class in `src/tooling/stt_cli.py`.
|
||||
|
||||
Default settings:
|
||||
- Wake word: "jarvis"
|
||||
- Model: "base"
|
||||
- Sensitivity: 0.6
|
||||
- Device: auto-detect (CUDA if available, otherwise CPU)
|
||||
- Realtime display: enabled
|
||||
+173
@@ -0,0 +1,173 @@
|
||||
2025-07-22 22:10:54.507 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:10:54.520 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:10:54.523 - RealTimeSTT: realtimestt - INFO - Initializing faster_whisper realtime transcription model tiny, default device: cpu, compute type: default, device index: 0, download root: None
|
||||
2025-07-22 22:10:55.181 - RealTimeSTT: realtimestt - DEBUG - Faster_whisper realtime speech to text transcription model initialized successfully
|
||||
2025-07-22 22:10:55.181 - RealTimeSTT: realtimestt - ERROR - Wakeword engine unknown/unsupported or wake_words not specified. Please specify one of: pvporcupine, openwakeword.
|
||||
NoneType: None
|
||||
2025-07-22 22:10:55.181 - RealTimeSTT: realtimestt - INFO - Initializing WebRTC voice with Sensitivity 3
|
||||
2025-07-22 22:10:55.181 - RealTimeSTT: realtimestt - DEBUG - WebRTC VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:10:55.838 - RealTimeSTT: realtimestt - DEBUG - Silero VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:10:55.838 - RealTimeSTT: realtimestt - DEBUG - Starting realtime worker
|
||||
2025-07-22 22:10:55.838 - RealTimeSTT: realtimestt - DEBUG - Waiting for main transcription model to start
|
||||
2025-07-22 22:11:01.946 - RealTimeSTT: realtimestt - DEBUG - Main transcription model ready
|
||||
2025-07-22 22:11:01.946 - RealTimeSTT: realtimestt - DEBUG - RealtimeSTT initialization completed successfully
|
||||
2025-07-22 22:11:01.946 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:11:01.946 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'listening'
|
||||
2025-07-22 22:11:01.947 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording start
|
||||
2025-07-22 22:11:01.981 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
2025-07-22 22:13:18.955 - RealTimeSTT: realtimestt - DEBUG - Finishing recording thread
|
||||
2025-07-22 22:13:18.956 - RealTimeSTT: realtimestt - DEBUG - No samples removed, final audio length: 0
|
||||
2025-07-22 22:13:18.956 - RealTimeSTT: realtimestt - INFO - State changed from 'wakeword' to 'inactive'
|
||||
2025-07-22 22:13:18.962 - RealTimeSTT: realtimestt - DEBUG - Terminating reader process
|
||||
2025-07-22 22:13:19.621 - RealTimeSTT: realtimestt - DEBUG - Terminating transcription process
|
||||
2025-07-22 22:13:19.622 - RealTimeSTT: realtimestt - DEBUG - Finishing realtime thread
|
||||
2025-07-22 22:15:33.358 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:15:33.369 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:15:33.377 - RealTimeSTT: realtimestt - INFO - Initializing WebRTC voice with Sensitivity 3
|
||||
2025-07-22 22:15:33.377 - RealTimeSTT: realtimestt - DEBUG - WebRTC VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:15:34.053 - RealTimeSTT: realtimestt - DEBUG - Silero VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:15:34.054 - RealTimeSTT: realtimestt - DEBUG - Starting realtime worker
|
||||
2025-07-22 22:15:34.054 - RealTimeSTT: realtimestt - DEBUG - Waiting for main transcription model to start
|
||||
2025-07-22 22:15:37.769 - RealTimeSTT: realtimestt - DEBUG - Main transcription model ready
|
||||
2025-07-22 22:15:37.769 - RealTimeSTT: realtimestt - DEBUG - RealtimeSTT initialization completed successfully
|
||||
2025-07-22 22:15:37.771 - RealTimeSTT: realtimestt - INFO - recording started
|
||||
2025-07-22 22:15:37.771 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'recording'
|
||||
2025-07-22 22:15:40.784 - RealTimeSTT: realtimestt - INFO - recording stopped
|
||||
2025-07-22 22:15:40.785 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:15:40.785 - RealTimeSTT: realtimestt - DEBUG - No samples removed, final audio length: 49152
|
||||
2025-07-22 22:15:40.785 - RealTimeSTT: realtimestt - INFO - State changed from 'recording' to 'inactive'
|
||||
2025-07-22 22:15:40.882 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'transcribing'
|
||||
2025-07-22 22:15:40.882 - RealTimeSTT: realtimestt - DEBUG - Adding transcription request, no early transcription started
|
||||
2025-07-22 22:15:40.901 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:15:41.002 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:15:41.030 - RealTimeSTT: realtimestt - INFO - State changed from 'transcribing' to 'inactive'
|
||||
2025-07-22 22:15:41.040 - RealTimeSTT: realtimestt - DEBUG - Model tiny completed transcription in 0.16 seconds
|
||||
2025-07-22 22:15:41.041 - RealTimeSTT: realtimestt - DEBUG - Finishing recording thread
|
||||
2025-07-22 22:15:41.047 - RealTimeSTT: realtimestt - DEBUG - Terminating reader process
|
||||
2025-07-22 22:15:41.781 - RealTimeSTT: realtimestt - DEBUG - Terminating transcription process
|
||||
2025-07-22 22:15:41.781 - RealTimeSTT: realtimestt - DEBUG - Finishing realtime thread
|
||||
2025-07-22 22:21:51.296 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:21:51.305 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:21:51.310 - RealTimeSTT: realtimestt - INFO - Initializing faster_whisper realtime transcription model tiny, default device: cpu, compute type: default, device index: 0, download root: None
|
||||
2025-07-22 22:21:52.462 - RealTimeSTT: realtimestt - DEBUG - Faster_whisper realtime speech to text transcription model initialized successfully
|
||||
2025-07-22 22:21:52.463 - RealTimeSTT: realtimestt - ERROR - Error initializing porcupine wake word detection engine: dlopen(/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib, 0x0006): tried: '/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (no such file), '/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')). Wakewords: ['jarvis'].
|
||||
Traceback (most recent call last):
|
||||
File "/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/RealtimeSTT/audio_recorder.py", line 837, in __init__
|
||||
self.porcupine = pvporcupine.create(
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
File "/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/__init__.py", line 64, in create
|
||||
return Porcupine(
|
||||
^^^^^^^^^^
|
||||
File "/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/porcupine.py", line 60, in __init__
|
||||
library = cdll.LoadLibrary(library_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/opt/homebrew/Cellar/[email protected]/3.11.7_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ctypes/__init__.py", line 454, in LoadLibrary
|
||||
return self._dlltype(name)
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
File "/opt/homebrew/Cellar/[email protected]/3.11.7_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ctypes/__init__.py", line 376, in __init__
|
||||
self._handle = _dlopen(self._name, mode)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
OSError: dlopen(/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib, 0x0006): tried: '/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (no such file), '/Users/wongdingfeng/.local/share/uv/tools/tooling/lib/python3.11/site-packages/pvporcupine/lib/mac/x86_64/libpv_porcupine.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64'))
|
||||
2025-07-22 22:24:38.316 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:24:38.323 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:24:38.327 - RealTimeSTT: realtimestt - INFO - Initializing faster_whisper realtime transcription model tiny, default device: cpu, compute type: default, device index: 0, download root: None
|
||||
2025-07-22 22:24:38.852 - RealTimeSTT: realtimestt - DEBUG - Faster_whisper realtime speech to text transcription model initialized successfully
|
||||
2025-07-22 22:24:53.300 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: alexa
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_mycroft
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_jarvis
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_rhasspy
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: timer
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: weather
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - DEBUG - Open wake word detection engine initialized successfully
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - INFO - Initializing WebRTC voice with Sensitivity 3
|
||||
2025-07-22 22:24:53.301 - RealTimeSTT: realtimestt - DEBUG - WebRTC VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:24:53.835 - RealTimeSTT: realtimestt - DEBUG - Silero VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:24:53.835 - RealTimeSTT: realtimestt - DEBUG - Starting realtime worker
|
||||
2025-07-22 22:24:53.835 - RealTimeSTT: realtimestt - DEBUG - Waiting for main transcription model to start
|
||||
2025-07-22 22:24:53.835 - RealTimeSTT: realtimestt - DEBUG - Main transcription model ready
|
||||
2025-07-22 22:24:53.835 - RealTimeSTT: realtimestt - DEBUG - RealtimeSTT initialization completed successfully
|
||||
2025-07-22 22:24:53.836 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:24:53.836 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'listening'
|
||||
2025-07-22 22:24:53.836 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
2025-07-22 22:24:53.836 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording start
|
||||
2025-07-22 22:25:04.100 - RealTimeSTT: realtimestt - INFO - State changed from 'wakeword' to 'listening'
|
||||
2025-07-22 22:25:04.670 - RealTimeSTT: realtimestt - INFO - voice activity detected
|
||||
2025-07-22 22:25:04.671 - RealTimeSTT: realtimestt - INFO - recording started
|
||||
2025-07-22 22:25:04.671 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'recording'
|
||||
2025-07-22 22:25:04.671 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording stop
|
||||
2025-07-22 22:25:04.681 - RealTimeSTT: realtimestt - DEBUG - Current realtime buffer size: 14848
|
||||
2025-07-22 22:25:04.877 - RealTimeSTT: realtimestt - DEBUG - Realtime text detected: this.
|
||||
2025-07-22 22:25:04.883 - RealTimeSTT: realtimestt - DEBUG - Current realtime buffer size: 17920
|
||||
2025-07-22 22:25:05.068 - RealTimeSTT: realtimestt - DEBUG - Realtime text detected: I love you.
|
||||
2025-07-22 22:25:05.083 - RealTimeSTT: realtimestt - DEBUG - Current realtime buffer size: 20992
|
||||
2025-07-22 22:25:05.309 - RealTimeSTT: realtimestt - DEBUG - Realtime text detected: I'll see you in the next video.
|
||||
2025-07-22 22:25:05.309 - RealTimeSTT: realtimestt - DEBUG - Current realtime buffer size: 24064
|
||||
2025-07-22 22:25:05.503 - RealTimeSTT: realtimestt - DEBUG - Realtime text detected: with a low.
|
||||
2025-07-22 22:25:06.016 - RealTimeSTT: realtimestt - INFO - recording stopped
|
||||
2025-07-22 22:25:06.017 - RealTimeSTT: realtimestt - DEBUG - No samples removed, final audio length: 35840
|
||||
2025-07-22 22:25:06.018 - RealTimeSTT: realtimestt - INFO - State changed from 'recording' to 'inactive'
|
||||
2025-07-22 22:25:06.025 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'transcribing'
|
||||
2025-07-22 22:25:06.026 - RealTimeSTT: realtimestt - DEBUG - Adding transcription request, no early transcription started
|
||||
2025-07-22 22:25:06.035 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:25:06.136 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:25:06.238 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:25:06.339 - RealTimeSTT: realtimestt - DEBUG - Receive from parent_transcription_pipe after sendiung transcription request, transcribe_count: 1
|
||||
2025-07-22 22:25:06.392 - RealTimeSTT: realtimestt - INFO - State changed from 'transcribing' to 'inactive'
|
||||
2025-07-22 22:25:06.435 - RealTimeSTT: realtimestt - DEBUG - Model base completed transcription in 0.41 seconds
|
||||
2025-07-22 22:25:06.435 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:25:06.435 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'listening'
|
||||
2025-07-22 22:25:06.436 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording start
|
||||
2025-07-22 22:26:47.716 - RealTimeSTT: realtimestt - DEBUG - Finishing recording thread
|
||||
2025-07-22 22:26:47.717 - RealTimeSTT: realtimestt - DEBUG - No samples removed, final audio length: 0
|
||||
2025-07-22 22:26:47.717 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'inactive'
|
||||
2025-07-22 22:26:47.720 - RealTimeSTT: realtimestt - DEBUG - Terminating reader process
|
||||
2025-07-22 22:26:48.322 - RealTimeSTT: realtimestt - DEBUG - Terminating transcription process
|
||||
2025-07-22 22:26:48.322 - RealTimeSTT: realtimestt - DEBUG - Finishing realtime thread
|
||||
2025-07-22 22:26:57.413 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:26:57.413 - RealTimeSTT: realtimestt - INFO - Starting RealTimeSTT
|
||||
2025-07-22 22:26:57.447 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:26:57.447 - RealTimeSTT: realtimestt - INFO - Initializing audio recording (creating pyAudio input stream, sample rate: 16000 buffer size: 512
|
||||
2025-07-22 22:26:57.451 - RealTimeSTT: realtimestt - INFO - Initializing faster_whisper realtime transcription model tiny, default device: cpu, compute type: default, device index: 0, download root: None
|
||||
2025-07-22 22:26:57.451 - RealTimeSTT: realtimestt - INFO - Initializing faster_whisper realtime transcription model tiny, default device: cpu, compute type: default, device index: 0, download root: None
|
||||
2025-07-22 22:26:57.915 - RealTimeSTT: realtimestt - DEBUG - Faster_whisper realtime speech to text transcription model initialized successfully
|
||||
2025-07-22 22:26:57.915 - RealTimeSTT: realtimestt - DEBUG - Faster_whisper realtime speech to text transcription model initialized successfully
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: alexa
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: alexa
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_mycroft
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_mycroft
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_jarvis
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_jarvis
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_rhasspy
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: hey_rhasspy
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: timer
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: timer
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: weather
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Successfully loaded openwakeword model: weather
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - DEBUG - Open wake word detection engine initialized successfully
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - DEBUG - Open wake word detection engine initialized successfully
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Initializing WebRTC voice with Sensitivity 3
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - INFO - Initializing WebRTC voice with Sensitivity 3
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - DEBUG - WebRTC VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:26:57.982 - RealTimeSTT: realtimestt - DEBUG - WebRTC VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Silero VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Silero VAD voice activity detection engine initialized successfully
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Starting realtime worker
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Starting realtime worker
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Waiting for main transcription model to start
|
||||
2025-07-22 22:26:58.430 - RealTimeSTT: realtimestt - DEBUG - Waiting for main transcription model to start
|
||||
2025-07-22 22:27:01.707 - RealTimeSTT: realtimestt - DEBUG - Main transcription model ready
|
||||
2025-07-22 22:27:01.707 - RealTimeSTT: realtimestt - DEBUG - Main transcription model ready
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - DEBUG - RealtimeSTT initialization completed successfully
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - DEBUG - RealtimeSTT initialization completed successfully
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - INFO - Setting listen time
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'listening'
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - INFO - State changed from 'inactive' to 'listening'
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording start
|
||||
2025-07-22 22:27:01.708 - RealTimeSTT: realtimestt - DEBUG - Waiting for recording start
|
||||
2025-07-22 22:27:01.762 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
2025-07-22 22:27:01.762 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
2025-07-22 22:27:29.920 - RealTimeSTT: realtimestt - INFO - State changed from 'wakeword' to 'listening'
|
||||
2025-07-22 22:27:29.920 - RealTimeSTT: realtimestt - INFO - State changed from 'wakeword' to 'listening'
|
||||
2025-07-22 22:27:35.174 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
2025-07-22 22:27:35.174 - RealTimeSTT: realtimestt - INFO - State changed from 'listening' to 'wakeword'
|
||||
@@ -112,6 +112,7 @@ if RUMPS_AVAILABLE:
|
||||
self.realtime = True
|
||||
self.sensitivity = 0.6
|
||||
self.device = "auto"
|
||||
self.wakeword_backend = "openwakeword"
|
||||
self.save_to_file = None
|
||||
|
||||
# Menu setup
|
||||
@@ -229,6 +230,7 @@ if RUMPS_AVAILABLE:
|
||||
recorder_config = {
|
||||
"model": self.model,
|
||||
"wake_words": self.wake_word,
|
||||
"wakeword_backend": self.wakeword_backend,
|
||||
"wake_words_sensitivity": self.sensitivity,
|
||||
"device": self.device,
|
||||
"on_recording_start": self.on_recording_start,
|
||||
@@ -422,6 +424,10 @@ def listen_cmd(
|
||||
default="auto",
|
||||
help="Device to use (auto, cuda, cpu)"
|
||||
),
|
||||
wakeword_backend: str = typer.Option(
|
||||
default="openwakeword",
|
||||
help="Wake word backend to use (pvporcupine, openwakeword)"
|
||||
),
|
||||
verbose: bool = typer.Option(
|
||||
default=False,
|
||||
help="Show verbose output and configuration"
|
||||
@@ -448,6 +454,13 @@ def listen_cmd(
|
||||
console.print(f"Valid options: {', '.join(valid_wake_words)}")
|
||||
raise typer.Exit(1)
|
||||
|
||||
# Validate wakeword backend
|
||||
valid_backends = ["pvporcupine", "openwakeword"]
|
||||
if wakeword_backend.lower() not in valid_backends:
|
||||
console.print(f"[bold red]❌ Invalid wakeword backend: {wakeword_backend}[/bold red]")
|
||||
console.print(f"Valid options: {', '.join(valid_backends)}")
|
||||
raise typer.Exit(1)
|
||||
|
||||
# Determine device
|
||||
if device == "auto":
|
||||
try:
|
||||
@@ -475,6 +488,7 @@ def listen_cmd(
|
||||
config_table.add_column("Value", style="green")
|
||||
|
||||
config_table.add_row("Wake Word", wake_word)
|
||||
config_table.add_row("Wakeword Backend", wakeword_backend)
|
||||
config_table.add_row("Model", model)
|
||||
config_table.add_row("Language", language if language else "Auto-detect")
|
||||
config_table.add_row("Device", device)
|
||||
@@ -530,6 +544,7 @@ def listen_cmd(
|
||||
recorder_config = {
|
||||
"model": model,
|
||||
"wake_words": wake_word,
|
||||
"wakeword_backend": wakeword_backend,
|
||||
"wake_words_sensitivity": sensitivity,
|
||||
"device": device,
|
||||
"on_recording_start": on_recording_start,
|
||||
@@ -734,12 +749,18 @@ def info_cmd():
|
||||
console.print(f"\n[bold cyan]Available Models:[/bold cyan]")
|
||||
console.print(", ".join(models))
|
||||
|
||||
# Available wakeword backends
|
||||
backends = ["pvporcupine", "openwakeword"]
|
||||
console.print(f"\n[bold cyan]Available Wakeword Backends:[/bold cyan]")
|
||||
console.print(", ".join(backends))
|
||||
|
||||
# Usage examples
|
||||
console.print(f"\n[bold cyan]Usage Examples:[/bold cyan]")
|
||||
examples = [
|
||||
"tooling stt listen # Use jarvis wake word with base model",
|
||||
"tooling stt listen --wake-word alexa # Use alexa wake word",
|
||||
"tooling stt listen --model tiny # Use faster tiny model",
|
||||
"tooling stt listen --wakeword-engine pvporcupine # Use pvporcupine engine",
|
||||
"tooling stt test --duration 5 # Test for 5 seconds",
|
||||
"tooling stt listen --save-to-file transcripts.txt # Save to file",
|
||||
"tooling stt statusbar # Launch status bar app"
|
||||
|
||||
Reference in New Issue
Block a user