From ddd12dd4f6360828439998f47992b2c2cd9cf08c Mon Sep 17 00:00:00 2001 From: simianastronaut Date: Sun, 15 Mar 2026 16:31:55 -0400 Subject: [PATCH] feat(config): support initial_prompt in transcription config for proper noun recognition Add `initial_prompt: Option` to `TranscriptionConfig` and pass it as the `prompt` field in the Whisper API multipart POST when present. This lets users bias transcription toward expected vocabulary (proper nouns, technical terms) via the config file. Closes #2881 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/channels/transcription.rs | 4 ++++ src/config/schema.rs | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/channels/transcription.rs b/src/channels/transcription.rs index a7533c0a1..12986bfc4 100644 --- a/src/channels/transcription.rs +++ b/src/channels/transcription.rs @@ -78,6 +78,10 @@ pub async fn transcribe_audio( form = form.text("language", lang.clone()); } + if let Some(ref prompt) = config.initial_prompt { + form = form.text("prompt", prompt.clone()); + } + let resp = client .post(&config.api_url) .bearer_auth(&api_key) diff --git a/src/config/schema.rs b/src/config/schema.rs index 25c154318..06cf1ee70 100644 --- a/src/config/schema.rs +++ b/src/config/schema.rs @@ -595,6 +595,11 @@ pub struct TranscriptionConfig { /// Optional language hint (ISO-639-1, e.g. "en", "ru"). #[serde(default)] pub language: Option, + /// Optional initial prompt to bias transcription toward expected vocabulary + /// (proper nouns, technical terms, etc.). Sent as the `prompt` field in the + /// Whisper API request. + #[serde(default)] + pub initial_prompt: Option, /// Maximum voice duration in seconds (messages longer than this are skipped). #[serde(default = "default_transcription_max_duration_secs")] pub max_duration_secs: u64, @@ -607,6 +612,7 @@ impl Default for TranscriptionConfig { api_url: default_transcription_api_url(), model: default_transcription_model(), language: None, + initial_prompt: None, max_duration_secs: default_transcription_max_duration_secs(), } }