u/racoon9898

▲ 2 r/homeassistantporn+1 crossposts

How to force a specific pipeline for assist_satellite.start_conversation? (Bilingual Voice PE)

Voice PE puck set up with two wake words → two Assist pipelines:

- "Hey Jarvis" → Grok EN (Clara voice, EN STT)

- "OK Nabu" → Grok FR (Sylvie voice, FR STT)

Manual commands work great. The pain: inbound notifications via webhooks (SMS / Signal) that call assist_satellite.start_conversation to announce + listen hands-free.

start_conversation uses the puck's currently-active pipeline — i.e., whichever wake word was last used. So if I just talked to "Hey Jarvis", a French SMS arrives and Clara reads it with an English accent, then STT mishears my "oui" as "with"/"play"/etc and Grok gets garbage.

Things I tried that don't work:

- select.select_option on select.X_assistant and _assistant_2 before start_conversation — only rebinds wake-word → pipeline mapping permanently, doesn't override the active

pipeline for the in-flight conversation - Setting preferred_item in /config/.storage/assist_pipeline.pipelines — confirmed via test it does NOT override the satellite's bound pipeline for start_conversation

- No pipeline_entity_id parameter on assist_satellite.start_conversation (afaict)

Current workaround: skip hands-free entirely. Use tts.speak with explicit voice: SylvieNeural / ClaraNeural for the announce (correct voice, no mic open). Then I manually say "OK Nabu, lis mon dernier SMS" to read the body — that works because the wake word puts the puck on the right pipeline.

The question: is there a way to specify which pipeline start_conversation should use per-call? Or another service that opens the mic on a specific pipeline without going through the wake-word flow? Even editing storage to flip the satellite's "active pipeline" between calls would be acceptable.

HA 2026.5 / Voice PE firmware latest / Grok-based conversation agent. Cross-language home, both EN and FR daily.

reddit.com
u/racoon9898 — 1 day ago