🎙️ Goobits STT
A pure speech-to-text engine with multiple operation modes and advanced text formatting. Features real-time transcription, WebSocket server capabilities, and comprehensive text processing with internationalization support. Built on Whisper models for accurate transcription across various languages and use cases.
🔗 Related Projects
- Matilda - AI assistant
- Goobits STT - Speech-to-Text engine (this project)
- Goobits TTS - Text-to-Speech engine
- Goobits TTT - Text-to-Text processing
📋 Table of Contents
- Installation
- Basic Usage
- Configuration
- Operation Modes
- Performance Optimization
- Text Formatting Features
- Server Deployment
- Testing & Development
- Model Comparison
- Audio Features
- Tech Stack
📦 Installation
# Install globally with pipx (recommended)
pipx install . # Install globally, isolated environment
pipx install .[dev] # Install with development dependencies
# Or with pip for development
pip install -e .[dev] # Install editable with dev dependencies
stt --version # Verify installation
stt --listen-once # Test basic functionality
🎯 Basic Usage
stt --listen-once # Single utterance with VAD
stt --conversation # Always listening mode
stt --tap-to-talk=f8 # Tap F8 to start/stop recording
stt --hold-to-talk=space # Hold spacebar to record
stt --server --port=8769 # Run WebSocket server
⚙️ Configuration
# Edit main configuration
nano config.json
# Configure Whisper model
stt --model large-v3-turbo --language en
# Audio settings
stt --device "USB Audio" --sample-rate 16000
# Output formats
stt --format json | jq -r '.text'
stt --format text --no-formatting
🎤 Operation Modes
# Quick transcription
stt --listen-once | llm-process
# Interactive conversation
stt --conversation | tts-speak
# Hotkey control
stt --tap-to-talk=f8 # Toggle recording with F8
stt --hold-to-talk=ctrl+space # Push-to-talk mode
# Server mode for remote clients
stt --server --host 0.0.0.0 --port 8769
🚀 Performance Optimization
# GPU acceleration (if available)
stt --model base --device cuda
# CPU optimization
stt --model tiny --device cpu
# Model selection by speed/quality
stt --model tiny # Fastest, lower quality
stt --model base # Balanced (default)
stt --model large-v3-turbo # Best quality
🎭 Text Formatting Features
# Advanced entity detection
stt --listen-once # "Call me at 555-123-4567" → "Call me at (555) 123-4567"
stt --listen-once # "Go to github dot com" → "Go to github.com"
stt --listen-once # "Three point one four" → "3.14"
# Multilingual support
stt --language es # Spanish formatting rules
stt --language en # English formatting (default)
# Disable formatting
stt --no-formatting # Raw transcription output
🔧 Server Deployment
# Basic server
stt --server
# Production with SSL
stt --server --port 443 --host 0.0.0.0
# Docker deployment
docker run -p 8080:8080 -p 8769:8769 sttservice/transcribe
🎯 Testing & Development
# Run test suite
pytest # All tests
pytest tests/text_formatting/ # Specific module
pytest -v -n auto # Parallel with verbose output
# Code quality
ruff check src/ tests/ # Linting
black src/ tests/ stt.py # Formatting
mypy src/ stt.py # Type checking
# Test with real audio
pytest tests/__fixtures__/audio/
🔧 Model Comparison
| Model | Speed | Quality | Memory | Best For |
|---|---|---|---|---|
| tiny | ⚡ Fastest | 🌟 Basic | 💾 39MB | Real-time, low resources |
| base | 🔥 Fast | 🌟🌟 Good | 💾 74MB | General use (default) |
| small | ⚡ Quick | 🌟🌟🌟 Better | 💾 244MB | Accuracy balance |
| medium | 🔥 Moderate | 🌟🌟🌟🌟 Great | 💾 769MB | High accuracy |
| large-v3-turbo | 🔥 Fast | 🏆 Best | 💾 1550MB | Production quality |
Choose based on your speed/accuracy requirements and available system resources.
🎙️ Audio Features
- Real-time streaming: Opus audio encoding for efficient transmission
- Voice Activity Detection: Automatic speech detection and silence handling
- Multiple input devices: Support for various microphones and audio interfaces
- Hotkey integration: System-wide keyboard shortcuts for hands-free operation
- Background operation: Run as daemon with minimal resource usage
🛠️ Tech Stack
Core Technologies
- 🧠 AI/ML: OpenAI Whisper (faster-whisper), CTranslate2, PyTorch
- 🎙️ Audio: OpusLib, NumPy, custom pipe-based audio capture
- ⌨️ System: pynput for global hotkeys, cross-platform support
Text Processing
- 📝 NLP: spaCy, deepmultilingualpunctuation
- 🌍 i18n: Multi-language entity detection and formatting
- 🔧 Parsing: pyparsing for complex text transformations
- 📊 Output: JSON/text formatting with rich entity support
Development & Testing
- 🧪 Testing: pytest with asyncio, xdist, custom plugins
- 📊 Quality: ruff (linting), black (formatting), mypy (typing)
- 🔍 Security: bandit for security analysis
- 📦 Build: setuptools, pyproject.toml configuration
Deployment
- 🐳 Containerization: Docker with CUDA 12.1 support
- 🖥️ Interface: FastAPI admin dashboard (Docker), responsive web UI
- 🔒 Security: JWT authentication, RSA+AES encryption (Docker)
- 📈 Monitoring: Structured logging, health checks
- ☁️ Cloud: Ready for production deployment with SSL/TLS
Metadata
Release files for goobits-stt 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| goobits_stt-1.0.0.tar.gz | 143.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| goobits_stt-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 305.4 kB
Release files / goobits_stt-1.0.0.tar.gz
| Download URL | goobits_stt-1.0.0.tar.gz |
|---|---|
| Size | 143.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67756f1282532f9a2e29208e210dbbe3f8f3756b3f53f8bccc4c745179031cb4
|
|
BLAKE2b-256 checksum How to use checksums |
5eb5d3529f95e6fbc3d74c8f730e1bec77e43de7a022fb4ebe83c63ab36d5a8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / goobits_stt-1.0.0-py3-none-any.whl
| Download URL | goobits_stt-1.0.0-py3-none-any.whl |
|---|---|
| Size | 161.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fcfbe0da5e8fc548ab9e3bc4139ac35eea210e09c3a413b4a274f6cc6f7ca857
|
|
BLAKE2b-256 checksum How to use checksums |
9954d1aa492e45fa3952e0746bb14a9469a584bf60c6270df8cade1e3d11e625
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|