feat(transcription): add support for alternative transcription backends #18

Merged
casper-stevens merged 1 commit from development_alternative_transcription_models into development 2026-04-14 14:49:04 +00:00
Member

Summary

  • Added TranscriptionBackend enum to hero_slides_lib with Groq (default) and LocalModel variants
  • Added user settings persistence to ~/.config/hero_slides/settings.json via two new RPC methods: user.settings.get and user.settings.save
  • Updated voice.transcribe to read persisted settings and route to the correct backend
  • Local model backend posts directly to any OpenAI-compatible /audio/transcriptions endpoint with a configurable URL and model name (works with Whisper.cpp, Voxtral, etc.)
  • Added Transcription Settings card in the Admin tab with backend selector and conditional local model fields
  • Settings are pre-populated on page load and persisted on save

Closes #16

Changes

  • crates/hero_slides_lib/src/voice.rsTranscriptionBackend enum, HTTP multipart helper, updated voice_transcribe signature
  • crates/hero_slides_server/src/rpc.rsUserSettings / TranscriptionSettings structs, persistence helpers, two new RPC handlers, updated handle_voice_transcribe
  • crates/hero_slides_server/openrpc.json — added user.settings.get and user.settings.save method entries
  • crates/hero_slides_ui/templates/index.html — Transcription Settings admin section
  • crates/hero_slides_ui/static/js/dashboard.jsloadSettings, saveTranscriptionSettings, onTranscriptionBackendChange

Test Results

75 tests run, 74 passed, 0 failed (1 ignored — requires live AI service)

## Summary - Added `TranscriptionBackend` enum to `hero_slides_lib` with Groq (default) and LocalModel variants - Added user settings persistence to `~/.config/hero_slides/settings.json` via two new RPC methods: `user.settings.get` and `user.settings.save` - Updated `voice.transcribe` to read persisted settings and route to the correct backend - Local model backend posts directly to any OpenAI-compatible `/audio/transcriptions` endpoint with a configurable URL and model name (works with Whisper.cpp, Voxtral, etc.) - Added Transcription Settings card in the Admin tab with backend selector and conditional local model fields - Settings are pre-populated on page load and persisted on save ## Related Issue Closes https://forge.ourworld.tf/lhumina_code/hero_slides/issues/16 ## Changes - `crates/hero_slides_lib/src/voice.rs` — `TranscriptionBackend` enum, HTTP multipart helper, updated `voice_transcribe` signature - `crates/hero_slides_server/src/rpc.rs` — `UserSettings` / `TranscriptionSettings` structs, persistence helpers, two new RPC handlers, updated `handle_voice_transcribe` - `crates/hero_slides_server/openrpc.json` — added `user.settings.get` and `user.settings.save` method entries - `crates/hero_slides_ui/templates/index.html` — Transcription Settings admin section - `crates/hero_slides_ui/static/js/dashboard.js` — `loadSettings`, `saveTranscriptionSettings`, `onTranscriptionBackendChange` ## Test Results 75 tests run, 74 passed, 0 failed (1 ignored — requires live AI service)
feat(transcription): add support for alternative transcription backends
Some checks failed
Test / test (push) Failing after 1m5s
Test / test (pull_request) Failing after 1m5s
9c042e5cb1
Adds a user settings system backed by ~/.config/hero_slides/settings.json
and a Transcription Settings card in the Admin UI. Users can now switch
between Groq (default) and any local OpenAI-compatible transcription
server (e.g. Whisper.cpp, Voxtral). The local model backend accepts a
configurable endpoint URL and model name.

#16
casper-stevens merged commit 155b4c4fb4 into development 2026-04-14 14:49:04 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_slides!18
No description provided.