Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
4f42bb6
feat(agents): add unified voice api mode
Copilot Aug 19, 2026
27073e7
docs(agents): clarify voice deploy routing comment
Copilot Aug 19, 2026
16e94ae
fix(agents): harden unified voice deploy
Copilot Aug 20, 2026
e83f950
fix(agents): validate unified voice response
Copilot Aug 20, 2026
048ff71
fix(agents): address unified voice review feedback
Copilot Aug 20, 2026
f74dc27
feat(agents): support advanced voice settings
Copilot Aug 20, 2026
ab7cd25
test(agents): avoid go fix pointer helper
Copilot Aug 20, 2026
ec43ae1
feat(agents): deploy hosted voice wrappers
Copilot Aug 20, 2026
99cae8c
docs(agents): add hosted voice test guide
Copilot Aug 20, 2026
c7809fa
Merge remote-tracking branch 'origin/main' into users/wujia/prompt-vo…
Copilot Aug 21, 2026
5d5daef
fix(agents): address unified voice review feedback
Copilot Aug 21, 2026
bb152c1
feat(agents): support advanced voice settings
Copilot Aug 20, 2026
5d06206
test(agents): avoid go fix pointer helper
Copilot Aug 20, 2026
901bf2c
feat(agents): initialize hosted voice projects
Copilot Aug 21, 2026
d36bc54
docs(agents): hide advanced voice private docs
Copilot Aug 21, 2026
f99bf8c
Merge remote-tracking branch 'origin/main' into users/wujia/prompt-vo…
Copilot Aug 21, 2026
ae5f687
feat(agents): initialize hosted voice samples
Copilot Aug 21, 2026
9f5bcb8
fix(agents): validate voice transcription includes
Copilot Aug 21, 2026
effbacb
Merge remote-tracking branch 'v1212/users/wujia/prompt-voice-agent-ad…
Copilot Aug 23, 2026
348edb4
refactor(agents): use unified voice API by default
Copilot Aug 24, 2026
3c73335
docs(agents): clarify voice deploy marker
Copilot Aug 24, 2026
62ef41e
docs(agents): clarify unified voice version state
Copilot Aug 24, 2026
31a2860
docs(agents): clarify unified voice default
Copilot Aug 24, 2026
5748dbd
refactor(agents): replace voice API surface
Copilot Aug 25, 2026
b9ad10e
docs(agents): clean voice API migration wording
Copilot Aug 25, 2026
cab0cb1
fix(agents): clear voice endpoint marker before writes
Copilot Aug 25, 2026
22e9f0d
fix(agents): complete voice API pivot
Copilot Aug 25, 2026
943bf68
fix(agents): support numeric voice locales
Copilot Aug 25, 2026
4c2447b
test(agents): split voice endpoint fixture
Copilot Aug 25, 2026
94eb368
feat(agents): support advanced voice settings
Copilot Aug 25, 2026
edb493d
Merge remote-tracking branch 'v1212/users/wujia/prompt-voice-agent-ad…
Copilot Aug 25, 2026
aba916c
test(agents): remove stale pointer helper
Copilot Aug 25, 2026
4d9da7f
feat(agents): support advanced voice settings
Copilot Aug 25, 2026
ab7851f
fix(agents): reject unsupported voice parallel tools
Copilot Aug 25, 2026
4c4120e
fix(agents): validate voice runtime settings
Copilot Aug 26, 2026
79494be
test(agents): remove pointer helper
Copilot Aug 26, 2026
f76134a
fix(agents): prefer explicit voice locale
Copilot Aug 26, 2026
cfdf03a
fix(agents): align hosted voice init with manifests
Copilot Aug 26, 2026
41f126c
docs(agents): document hosted voice manifest flow
Copilot Aug 26, 2026
0628ae4
fix(agents): preserve g711 voice rates
Copilot Aug 26, 2026
44233cb
test(agents): cover voice advanced validation
Copilot Aug 26, 2026
ab3adc1
test(agents): cover manifest code defaults
Copilot Aug 26, 2026
4eb2e2e
Merge remote-tracking branch 'origin/main' into users/wujia/sync-host…
Copilot Aug 26, 2026
20ea3c8
Merge remote-tracking branch 'v1212/users/wujia/prompt-voice-agent-ad…
Copilot Aug 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 158 additions & 0 deletions cli/azd/extensions/azure.ai.agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,164 @@ keys throughout this block (`invocations_moderation`, `response_mode`,
`input_paths`, `stream_selectors`, `event_type`, and so on). The **values**
(`non_streaming`, `streaming`, `both`, `json`, `text`) are the same in both.

### Hosted voice wrapper (preview)

