Allows use of generic OpenAI-compatible speech-to-text services, such as (but not limited to):
serverHighlights:
requires_external_vad=False per home-assistant/core#167246, so the Assist pipeline does not run a second VAD on top of this integration's own.Relaxed / Default / Aggressive levels.Have HACS installed; this will allow you to update easily.
[!NOTE] If the button above doesn't work, add
https://github.com/NickM-27/hass_local_openai_sttas a custom repository of type Integration in HACS.
Local OpenAI STT integration.local_openai_stt folder from latest release to the custom_components folder in your config directory.[!NOTE] Requires a Home Assistant version that includes #167246 (2026.5 or newer). The integration depends on
pysilero-vad, which only ships wheels for manylinux x86_64/aarch64, macOS arm64, and Windows. Home Assistant OS (Alpine/musl) is not currently supported.
After installation, configure the integration through Home Assistant's UI:
Settings → Devices & Services.Add Integration.Local OpenAI STT.Once configured, the integration appears as an STT entity that you can select in any Voice Assistant pipeline (Settings → Voice assistants).
/v1.GET /v1/models. If your server doesn't implement that endpoint, the model field falls back to a free-text input — type the model name your server expects.prompt field on every request. Useful for biasing toward unusual vocabulary, names, or acronyms.metadata.language (sent to Whisper as ISO-639-1, e.g. en from en-US).The integration owns end-of-speech detection. Three knobs in the options flow:
Relaxed / Default / Aggressive, matching HA's own values (1.25 s / 0.7 s / 0.25 s of trailing silence). Mirrors homeassistant.components.assist_pipeline.vad.VadSensitivity.max(0.1, threshold * 0.4) so probabilities between the two are treated as "uncertain" and don't cut the sentence off mid-utterance.If VAD never confidently detects speech, a hardcoded 5-second timeout still ships the buffered audio to Whisper. Long utterances are unbounded as long as voice activity continues.
Enable Write per-session VAD logs in the options flow to dump one log file per STT request to <config>/local_openai_stt_sessions/<ISO-timestamp>.log. Each file records every VAD chunk's probability, classification, and accumulated speech/silence — useful when tuning thresholds for an unusual room or microphone. Older sessions are pruned automatically once you exceed the keep count.
36 commits
Python
100.0%
Allows use of generic OpenAI-compatible speech-to-text services, such as (but not limited to):
serverHighlights:
requires_external_vad=False per home-assistant/core#167246, so the Assist pipeline does not run a second VAD on top of this integration's own.Relaxed / Default / Aggressive levels.Have HACS installed; this will allow you to update easily.
[!NOTE] If the button above doesn't work, add
https://github.com/NickM-27/hass_local_openai_sttas a custom repository of type Integration in HACS.
Local OpenAI STT integration.local_openai_stt folder from latest release to the custom_components folder in your config directory.[!NOTE] Requires a Home Assistant version that includes #167246 (2026.5 or newer). The integration depends on
pysilero-vad, which only ships wheels for manylinux x86_64/aarch64, macOS arm64, and Windows. Home Assistant OS (Alpine/musl) is not currently supported.
After installation, configure the integration through Home Assistant's UI:
Settings → Devices & Services.Add Integration.Local OpenAI STT.Once configured, the integration appears as an STT entity that you can select in any Voice Assistant pipeline (Settings → Voice assistants).
/v1.GET /v1/models. If your server doesn't implement that endpoint, the model field falls back to a free-text input — type the model name your server expects.prompt field on every request. Useful for biasing toward unusual vocabulary, names, or acronyms.metadata.language (sent to Whisper as ISO-639-1, e.g. en from en-US).The integration owns end-of-speech detection. Three knobs in the options flow:
Relaxed / Default / Aggressive, matching HA's own values (1.25 s / 0.7 s / 0.25 s of trailing silence). Mirrors homeassistant.components.assist_pipeline.vad.VadSensitivity.max(0.1, threshold * 0.4) so probabilities between the two are treated as "uncertain" and don't cut the sentence off mid-utterance.If VAD never confidently detects speech, a hardcoded 5-second timeout still ships the buffered audio to Whisper. Long utterances are unbounded as long as voice activity continues.
Enable Write per-session VAD logs in the options flow to dump one log file per STT request to <config>/local_openai_stt_sessions/<ISO-timestamp>.log. Each file records every VAD chunk's probability, classification, and accumulated speech/silence — useful when tuning thresholds for an unusual room or microphone. Older sessions are pruned automatically once you exceed the keep count.
36 commits
Python
100.0%