"Fix speech_to_text Errors: error_no_match & error_busy"
"error_no_match and error_busy in speech_to_text are usually benign end-of-session noise — your real bugs are calling listen() while a session is alive and treating every error as fatal. Here is the fix."
The short answer: error_no_match means the recognizer heard nothing usable — it is benign noise, ignore it and restart. error_busy means you called listen() while a recognition session was still alive — call stop() before every listen() . The full speech_to_text flutter error_no_match error_busy fix is below: stop-before-listen, a benign-error filter, and the two permission fixes everyone misses. The errors, exactly as they appear You will see some version of this in your console: I/flutter: STT Status: listening I/flutter: STT Status: notListening I/flutter: SpeechRecognitionError msg: error_no_match, permanent: false I/flutter: STT Status: listening I/flutter: SpeechRecognitionError msg: error_busy, permanent: true Or on a bad day, the sequence that ends with the recognizer wedged until the phone restarts: I/flutter: STT Error: msg: error_speech_timeout, permanent: true I/flutter: STT Status: listening I/flutter: STT Status: notListening I/flutter: STT Status: done I/flutter: STT Error: msg: error_busy, permanent: true The trap: you see the word "error" and treat it as a crash. Most of these are the platform telling you the session ended normally. Why these errors happen Two root causes, and they compound each other. First, stale teardown noise . The native recognizer emits end-of-session events (including error_no_match and error_unknown ) as a previous session tears down. If your error handler treats every event as fatal — calling stop() or resetting state — that leftover noise kills the *new* session the instant it starts. Press the mic button twice fast and the second press dies from the first press's funeral. Second, overlapping sessions . Calling listen() while a session is still active (even a zombie one) returns error_busy . On some Android devices this…