{"record":{"id":"21bc0277351c9e3e","repo":"tinyhumansai/openhuman","slug":"no-voice-provider-with-slug-found-in-voice-pr","errorCode":null,"errorMessage":"no voice provider with slug '{}' found in voice_providers","messagePattern":"no voice provider with slug '(.+?)' found in voice_providers","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/voice/factory/helpers.rs","lineNumber":102,"sourceCode":"        .to_string()\n}\n\n// ---------------------------------------------------------------------------\n// Slug-keyed provider creation\n// ---------------------------------------------------------------------------\n\n/// Create an STT provider by looking up a slug in `config.voice_providers`.\npub(super) fn create_stt_provider_by_slug(\n    slug: &str,\n    model: &str,\n    config: &Config,\n) -> anyhow::Result<Box<dyn SttProvider>> {\n    let entry = config\n        .voice_providers\n        .iter()\n        .find(|p| p.slug == slug)\n        .ok_or_else(|| {\n            anyhow::anyhow!(\n                \"no voice provider with slug '{}' found in voice_providers\",\n                slug\n            )\n        })?;\n\n    if !entry.capability.supports_stt() {\n        return Err(anyhow::anyhow!(\n            \"voice provider '{}' does not support STT (capability: {})\",\n            slug,\n            entry.capability.as_str()\n        ));\n    }\n\n    let effective_model = if model.trim().is_empty() {\n        entry.default_stt_model.as_deref().unwrap_or(\"default\")\n    } else {\n        model\n    };","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/voice/factory/helpers.rs#L84-L120","documentation":"create_stt_provider_by_slug looks up the requested slug in config.voice_providers; this fires when no entry has that slug — the provider was never configured or the slug is misspelled — before any capability check or client construction.","triggerScenarios":"Thrown at src/openhuman/voice/factory/helpers.rs:102 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the provider under [[voice_providers]] in config.toml with that slug","Check the slug spelling against the configured voice_providers entries"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}