moeru-ai/airi · warning

Invalid transcription model "${currentModel}" detected. Rese

Error message

Invalid transcription model "${currentModel}" detected. Resetting to default "whisper-1".

What it means

Emitted by the OpenAI-compatible audio transcription settings page in onMounted. The page validates the persisted transcription model with isValidTranscriptionModel(); if the stored value is not a recognized transcription model (e.g. a chat model such as gpt-4o-mini), it warns and overwrites the setting with 'whisper-1'. It is a self-healing guard against provider settings saved for a different provider kind, not a thrown exception.

Source

Thrown at packages/stage-pages/src/pages/settings/providers/transcription/openai-compatible-audio-transcription.vue:173

  if (modelName.includes('gpt-4') && !modelName.includes('transcribe') && !modelName.includes('whisper'))
    return false
  return true
}

// Initialize provider settings on mount
onMounted(async () => {
  providersStore.initializeProvider(providerId)
  // Initialize baseUrl with default if not set
  if (!providers.value[providerId]?.baseUrl) {
    const defaultBaseUrl = providersStore.getDefaultProviderConfig(providerId).baseUrl as string | undefined
    if (defaultBaseUrl) {
      baseUrl.value = defaultBaseUrl
    }
  }
  // Validate and reset model if it's invalid (e.g., a chat model)
  const currentModel = model.value
  if (currentModel && !isValidTranscriptionModel(currentModel)) {
    console.warn(`Invalid transcription model "${currentModel}" detected. Resetting to default "whisper-1".`)
    model.value = 'whisper-1'
  }
  // Load models if API key and base URL are configured
  if (apiKey.value && baseUrl.value) {
    await providersStore.loadModelsForConfiguredProviders()
    await providersStore.fetchModelsForProvider(providerId)
  }
})

// Watch for API key and base URL changes to reload models
watch([apiKey, baseUrl], async ([newApiKey, newBaseUrl]) => {
  if (newApiKey && newBaseUrl) {
    await providersStore.fetchModelsForProvider(providerId)
  }
})

// Watch model changes to save to provider config
watch(model, () => {

View on GitHub (pinned to 677329427f)

Solutions

  1. Let the auto-reset apply (the page already writes model = 'whisper-1'), then select a real transcription model in the provider settings and save
  2. Inspect the persisted providers store (localStorage) for the openai-compatible-audio-transcription entry and remove the stale model value
  3. If your endpoint offers transcription models the validator rejects, extend isValidTranscriptionModel to accept them
  4. With API key and base URL configured, let the page fetch models and pick one returned by the endpoint

Example fix

// before (settings page saves whatever the user typed)
model.value = selectedModelId

// after (validate at save time)
if (selectedModelId && !isValidTranscriptionModel(selectedModelId)) {
  console.warn(`Invalid transcription model "${selectedModelId}" detected. Resetting to default "whisper-1".`)
  model.value = 'whisper-1'
}
else {
  model.value = selectedModelId
}
Defensive patterns

Strategy: validation

Validate before calling

// Before saving the transcription model in provider settings
import { isValidTranscriptionModel } from '../validations'

function saveTranscriptionModel(value: string) {
  if (!isValidTranscriptionModel(value)) {
    console.warn(`Invalid transcription model "${value}" detected. Resetting to default "whisper-1".`)
    return 'whisper-1'
  }
  return value
}

Type guard

function isTranscriptionModelName(value: unknown): value is string {
  return typeof value === 'string' && value.length > 0 && isValidTranscriptionModel(value)
}

Prevention

When it happens

Trigger: Opening Settings > Providers > openai-compatible-audio-transcription when the stored model value fails isValidTranscriptionModel(): a chat model id saved in the field earlier, a hand-edited providers localStorage entry, or a value left over from before this provider was split from a shared config.

Common situations: User pasted a chat model id into the transcription model field; settings persisted by an older app version where the model field was shared across provider kinds; a custom OpenAI-compatible endpoint whose transcription models are not on the validator's allowlist.

Related errors


AI-assisted analysis of moeru-ai/airi@677329427f (2026-08-18). Data as JSON: /api/errors/aa1c5012b8ee7aaa. Report an issue: GitHub.