Skip to content

feat(voice): backend-aware voice picker for Gemini Live and Qwen Realtime #742

@heavygee

Description

@heavygee

Summary

Extend the Settings voice picker (shipped in #690 for ElevenLabs) so Gemini Live and Qwen Realtime each get a per-backend voice dropdown, with selections stored independently when switching backends.

Context

Implementation plan (fork): docs/plans/voice-selection-all-backends.md
Peer handoff: docs/plans/peer-handoff-voice-selection-all-backends.md

Scope

  • VoiceSessionConfig.voiceName wired through Gemini / Qwen / ElevenLabs sessions
  • Per-backend localStorage keys (hapi-voice-gemini, hapi-voice-qwen, migrate from hapi-voice-id)
  • Backend-aware Settings UI (static lists for Gemini/Qwen; existing /api/voice/voices for ElevenLabs)
  • Hub: do not call ElevenLabs voices API when active backend is not ElevenLabs

Out of scope

  • Voice preview for Gemini/Qwen (no API)
  • Full Qwen 55-voice catalog until verified against DashScope docs

Merge order

  1. Merge feat(voice): pluggable voice backend with Gemini Live & Qwen Realtime #692 first
  2. Rebase follow-up PR onto upstream/main, retarget to main

Refs #686
Blocked by #692

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions