A real-time AI-powered voice training platform for call-center and customer-service practice using Azure Voice Live and Azure AI services.
This repository implements a voice-based practice and training platform for call-center agents, using real-time AI-driven customer simulations. The application acts as a virtual practice partner, allowing trainees to engage in realistic conversations with an AI-powered customer and receive structured feedback after the session.
Key capabilities include:
- Real-time voice conversations with an AI-powered customer
- Configurable training scenarios derived from training materials
- Customer behavior guided by curated example transcripts
- Automatic conversation transcript capture
- Post-session scoring and structured feedback
- Evaluation using reusable rubrics
- Secure deployment in a private cloud environment
In a typical session, a trainee selects a practice scenario and begins a real-time voice conversation with an AI-driven customer through Azure Voice Live, while transcripts and interaction events are captured. After the session ends, the interaction is evaluated asynchronously to generate structured feedback. Scenarios, rubric-based evaluation, and example transcripts enable more structured and repeatable training workflows.
A typical session takes a trainee from picking a scenario, through a real voice conversation, and into structured feedback. Trainers get an admin surface to author scenarios and watch progress.
Download the editable Visio source: Live Voice Practice Architecture.vsdx.
The diagram above shows the network-isolated (ZTA) topology: the browser reaches the app through Application Gateway WAF v2, the Container App runs the React frontend + Flask/WebSocket backend, and all data-plane traffic to Azure AI Foundry / Voice Live, Speech, Cosmos DB, AI Search, Key Vault, App Configuration and Storage flows through private endpoints inside the VNet. Outbound traffic from the jumpbox subnet is forced through Azure Firewall. For a deeper dive into the runtime flow see docs/how-it-works.md.
Note: the Azure AI Speech service (used by the app for the Live Voice Agent) is also deployed and reached via a private endpoint, but is not drawn in the diagram. It belongs with the GenAI App Backing Services group.
This project supports two deployment modes:
-
Basic (public endpoints) — fastest path, suitable for dev/demo:
azd up
-
Network-isolated (private endpoints + jumpbox + Azure Firewall + Application Gateway WAF v2) — production-grade:
azd env set NETWORK_ISOLATION true azd provision # from your workstation # then connect to the jumpbox via Bastion and run azd deploy + postProvision there
- Full deployment guide — prerequisites, environment variables, configuration defaults and overrides, both deployment modes, validation, and teardown.
- Network isolation quick reference — workstation/jumpbox split, subnets, firewall allow-list, and troubleshooting.
- Public ingress runbook — BYO domain/certificate setup and real microphone validation.
The app works without user login for practice and analysis. Configure Microsoft Entra ID sign-in after deployment when you want:
- Past Practices for each signed-in user
- Trainer views such as All Practices
- user identity from Azure Container Apps built-in authentication
Guide: Configure user authentication with Microsoft Entra ID.
Speech is provisioned by the AILZ Bicep template (deploySpeechService=true by default, AILZ v1.1.4+). To opt out:
azd env set DEPLOY_SPEECH_SERVICE false-
Clone the repository
-
Copy the environment template
cp .env.template .env-
Configure the required Azure credentials
-
Build and run the backend
./scripts/build.sh
cd backend
python src/app.pyOpen the application at:
http://localhost:8000
This project builds upon the sample Voice Live API Sales Coach. This repository extends the original implementation to support a voice-based practice platform for customer-service and call-center training scenarios, introducing configurable scenarios based on training materials, rubric-driven evaluation, and curated example transcripts.
The foundational architecture and part of the initial implementation originate from the original repository and its contributors. We thank the authors for making their work available as open source.
This project is licensed under the MIT License.
See the LICENSE file for details.

