tinyhumansai/openhuman · error

voice provider '{}' does not support TTS (capability: {})

Error message

voice provider '{}' does not support TTS (capability: {})

What it means

TTS counterpart of the capability check: the slug exists in voice_providers but the entry does not declare TTS (e.g. an STT-only provider chosen for speech synthesis), so no TTS client can be built.

Source

Thrown at src/openhuman/voice/factory/helpers.rs:159

/// Create a TTS provider by looking up a slug in `config.voice_providers`.
pub(super) fn create_tts_provider_by_slug(
    slug: &str,
    voice: &str,
    config: &Config,
) -> anyhow::Result<Box<dyn TtsProvider>> {
    let entry = config
        .voice_providers
        .iter()
        .find(|p| p.slug == slug)
        .ok_or_else(|| {
            anyhow::anyhow!(
                "no voice provider with slug '{}' found in voice_providers",
                slug
            )
        })?;

    if !entry.capability.supports_tts() {
        return Err(anyhow::anyhow!(
            "voice provider '{}' does not support TTS (capability: {})",
            slug,
            entry.capability.as_str()
        ));
    }

    let effective_voice = if voice.trim().is_empty() {
        entry.default_tts_voice.as_deref().unwrap_or("default")
    } else {
        voice
    };

    let api_key = crate::openhuman::inference::provider::factory::lookup_key_for_slug(slug, config)
        .unwrap_or_default();

    debug!(
        "{LOG_PREFIX} creating external TTS provider slug={slug} voice={effective_voice} \
         endpoint={} key_present={}",

View on GitHub (pinned to 7491200858)

Solutions

  1. Select a provider whose capability includes TTS
  2. Or declare tts capability on the entry in config.toml
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/voice/factory/helpers.rs:159 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/69c19306a60c02df. Report an issue: GitHub.