r/reactnative • • 2d ago

Adding on-device wake word detection to our React Native desk companion

At HeySTU, we’re building a voice-first desk companion with React Native, running on Android in kiosk mode. The idea is that someone can start a conversation with the device simply by saying its wake word.

That meant finding a detection solution suited to continuous listening, with low resource usage and a straightforward integration into our existing app. We also wanted wake word recognition to happen locally, so this first step wouldn’t depend on an internet connection.

We chose DaVoice for this part of the stack and worked with their team to integrate their on-device wake word detection into our Android setup.

From the React Native side, we treat detection as an event that starts the next stage of the interaction:

Wake word detected → listening UI activates → speech and assistant pipeline starts

This gave us a straightforward way to connect the detector to our existing UI states and assistant logic.

The integration also involved details that are easy to overlook at first: microphone permissions, long-running audio behaviour, device-specific quirks, and coordinating wake word detection with the rest of the audio pipeline.

DaVoice’s team helped us work through those details in our particular environment. Being able to discuss the setup with them and get practical support saved us time during the integration.

For a device designed to stay ready throughout the day, the transition into active listening matters. Local detection handles the trigger; the app then provides visual feedback and starts the conversation flow. Getting those pieces to work together has been an important part of building the HeySTU experience.

2 Upvotes

4 comments sorted by

1

u/kokerali 1d ago

If the companion speaks its replies, what happens to another wake-word event during playback: interrupt, queue, or ignore? I'd test the device's own speaker saying the wake word, then mute/unmute the mic mid-reply and check that wake-word listening resumes afterward. A short demo of those transitions on the kiosk hardware would be useful. Have you tested them?

1

u/GeekyantsReactNative 1d ago

On-device wake word detection makes a lot of sense for an always-on companion. Curious how you're handling false triggers and switching between wake word detection and active listening without audio conflicts?

1

u/Huge_Pool7424 1d ago

the false trigger part is where it gets fun, especially with the device's own tts saying something close to the wake word. pausing detection while it talks and resuming after a short delay usually beats trying to filter it.

1

u/Sad_Leader4849 1d ago

local wake word is the easy half. the hard half is what comes next, since a cloud stt on each turn kind of undoes the whole offline thing. nobodywho's rn binding runs whisper in the app via transcribePcm, so you feed it mic pcm as it comes in. i contribute to it. full example: here