Skip to content

Commit fe7d01f

Browse files
committed
feat: add optional transcription with multi-provider support
- Add transcription.go with whisper.cpp, Vosk, OpenAI API, and Python script providers - Integrate transcription into main app with Ctrl+T keybinding - Add transcription settings to UI with provider status indicators - Show transcription status in memo list and include in search - Auto-transcribe option for new recordings - Complete setup documentation in README
1 parent 27d6a36 commit fe7d01f

3 files changed

Lines changed: 945 additions & 41 deletions

File tree

README.md

Lines changed: 83 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Audio configuration interface displaying hardware/audio settings, available devi
3636
- Add tags for organization
3737
- Delete memos
3838
- Export memos to Downloads folder
39+
- **Optional transcription** with multiple provider support
3940

4041
### User Interface
4142
- Terminal user interface using Bubble Tea
@@ -115,16 +116,18 @@ go build -o voicelog main.go
115116
| `ctrl+x` | Stop playback |
116117
| `?` | Show help |
117118
| `ctrl+s` | Settings |
118-
| `ctrl+t` | Generate test file |
119+
| `ctrl+t` | Transcribe selected memo |
120+
| `F5` | Generate test file |
119121
| `ESC/q` | Quit |
120122

121123
### Basic Operations
122124

123125
1. **Recording**: Press `SPACE` to start/stop recording
124126
2. **Playback**: Select a memo and press `ENTER` to play
125-
3. **Settings**: Press `ctrl+s` to configure audio devices
126-
4. **Test File**: Press `ctrl+t` to generate a 5-second 440Hz test tone
127-
5. **Export**: Press `e` to export selected memo to Downloads folder
127+
3. **Transcription**: Press `ctrl+t` to transcribe selected memo (optional)
128+
4. **Settings**: Press `ctrl+s` to configure audio devices and transcription
129+
5. **Test File**: Press `F5` to generate a 5-second 440Hz test tone
130+
6. **Export**: Press `ctrl+e` to export selected memo to Downloads folder
128131

129132
### Audio Processing Features
130133

@@ -146,21 +149,96 @@ VoiceLog includes advanced audio processing capabilities:
146149
- **Compact Mode**: Memo list becomes compact when audio visualizer is active
147150
- **Real-Time Updates**: Waveform and meters update in real-time during operation
148151

152+
### Transcription (Optional)
153+
154+
VoiceLog supports optional voice-to-text transcription through a flexible plugin system. Transcription is **completely optional** - the application works perfectly without it.
155+
156+
#### Supported Transcription Providers
157+
158+
1. **whisper.cpp (Recommended - Local & Private)**
159+
- High accuracy, supports many languages
160+
- Runs entirely offline - no internet required
161+
- Complete privacy - audio never leaves your machine
162+
- Installation: [github.com/ggerganov/whisper.cpp](https://github.com/ggerganov/whisper.cpp)
163+
164+
2. **OpenAI Whisper API (Cloud-based - Highest Accuracy)**
165+
- Highest accuracy available
166+
- Requires internet connection and API key
167+
- Install: `pip install openai`
168+
- Set `OPENAI_API_KEY` environment variable
169+
170+
3. **Vosk (Lightweight & Fast)**
171+
- Smaller models, faster processing
172+
- Good for real-time applications
173+
- Installation: [alphacephei.com/vosk](https://alphacephei.com/vosk/)
174+
175+
4. **Custom Python Script**
176+
- Use any transcription API (AssemblyAI, Rev.ai, etc.)
177+
- Write your own integration script
178+
- Full flexibility for custom workflows
179+
180+
#### Quick Setup Examples
181+
182+
**whisper.cpp Setup (Linux/macOS):**
183+
```bash
184+
# Clone and build whisper.cpp
185+
git clone https://github.com/ggerganov/whisper.cpp
186+
cd whisper.cpp && make
187+
188+
# Download a model (base.en for English, base for multilingual)
189+
./models/download-ggml-model.sh base.en
190+
191+
# The whisper binary will be auto-detected by VoiceLog
192+
```
193+
194+
**OpenAI Whisper API Setup:**
195+
```bash
196+
# Install the OpenAI library
197+
pip install openai
198+
199+
# Set your API key (get one from https://platform.openai.com)
200+
export OPENAI_API_KEY="your-api-key-here"
201+
```
202+
203+
#### Using Transcription
204+
205+
1. **Enable in Settings**: Press `ctrl+s` → Navigate to "Transcription:" → Toggle to ON
206+
2. **Select Provider**: Navigate to "Default Provider:" → Choose your installed provider
207+
3. **Transcribe**: Press `ctrl+t` on any memo to transcribe it
208+
4. **Auto-Transcribe**: Enable "Auto Transcribe:" to automatically transcribe new recordings
209+
210+
#### Transcription Features
211+
212+
- **Visual Indicators**: Transcribed memos show a 📝 icon in the memo list
213+
- **Search Integration**: Search through transcribed text using the built-in filter
214+
- **Provider Status**: Settings show ✓/✗ status for each provider's availability
215+
- **Flexible Configuration**: Each provider can be configured independently
216+
- **Auto-Detection**: VoiceLog automatically detects available transcription tools
217+
218+
#### Privacy & Performance
219+
220+
- **Local Options**: whisper.cpp and Vosk run entirely on your machine
221+
- **Cloud Options**: OpenAI Whisper API provides highest accuracy but requires internet
222+
- **No Telemetry**: VoiceLog never sends any data anywhere (except when using API providers)
223+
- **Storage**: Transcriptions are stored locally alongside memo metadata
224+
149225
## Configuration
150226

151227
Configuration is stored in `~/.voicelog/config.json` and includes:
152228
- Audio device settings
153229
- Sample rate and format preferences
154230
- Audio processing settings (normalization, silence trimming, clipping detection)
231+
- Transcription settings (optional)
155232
- Memo storage path
156233
- Keybindings
157234

158235
### File Structure
159236
```
160237
~/.voicelog/
161238
├── config.json # Application configuration
239+
├── transcription.json # Transcription settings (if enabled)
162240
├── memos/ # Voice memo storage
163-
│ ├── metadata.json # Memo metadata
241+
│ ├── metadata.json # Memo metadata (includes transcriptions)
164242
│ └── memo_*.wav # Audio files
165243
└── voicelog.log # Application logs
166244
```

0 commit comments

Comments
 (0)