Zackriya-Solutions/meetily · error · anyhow::Error

Retranscription requires Whisper. Current provider '{}' does

Error message

Retranscription requires Whisper. Current provider '{}' does not support retranscription with language selection.

What it means

The transcript_settings row (id='1') has a provider that is neither 'localWhisper' nor 'whisper' - for example a cloud API provider or 'parakeet' - so there is no local Whisper model name to resolve for retranscription with language selection. This is a configuration gate: language-selected retranscription is local-Whisper-only by design.

Source

Thrown at frontend/src-tauri/src/audio/retranscription.rs:612

        "SELECT provider, model FROM transcript_settings WHERE id = '1'"
    )
    .fetch_optional(app_state.db_manager.pool())
    .await
    .map_err(|e| {
        error!("Failed to query transcript config: {}", e);
        anyhow!("Failed to query transcript config: {}", e)
    })?;

    match result {
        Some((provider, model)) => {
            info!("Found transcript config: provider={}, model={}", provider, model);

            // Check if provider is Whisper-based
            if provider == "localWhisper" || provider == "whisper" {
                Ok(model)
            } else {
                error!("Retranscription requires Whisper provider, but configured provider is: {}", provider);
                Err(anyhow!("Retranscription requires Whisper. Current provider '{}' does not support retranscription with language selection.", provider))
            }
        },
        None => {
            // Default to configured Whisper model if no config exists
            warn!("No transcript config found, using default model '{}'", DEFAULT_WHISPER_MODEL);
            Ok(DEFAULT_WHISPER_MODEL.to_string())
        }
    }
}

/// Get or initialize the Parakeet engine, auto-loading the model if needed
async fn get_or_init_parakeet<R: Runtime>(
    app: &AppHandle<R>,
    requested_model: Option<&str>,
) -> Result<Arc<ParakeetEngine>> {
    use crate::parakeet_engine::commands::PARAKEET_ENGINE;

    let engine = {

View on GitHub (pinned to 0281737d87)

Solutions

  1. Pass an explicit model (and provider='whisper') when invoking start_retranscription - the explicit model bypasses get_configured_whisper_model and its provider check.
  2. Or switch the transcription provider back to Local Whisper in Settings.
  3. Or use plain retranscription without language selection.
  4. If you believe the provider IS whisper-based, check the stored string in transcript_settings for typos/case (accepted values: 'localWhisper', 'whisper').

Example fix

// frontend: bypass the config-provider gate with explicit args
// before
await invoke('start_retranscription', { meetingId, meetingFolderPath, language: 'en' });
// after
await invoke('start_retranscription', {
  meetingId,
  meetingFolderPath,
  language: 'en',
  model: 'base',
  provider: 'whisper',
});
Defensive patterns

Strategy: validation

Validate before calling

// Frontend: check provider compatibility before opening the language dialog
const settings = await invoke('get_transcript_settings');
const canRetranscribeWithLanguage =
  settings.provider === 'localWhisper' || settings.provider === 'whisper';
if (!canRetranscribeWithLanguage) disableLanguageRetranscribeUI();

Try / catch

// Branch on the provider message and guide the user
if (String(err).includes('Retranscription requires Whisper')) {
  showInfo('Switch the transcription provider to Local Whisper, or pass a model explicitly.');
}

Prevention

When it happens

Trigger: Calling retranscription with language=Some(...) and model=None while the app's configured transcription provider is a cloud API or Parakeet.

Common situations: User switched transcription provider to a cloud service in Settings, then later uses 'Retranscribe with language' which is local-only; provider string case or naming mismatch after a settings migration.

Related errors


AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16). Data as JSON: /api/errors/78336ec37d7df113. Report an issue: GitHub.