home-assistant/core · warning · SpeechToTextError
stt-no-text-recognized
stt-no-text-recognized
Error message
No text recognized
What it means
SpeechToTextError with code stt-no-text-recognized is raised when the STT provider returns SUCCESS but result.text is empty. The audio was processed fine, yet nothing intelligible was transcribed — typically silence, noise, or speech in a language the model does not understand.
Source
Thrown at homeassistant/components/assist_pipeline/pipeline.py:986
message="Home Assistant Cloud authentication failed",
) from src_error
except Exception as src_error:
_LOGGER.exception("Unexpected error during speech-to-text")
raise SpeechToTextError(
code="stt-stream-failed",
message="Unexpected error during speech-to-text",
) from src_error
_LOGGER.debug("speech-to-text result %s", result)
if result.result != stt.SpeechResultState.SUCCESS:
raise SpeechToTextError(
code="stt-stream-failed",
message="speech-to-text failed",
)
if not result.text:
raise SpeechToTextError(
code="stt-no-text-recognized", message="No text recognized"
)
self.process_event(
PipelineEvent(
PipelineEventType.STT_END,
{
"stt_output": {
"text": result.text,
}
},
)
)
return result.text
async def _speech_to_text_stream(
self,View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Speak a clear voice command immediately after the wake word and check microphone volume/gain.
- Ensure pipeline.stt_language (or the conversation language) matches the language actually spoken.
- If it recurs, switch to a more accurate STT engine or a larger model.
- Handle this case in the caller: respond with a 'I didn't catch that' TTS message instead of surfacing an error.
Example fix
# before
await pipeline_job.run() # raises on empty transcript
# after
from homeassistant.components.assist_pipeline.error import SpeechToTextError
try:
await pipeline_job.run()
except SpeechToTextError as err:
if err.code == "stt-no-text-recognized":
_LOGGER.info("User did not speak after wake word")
else:
raise Defensive patterns
Strategy: try-catch
Try / catch
from homeassistant.components.assist_pipeline.error import SpeechToTextError
try:
await pipeline_job.run()
except SpeechToTextError as err:
if err.code == "stt-no-text-recognized":
pass # prompt the user to repeat; normal UX path Prevention
- Design voice UX to expect empty transcriptions (reprompt or stay idle).
- Set the pipeline language to what users actually speak.
- Check microphone gain on satellites reporting frequent empty results.
When it happens
Trigger: The user does not speak (or speaks too quietly) after the wake word, the microphone input is muted/noise, or the utterance is in a language unsupported by the STT model, so the provider returns an empty string.
Common situations: User says only the wake word and nothing else; microphone gain too low; wrong language configured (pipeline.stt_language vs spoken language); background music drowning out speech.
Related errors
- pipeline_not_found
- wake-engine-missing
- wake-provider-missing
- duplicate_wake_up_detected
- wake-word-timeout
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/31016a8cc7c15585.
Report an issue: GitHub.