Archived
172 lines
4.4 KiB
Markdown
172 lines
4.4 KiB
Markdown
# Live Transcription App
|
|||
|
|
|
||
|
|
A desktop application for live speech-to-text transcription with OBS compatibility. Supports multiple transcription backends including local/remote Whisper and ElevenLabs Scribe, with GPU acceleration for NVIDIA, AMD, and Intel GPUs.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
- **Multiple Transcription Backends:**
|
||
|
|
- Whisper (Local) - Run OpenAI's Whisper model locally
|
||
|
|
- Whisper (Remote) - Use OpenAI's Whisper API
|
||
|
|
- ElevenLabs (Scribe) - Use ElevenLabs' Scribe v1 speech-to-text API
|
||
|
|
|
||
|
|
- **OBS Integration:**
|
||
|
|
- Transparent/frameless window mode
|
||
|
|
- Always-on-top option
|
||
|
|
- Customizable text display
|
||
|
|
|
||
|
|
- **Customization Options:**
|
||
|
|
- Text duration control (1-60 seconds)
|
||
|
|
- Text and background colors
|
||
|
|
- Font selection (system fonts + Google Fonts)
|
||
|
|
- Adjustable font size (16-72px)
|
||
|
|
|
||
|
|
- **Advanced Features:**
|
||
|
|
- GPU acceleration (NVIDIA CUDA, AMD ROCm, Intel OpenVINO)
|
||
|
|
- Ambient noise calibration
|
||
|
|
- Persistent settings storage
|
||
|
|
- Real-time audio level monitoring
|
||
|
|
- Queue management for optimal performance
|
||
|
|
- Configurable transcription speed (1-5 second chunks)
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
1. Clone the repository:
|
||
|
|
```bash
|
||
|
|
git clone <repository-url>
|
||
|
|
cd closed-caption-app
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Install dependencies:
|
||
|
|
```bash
|
||
|
|
npm install
|
||
|
|
```
|
||
|
|
|
||
|
|
3. Install Whisper (for local transcription):
|
||
|
|
- See [INSTALL_WHISPER.md](INSTALL_WHISPER.md) for detailed instructions
|
||
|
|
|
||
|
|
4. Configure environment:
|
||
|
|
```bash
|
||
|
|
cp .env.example .env
|
||
|
|
# Edit .env with your API keys
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### Settings Page
|
||
|
|
|
||
|
|
Access the settings page by clicking the ⚙️ Settings button in the main interface. The settings page allows you to:
|
||
|
|
|
||
|
|
- Configure API keys for OpenAI and ElevenLabs
|
||
|
|
- Select Whisper model size (tiny to large)
|
||
|
|
- Enable GPU acceleration (auto-detects NVIDIA/AMD/Intel)
|
||
|
|
- Calibrate ambient noise levels
|
||
|
|
- Customize display settings (fonts, colors, duration)
|
||
|
|
- Test API connections
|
||
|
|
- Save settings persistently
|
||
|
|
|
||
|
|
### Environment Variables (Optional)
|
||
|
|
|
||
|
|
You can also edit `.env` file for initial configuration:
|
||
|
|
|
||
|
|
```env
|
||
|
|
# For local Whisper
|
||
|
|
WHISPER_MODEL=base
|
||
|
|
|
||
|
|
# For remote Whisper (OpenAI API)
|
||
|
|
OPENAI_API_KEY=your_api_key_here
|
||
|
|
|
||
|
|
# For ElevenLabs speech-to-text
|
||
|
|
ELEVENLABS_API_KEY=your_api_key_here
|
||
|
|
|
||
|
|
# Audio threshold for silence detection
|
||
|
|
AUDIO_THRESHOLD=0.01
|
||
|
|
```
|
||
|
|
|
||
|
|
Note: Settings configured through the UI will override environment variables.
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
1. Start the application:
|
||
|
|
```bash
|
||
|
|
npm start
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Click ⚙️ Settings to configure:
|
||
|
|
- API keys for remote services
|
||
|
|
- GPU acceleration (if available)
|
||
|
|
- Audio threshold and ambient noise calibration
|
||
|
|
- Display preferences
|
||
|
|
|
||
|
|
3. Select your preferred transcription backend
|
||
|
|
4. Configure display settings (color, font, duration)
|
||
|
|
5. Click "Start Recording" to begin transcription
|
||
|
|
6. Use "Open Display Window" for OBS capture
|
||
|
|
|
||
|
|
### Ambient Noise Calibration
|
||
|
|
|
||
|
|
1. Go to Settings → Audio Processing
|
||
|
|
2. Click "Start Calibration"
|
||
|
|
3. Stay quiet for 10 seconds
|
||
|
|
4. The app will learn your room's ambient noise level
|
||
|
|
5. Threshold will be automatically adjusted
|
||
|
|
|
||
|
|
### OBS Setup
|
||
|
|
|
||
|
|
1. Add a "Window Capture" source in OBS
|
||
|
|
2. Select "Live Transcription" window
|
||
|
|
3. Enable "Allow Transparency" in the source properties
|
||
|
|
4. Position and scale as needed
|
||
|
|
|
||
|
|
### Keyboard Shortcuts
|
||
|
|
|
||
|
|
- `ESC` - Exit display mode (when in fullscreen)
|
||
|
|
|
||
|
|
## Development
|
||
|
|
|
||
|
|
Run in development mode:
|
||
|
|
```bash
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
## Build
|
||
|
|
|
||
|
|
Build for distribution:
|
||
|
|
```bash
|
||
|
|
npm run build
|
||
|
|
```
|
||
|
|
|
||
|
|
## System Requirements
|
||
|
|
|
||
|
|
- Node.js 16+
|
||
|
|
- Python 3.8+ (for local Whisper)
|
||
|
|
- ffmpeg (for audio processing)
|
||
|
|
- Microphone access
|
||
|
|
|
||
|
|
## Documentation
|
||
|
|
|
||
|
|
- [Settings Guide](SETTINGS.md) - Detailed guide for all settings and configuration options
|
||
|
|
- [Whisper Installation](INSTALL_WHISPER.md) - Complete guide for installing Whisper with GPU support
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### No transcription appearing
|
||
|
|
- Check microphone permissions
|
||
|
|
- Verify selected backend is configured (use Settings page)
|
||
|
|
- Check audio level meter is responding to sound
|
||
|
|
- Verify audio threshold isn't too high
|
||
|
|
|
||
|
|
### Whisper local not working
|
||
|
|
- Ensure Whisper is installed: `whisper --help`
|
||
|
|
- Check Python and ffmpeg are in PATH
|
||
|
|
- Try a smaller model (tiny/base) for testing
|
||
|
|
- Check GPU detection in Settings if using acceleration
|
||
|
|
|
||
|
|
### Window not transparent in OBS
|
||
|
|
- Enable "Allow Transparency" in OBS source settings
|
||
|
|
- Use the separate display window (Open Display Window button)
|
||
|
|
|
||
|
|
### High CPU/GPU usage
|
||
|
|
- Use Settings to select smaller Whisper model
|
||
|
|
- Increase transcription chunk size (3-5 seconds)
|
||
|
|
- Calibrate ambient noise to reduce unnecessary processing
|
||
|
|
- Check queue status for backlog
|