Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@

# ServiceLabel: %Service Attention %Voice Live
# PRLabel: %Voice Live
/sdk/ai/azure-ai-voicelive/ @amber-yujueWang @emilyjiji @pankopon @rhurey @xitzhang
/sdk/voicelive/ @amber-yujueWang @emilyjiji @pankopon @rhurey @xitzhang

# ServiceLabel: %AAD %Service Attention
# ServiceOwners: @adamedx
Expand Down
3 changes: 0 additions & 3 deletions sdk/ai/azure-ai-voicelive/_metadata.json

This file was deleted.

6 changes: 0 additions & 6 deletions sdk/ai/azure-ai-voicelive/assets.json

This file was deleted.

2 changes: 0 additions & 2 deletions sdk/ai/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ extends:
safeName: azureaiprojects
- name: azure-ai-agents
safeName: azureaiagents
- name: azure-ai-voicelive
safeName: azureaivoicelive
# These packages are deprecated:
# - name: azure-ai-inference
# safeName: azureaiinference
Expand Down
6 changes: 6 additions & 0 deletions sdk/voicelive/azure-ai-voicelive/_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"apiVersion": "2026-01-01-preview",
"apiVersions": {
"VoiceLive": "2026-01-01-preview"
}
}
6 changes: 6 additions & 0 deletions sdk/voicelive/azure-ai-voicelive/assets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "python",
"TagPrefix": "python/voicelive/azure-ai-voicelive",
"Tag": "python/voicelive/azure-ai-voicelive_9c84c5d9c2"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2722,22 +2722,34 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:


class RequestAudioContentPart(ContentPart, discriminator="input_audio"):
"""An audio content part for a request.
"""An audio content part for a request. This is supported only by realtime models (e.g.,
gpt-realtime). For text-based models, use ``input_text`` instead.

:ivar type: Required. INPUT_AUDIO.
:vartype type: str or ~azure.ai.voicelive.models.INPUT_AUDIO
:ivar transcript:
:ivar audio: Base64-encoded audio bytes, these will be parsed as the format specified in the
session input audio type configuration. This defaults to PCM 16-bit 24kHz mono if not
specified. Required.
:vartype audio: str
:ivar transcript: Optional transcript of the audio content. This is not sent to the model, but
will be attached to the message item for reference.
:vartype transcript: str
"""

type: Literal[ContentPartType.INPUT_AUDIO] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore
"""Required. INPUT_AUDIO."""
audio: str = rest_field(visibility=["read", "create", "update", "delete", "query"])
"""Base64-encoded audio bytes, these will be parsed as the format specified in the session input
audio type configuration. This defaults to PCM 16-bit 24kHz mono if not specified. Required."""
transcript: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"])
"""Optional transcript of the audio content. This is not sent to the model, but will be attached
to the message item for reference."""

@overload
def __init__(
self,
*,
audio: str,
transcript: Optional[str] = None,
) -> None: ...

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ extends:
parameters:
BuildTargetingString: 'azure-ai-voicelive'
JobName: chat
ServiceDirectory: ai
ServiceDirectory: voicelive
TestResourceDirectories:
- ai/azure-ai-voicelive
- voicelive/azure-ai-voicelive
EnvVars:
AZURE_TEST_RUN_LIVE: 'true'
AZURE_TEST_USE_CLI_AUTH: 'true'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ def test_static_interim_response_with_texts(self):
def test_static_interim_response_with_triggers(self):
"""Test StaticInterimResponseConfig with triggers."""
config = StaticInterimResponseConfig(
triggers=[InterimResponseTrigger.LATENCY, InterimResponseTrigger.TOOL], latency_threshold_ms=2000, texts=["Please wait..."]
triggers=[InterimResponseTrigger.LATENCY, InterimResponseTrigger.TOOL],
latency_threshold_ms=2000,
texts=["Please wait..."],
)

assert config.type == InterimResponseConfigType.STATIC_INTERIM_RESPONSE
Expand Down Expand Up @@ -251,7 +253,9 @@ class TestIntegrationScenarios:

def test_session_with_interim_response_and_reasoning(self):
"""Test complete session with interim response config and reasoning effort."""
interim = LlmInterimResponseConfig(triggers=[InterimResponseTrigger.LATENCY, InterimResponseTrigger.TOOL], model="gpt-4o-mini")
interim = LlmInterimResponseConfig(
triggers=[InterimResponseTrigger.LATENCY, InterimResponseTrigger.TOOL], model="gpt-4o-mini"
)
session = RequestSession(
model="gpt-4o-realtime-preview",
reasoning_effort=ReasoningEffort.MEDIUM,
Expand Down Expand Up @@ -292,7 +296,10 @@ def test_static_interim_response_serialization(self):
def test_llm_interim_response_serialization(self):
"""Test LlmInterimResponseConfig serialization."""
config = LlmInterimResponseConfig(
triggers=[InterimResponseTrigger.TOOL], model="gpt-4o-mini", instructions="Be brief", max_completion_tokens=50
triggers=[InterimResponseTrigger.TOOL],
model="gpt-4o-mini",
instructions="Be brief",
max_completion_tokens=50,
)

data = dict(config)
Expand Down
37 changes: 37 additions & 0 deletions sdk/voicelive/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file.

trigger:
branches:
include:
- main
- hotfix/*
- release/*
- restapi*
paths:
include:
- sdk/voicelive/
- sdk/core/

pr:
branches:
include:
- main
- feature/*
- hotfix/*
- release/*
- restapi*
paths:
include:
- sdk/voicelive/
- sdk/core/

extends:
template: /eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: voicelive
TestProxy: true
BuildDocs: true
TestTimeoutInMinutes: 60
Artifacts:
- name: azure-ai-voicelive
safeName: azureaivoicelive
7 changes: 7 additions & 0 deletions sdk/voicelive/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
trigger: none

# NOTE: Service live tests are NOT enabled. This file only enables the analyze stage currently.
extends:
template: /eng/pipelines/templates/stages/python-analyze-weekly-standalone.yml
parameters:
ServiceDirectory: voicelive