Utforsk AI Voice Live-klientbiblioteket for Python
Tip
Se fanen Tekst og bilder for mer informasjon!
Azure AI Voice Live-klientbiblioteket for Python gir en tale-til-tale-klient i sanntid for Azure AI Voice Live API. Den åpner en WebSocket-økt for å streame mikrofonlyd til tjenesten og mottar serverhendelser for responsive samtaler.
Viktig!
Fra og med versjon 1.0.0 er denne SDK-en kun asynkron. Den synkrone API-en er avskrevet for å fokusere utelukkende på asynkrone mønstre. Alle eksempler og eksempler bruker asynkron/avvent-syntaks.
I denne enheten lærer du hvordan du bruker SDK til å implementere godkjenning og håndtere hendelser. Du ser også et minimalt eksempel på hvordan du oppretter en økt. Hvis du vil ha en fullstendig referanse til Voice Live-pakken, kan du gå til referansen for Voice Live-pakken.
Implementere autentisering
Du kan implementere godkjenning med en API-nøkkel eller et Microsoft Entra ID-token. Følgende kodeeksempel viser en API-nøkkelimplementering. Det forutsetter at miljøvariabler er angitt i en .env fil eller direkte i miljøet ditt.
import asyncio
from azure.core.credentials import AzureKeyCredential
from azure.ai.voicelive import connect
async def main():
async with connect(
endpoint="your-endpoint",
credential=AzureKeyCredential("your-api-key"),
model="gpt-4o"
) as connection:
# Your async code here
pass
asyncio.run(main())
For produksjonsprogrammer anbefales Microsoft Entra-godkjenning. Følgende kodeeksempel viser implementering av for godkjenning:DefaultAzureCredential
import asyncio
from azure.identity.aio import DefaultAzureCredential
from azure.ai.voicelive import connect
async def main():
credential = DefaultAzureCredential()
async with connect(
endpoint="your-endpoint",
credential=credential,
model="gpt-4o"
) as connection:
# Your async code here
pass
asyncio.run(main())
Håndtering av hendelser
Riktig håndtering av hendelser sikrer en mer sømløs interaksjon mellom klient og agent. Når du for eksempel håndterer en bruker som avbryter taleagenten, må du avbryte agentlydavspilling umiddelbart i klienten. Hvis du ikke gjør det, fortsetter klienten å spille av det siste agentsvaret til avbruddet behandles i API-en – noe som resulterer i at agenten "snakker over" brukeren.
Følgende kodeeksempel viser grunnleggende hendelseshåndtering:
async for event in connection:
if event.type == ServerEventType.SESSION_UPDATED:
print(f"Session ready: {event.session.id}")
# Start audio capture
elif event.type == ServerEventType.INPUT_AUDIO_BUFFER_SPEECH_STARTED:
print("User started speaking")
# Stop playback and cancel any current response
elif event.type == ServerEventType.RESPONSE_AUDIO_DELTA:
# Play the audio chunk
audio_bytes = event.delta
elif event.type == ServerEventType.ERROR:
print(f"Error: {event.error.message}")
Minimalt eksempel
Følgende kodeeksempel viser godkjenning til API-en og konfigurering av økten.
import asyncio
from azure.core.credentials import AzureKeyCredential
from azure.ai.voicelive.aio import connect
from azure.ai.voicelive.models import (
RequestSession, Modality, InputAudioFormat, OutputAudioFormat, ServerVad, ServerEventType
)
API_KEY = "your-api-key"
ENDPOINT = "your-endpoint"
MODEL = "gpt-4o"
async def main():
async with connect(
endpoint=ENDPOINT,
credential=AzureKeyCredential(API_KEY),
model=MODEL,
) as conn:
session = RequestSession(
modalities=[Modality.TEXT, Modality.AUDIO],
instructions="You are a helpful assistant.",
input_audio_format=InputAudioFormat.PCM16,
output_audio_format=OutputAudioFormat.PCM16,
turn_detection=ServerVad(
threshold=0.5,
prefix_padding_ms=300,
silence_duration_ms=500
),
)
await conn.session.update(session=session)
# Process events
async for evt in conn:
print(f"Event: {evt.type}")
if evt.type == ServerEventType.RESPONSE_DONE:
break
asyncio.run(main())