v7.3.0
sampotts/plyrv7.3.0Jul 3, 2026by github-actions[bot]
AI Summary
Introduces per-agent voice configuration, allowing multiple agents to share a provider but have distinct voices. It includes observable logging and safe fallback mechanisms.
Key Highlights
- Per-agent voice selection with provider-aware pickers (OpenAI, Google, Deepgram).
- Safe by default behavior with fallback to provider default.
- Observable end-to-end logging (voice source tracking).
- Instant application of changes without engine restart.
New Features
- Provider-aware voice picker in Agent form
- Voice catalog validation
- Call history voice tracking
- YAML context support for headless installs
Full Release Notes
**Voice now belongs to agents.** Configure one provider, create multiple agents that share it โ each with its own voice. ## โจ Highlights ### ๐๏ธ Per-agent voice selection - **Provider-aware voice picker** in the Agent form: dropdowns of validated catalogs for OpenAI Realtime (10 GA voices), Google Live (30 prebuilt voices), and Deepgram Voice Agent (Aura models) โ plus suggestions with custom cloned-voice IDs for xAI Grok. ElevenLabs Agent voices remain managed on the ElevenLabs platform; pipeline TTS voices are unchanged (per-agent pipeline voice is planned). - **Safe by default.** The provider-level voice becomes the *Default Voice* โ every agent without its own voice behaves exactly as before this release. Unrecognized values (including stale text from the old informational field) log a warning and fall back to the provider default โ **a bad voice value never fails a call**. - **Observable end-to-end.** Every call logs the resolved voice and its source (`override` / `agent` / `provider-default`), and Call History shows it per call โ e.g. "Voice: marin (from agent)" โ so you can always verify what a call actually used. - **Instant.** Agent voice changes apply on the next call โ no engine restart. ### ๐งฐ Under the hood - Single-source voice catalog (`src/utils/voice_catalog.py`) shared by the engine's validation, the new `GET /api/config/providers/meta` endpoint, and the Agent form โ verified complete against official OpenAI / xAI / Google / Deepgram documentation. - Call History gains `voice` / `voice_source` (additive, nullable โ no migration steps). - Optional `voice:` key on YAML contexts for headless installs, with identical semantics. ## โฌ๏ธ Upgrading Standard upgrade โ no migration steps, no config changes required. Existing agents have no voice set and keep using their provider's voice. ```bash git fetch --tags && git checkout v7.3.0 docker compose build admin_ui && docker compose up -d ``` Or use the Admin UI's Updates page. **Docs:** [Voice Selection guide](https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk/blob/main/docs/VOICE_SELECTION.md) ยท [validation matrix](https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk/blob/main/docs/baselines/golden/v7.3.0-validation-matrix.md) (7 live PSTN calls, including the per-agent override validated by ear) Thanks to **@foytech**, whose PR #497 seeded this feature and whose production testing shaped it โ co-authored on the core commits.