A hosted voice wrapper keeps Voice Live responsible for VAD, speech-to-text,
and text-to-speech while routing conversation logic to a hosted agent in the
same Foundry project. Hosted Voice samples use the same standard Agent Manifest
flow as other Hosted Agent and `invocations_ws` samples:

```powershell
azd ai agent init -m <PUBLIC_AGENT_MANIFEST_URL>
```

When the sample source is already present, run `azd ai agent init` from its
directory and accept the detected local manifest. azd reuses a parent project
when the source is already inside an existing azd project.

Init generates both services and references the target by its `azure.yaml`
service name:

```yaml
services:
voice-target:
host: azure.ai.agent
project: ./src/voice-target
language: csharp
kind: hosted
name: voice-target
protocols:
- protocol: invocations_ws
version: 1.0.0
metadata:
voiceLiveCompatible: "true"
bridgeProtocolVersion: "1.0"
codeConfiguration:
runtime: dotnet_10
entryPoint: VoiceHostedAgent.dll
dependencyResolution: bundled

voice:
host: azure.ai.agent
kind: prompt-voice
name: voice
uses:
- voice-target
modelType: hosted_agent
targetAgent:
service: voice-target
version: deployed
store: false
audio:
output:
voice:
type: azure_standard
name: en-US-JennyNeural
```

The `uses` edge deploys the target before the wrapper. `version: deployed`
pins the wrapper to the target version produced by the current azd environment.
Hosted voice wrappers use the unified Voice API.

The target must be active, declare `invocations_ws/1.0.0`, and include
`voiceLiveCompatible=true` and `bridgeProtocolVersion=1.0` metadata. Model,
instructions, tools, and other conversation controls belong to the target;
the wrapper owns audio, voice, store, avatar, and greeting configuration.

For end-to-end validation, lifecycle checks, local dashboard steps, and the
experience alignment matrix, see [Hosted Voice Agent Test Guide](docs/hosted-voice-test-guide.md).

## Prompt voice advanced configuration

Advanced prompt voice settings are authored on the `azure.ai.agent` service in
`azure.yaml` and require the unified flat API mode:

```bash
azd env set AZURE_VOICE_AGENT_API unified-flat
```

```yaml
services:
voice-agent:
host: azure.ai.agent
kind: prompt-voice
name: voice-agent
modelType: managed # or self_deployed for BYOM
model:
id: gpt-realtime
instructions: You are {{persona}}, a concise voice assistant.
structuredInputs:
persona:
description: Assistant persona
defaultValue: Ada
schema:
type: string
audio:
input:
format:
type: audio/pcmu
noiseReduction:
type: near_field
echoCancellation:
type: server_echo_cancellation
reference_source: server
channels: 1
turnDetection:
type: azure_semantic_vad
threshold: 0.6
speechDurationMs: 120
removeFillerWords: true
createResponse: true
interruptResponse: true
languages: [en-US]
autoTruncate: true
transcription:
model: azure-speech
language: en-US
output:
format:
type: audio/pcm
rate: 24000
voice:
type: azure_standard
name: en-US-AvaNeural
locale: en-US
style: cheerful
speed: 1.0
outputModalities: [audio, text]
tools:
- type: system
name: end_conversation
avatar:
type: video_avatar
character: lisa
style: casual-sitting
output_protocol: webrtc
greeting:
type: template
text: Hello {{persona}}
toolChoice: auto
maxOutputTokens: inf
include:
- item.input_audio_transcription.phrases
```

Notes:

- `voice`, `instructions`, and `store` remain supported for simple prompt voice
agents. Missing audio fields keep the existing azd defaults.
- `audio.output.voice` uses an author-friendly object shape; in `unified-flat`
mode azd maps it to the service flat fields `voice`, `voice_type`,
`voice_locale`, `style`, `pitch`, `rate`, and `volume`.
- `structuredInputs.defaultValue` maps to the service wire field
`default_value`.
- Direct voice tool types are `function`, `mcp`, `system`, and `toolbox`.
Server-side tools such as `web_search`, `azure_ai_search`, and `openapi` must
be packaged through a toolbox.
- `tools`, `avatar`, `greeting`, `handoff`, `toolChoice`, and
`echoCancellation` intentionally remain light pass-through blocks so azd does
not block new service-side additions.

## Session idle timeout

A hosted agent's runtime session sandbox is suspended by Foundry after a period
Expand Down
3 changes: 3 additions & 0 deletions cli/azd/extensions/azure.ai.agents/cspell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ words:
# Voice (prompt-voice) agents
- BYOM
- Nanami
- pcma
- pcmu
- webrtc
# Azure region names
- australiaeast
- brazilsouth
Expand Down
Loading
Loading