Skip to content

POCO F8 Ultra (HyperOS 3 / Android 16) — “on device” STT cuts mid-word (even mid-sentence) #401

@MrPedroG

Description

@MrPedroG

App Version

2.5.6 (99)

Platform

  • Android
  • iOS

How you installed it

Google Play

What happened?

Device: POCO F8 Ultra, HyperOS 3 (Android 16)
Conduit version: 2.5.6 (99)
Symptom: on-device STT stops mid-word with zero pause. Happens only in Conduit, not in Gboard.
Logs: SODA starts correctly (“SodaSpeechRecognizer: Offline recognizer - start detection”), mic routed to Voice_Recognition, zero system errors or onEndOfSpeech. Full logcat attached (filtered + full run).
This is almost certainly a listener/session handling bug in Conduit on HyperOS 3.

log.txt

What should have happened?

On device STT should stop only when speech goes quiet.

How to reproduce

Select STT "on device"
Tap the microphone or the wave (call mode). It happens on both.
Start speaking, it randomly stops listening/transcribing.

Does this happen every time?

Yes, every time

When did this start?

Always

Screenshots

No response

Logs

What the logs prove

Conduit is using Google’s SODA offline speech recognizer (the official on-device STT engine on Android 16).
Exact lines at the moment you started STT:textConcurrentSodaManager: Initialized SODA with status: 0
SodaSpeechRecognizer: Offline recognizer - start detection
SodaAudioPusher: Starting to push audio to Soda
SodaSpeechRecognizer: #handleStartThis confirms “on device” mode is correctly calling the system SpeechRecognizer → SODA.
The microphone is routed perfectly: Qualcomm audio HAL (PAL/AGM/GSL) opens the Voice_Recognition stream on the handset mic (DeviceTX = Handset_Mic, DevicePP_Tx = Voice_Recognition). No permission denials, no AudioRecord errors, no “ERROR_NO_MATCH”, no “onEndOfSpeech”, no timeouts, no client disconnections.
No system-level error at all. The SODA session starts cleanly and the audio graph stays open. There is zero indication that HyperOS, the audio policy, or the Google engine killed the recognition.

→ This means the mid-word cutoff is happening inside Conduit itself.
The app is either:

losing the SpeechRecognizer listener callback, or
calling stopListening() prematurely (a known class of bugs in third-party wrappers on new Android versions), or
hitting an unhandled exception in its STT handling code on HyperOS 3.

This matches the complete absence of any “onError” or “onEndOfSpeech” in the logs — the system never told Conduit the session ended; Conduit just stopped receiving results.

log.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions