Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure VoiceLive to zarządzana usługa, która umożliwia niskoopóźnione, wysokiej jakości interakcje mowy z mową dla agentów głosowych. Usługa konsoliduje funkcje rozpoznawania mowy, generatywnej sztucznej inteligencji oraz zamiany tekstu na mowę w jeden, zunifikowany interfejs, oferując kompleksowe rozwiązanie do tworzenia płynnych doświadczeń głosowych.
Użyj biblioteki klienta, aby:
- Stwórz asystentów głosowych i agentów konwersacyjnych w czasie rzeczywistym
- Buduj aplikacje mowy na mowy z minimalnym opóźnieniem
- Integruj zaawansowane funkcje konwersacyjne, takie jak tłumienie hałasu i redukcja echa
- Wykorzystaj wiele modeli AI (GPT-4o, GPT-4o-mini, Phi) do różnych zastosowań
- Implementacja wywoływania funkcji i integracji narzędzi dla dynamicznych odpowiedzi
- Tworz interakcje głosowe z awatarem z komponentami wizualnymi
Uwaga: Ten pakiet obsługuje zarówno środowiska przeglądarkowe, jak i Node.js. Połączenia WebSocket są wykorzystywane do komunikacji w czasie rzeczywistym.
Wprowadzenie
Obecnie obsługiwane środowiska
- Wersje LTS systemu Node.js
- Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox
Wymagania wstępne
- Subskrypcja platformy Azure
- Zasób Azure AI Foundry z dostępem do Voice Live API
Instalowanie pakietu
Zainstaluj bibliotekę klienta Azure VoiceLive za pomocą npm:
npm install @azure/ai-voicelive
Zainstaluj bibliotekę tożsamości
Klienci VoiceLive uwierzytelniają się za pomocą biblioteki Azure Identity. Zainstaluj go również:
npm install @azure/identity
Configure TypeScript
Użytkownicy TypeScript muszą mieć zainstalowane definicje typów węzłów:
npm install @types/node
Musisz też włączyć compilerOptions.allowSyntheticDefaultImports swoje tsconfig.json. Zwróć uwagę, że jeśli masz włączone compilerOptions.esModuleInterop, domyślnie allowSyntheticDefaultImports jest włączone.
Pakiet JavaScript
Aby użyć tej biblioteki klienta w przeglądarce, najpierw należy użyć pakietu. Aby uzyskać szczegółowe informacje o tym, jak to zrobić, zapoznaj się z naszą dokumentacją dotyczącą tworzenia pakietów .
Najważniejsze pojęcia
VoiceLiveClient
Główny interfejs do nawiązywania połączeń z usługą Azure VoiceLive. Użyj tego klienta do uwierzytelniania i tworzenia sesji do interakcji głosowych w czasie rzeczywistym.
VoiceLiveSession
Reprezentuje aktywne połączenie WebSocket do komunikacji głosowej w czasie rzeczywistym. Ten kurs obejmuje komunikację dwukierunkową, pozwalając przesyłać sygnały dźwiękowe i odbierać sygnały dźwiękowe, transkrypcje tekstu oraz inne zdarzenia w czasie rzeczywistym.
Konfiguracja sesji
Usługa wykorzystuje konfigurację sesji do sterowania różnymi aspektami interakcji głosowej:
- Wykrywanie skrętu: Konfiguruj sposób, w jaki usługa wykrywa, kiedy użytkownicy zaczynają i przerywają mówienie
- Przetwarzanie dźwięku: Włączenie tłumienia szumów i redukcji echa
- Wybór głosu: Wybieraj spośród standardowych głosów Azure, głosów wysokiej rozdzielczości lub niestandardowych
- Wybór modelu: Wybierz model AI (GPT-4o, GPT-4o-mini, warianty Phi), który najlepiej odpowiada Twoim potrzebom
Modele i możliwości
API VoiceLive obsługuje wiele modeli AI o różnych możliwościach:
| Model | Description | Przypadek użycia |
|---|---|---|
gpt-4o-realtime-preview |
GPT-4o z przetwarzaniem dźwięku w czasie rzeczywistym | Wysokiej jakości konwersacyjna sztuczna inteligencja |
gpt-4o-mini-realtime-preview |
Lekki wariant GPT-4o | Szybkie i efektywne interakcje |
phi4-mm-realtime |
Model Phi z wsparciem multimodalnym | Opłacalne aplikacje głosowe |
Ulepszenia konwersacyjne
API VoiceLive oferuje specyficzne dla Azure ulepszenia:
- Azure Semantic VAD: Zaawansowane wykrywanie aktywności głosowej, które usuwa wypełniające słowa
- Tłumienie hałasu: Redukuje hałas tła
- Anulowanie echo: Usuwa echo z głosu modelu
- Wykrywanie na końcu sturu: Pozwala na naturalne pauzy bez przedwczesnych przerw
Uwierzytelnianie za pomocą Azure Active Directory
Usługa VoiceLive polega na Azure Active Directory do uwierzytelniania żądań do swoich API. Pakiet @azure/identity udostępnia różne typy poświadczeń, których aplikacja może użyć do tego celu. Plik README dla @azure/identity zawiera więcej szczegółów i przykładów, które ułatwiają rozpoczęcie pracy.
Aby obsługiwać usługę Azure VoiceLive, musisz utworzyć instancję klasy VoiceLiveClient , punkt końcowy usługi oraz obiekt poświadczenia. Przykłady przedstawione w tym dokumencie wykorzystują obiekt poświadczenia o nazwie DefaultAzureCredential, który jest odpowiedni dla większości scenariuszy, w tym lokalnych środowisk deweloperskich i produkcyjnych. Zalecamy używanie zarządzanej tożsamości do uwierzytelniania w środowiskach produkcyjnych.
Więcej informacji o różnych sposobach uwierzytelniania i odpowiadających im typach danych można znaleźć w dokumentacji Azure Identity.
Oto szybki przykład. Po pierwsze, importujemy DefaultAzureCredential i VoiceLiveClient:
import { DefaultAzureCredential } from "@azure/identity";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const credential = new DefaultAzureCredential();
// Build the URL to reach your AI Foundry resource
const endpoint = "https://your-resource.cognitiveservices.azure.com";
// Create the VoiceLive client
const client = new VoiceLiveClient(endpoint, credential);
Uwierzytelnianie za pomocą klucza API
W scenariuszach deweloperskich możesz także uwierzytelnić się za pomocą klucza API:
import { AzureKeyCredential } from "@azure/core-auth";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const endpoint = "https://your-resource.cognitiveservices.azure.com";
const credential = new AzureKeyCredential("your-api-key");
const client = new VoiceLiveClient(endpoint, credential);
Przykłady
Poniższe sekcje zawierają fragmenty kodu obejmujące niektóre z typowych zadań korzystających z Azure VoiceLive. Przedstawione tutaj scenariusze to:
- Tworzenie podstawowego asystenta głosowego
- Konfiguracja opcji sesji
- Obsługa zdarzeń w czasie rzeczywistym
- Implementacja wywoływania funkcji
Tworzenie podstawowego asystenta głosowego
Ten przykład pokazuje, jak stworzyć prostego asystenta głosowego, który obsługuje interakcje mowy z mową:
import { DefaultAzureCredential } from "@azure/identity";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const credential = new DefaultAzureCredential();
const endpoint = "https://your-resource.cognitiveservices.azure.com";
// Create the client
const client = new VoiceLiveClient(endpoint, credential);
// Create and connect a session
const session = await client.startSession("gpt-4o-mini-realtime-preview");
// Configure session for voice conversation
await session.updateSession({
modalities: ["text", "audio"],
instructions: "You are a helpful AI assistant. Respond naturally and conversationally.",
voice: {
type: "azure-standard",
name: "en-US-AvaNeural",
},
turnDetection: {
type: "server_vad",
threshold: 0.5,
prefixPaddingMs: 300,
silenceDurationMs: 500,
},
inputAudioFormat: "pcm16",
outputAudioFormat: "pcm16",
});
Konfiguracja opcji sesji
Możesz dostosować różne aspekty interakcji głosowej:
import { DefaultAzureCredential } from "@azure/identity";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const credential = new DefaultAzureCredential();
const endpoint = "https://your-resource.cognitiveservices.azure.com";
const client = new VoiceLiveClient(endpoint, credential);
const session = await client.startSession("gpt-4o-realtime-preview");
// Advanced session configuration
await session.updateSession({
modalities: ["audio", "text"],
instructions: "You are a customer service representative. Be helpful and professional.",
voice: {
type: "azure-custom",
name: "your-custom-voice-name",
endpointId: "your-custom-voice-endpoint",
},
turnDetection: {
type: "server_vad",
threshold: 0.6,
prefixPaddingMs: 200,
silenceDurationMs: 300,
},
inputAudioFormat: "pcm16",
outputAudioFormat: "pcm16",
});
Obsługa zdarzeń w czasie rzeczywistym
Klient VoiceLive zapewnia komunikację opartą na zdarzeniach dla interakcji w czasie rzeczywistym:
import { DefaultAzureCredential } from "@azure/identity";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const credential = new DefaultAzureCredential();
const endpoint = "https://your-resource.cognitiveservices.azure.com";
const client = new VoiceLiveClient(endpoint, credential);
const session = await client.startSession("gpt-4o-mini-realtime-preview");
// Set up event handlers using subscription pattern
const subscription = session.subscribe({
onResponseAudioDelta: async (event, context) => {
// Handle incoming audio chunks
const audioData = event.delta;
// Play audio using Web Audio API or other audio system
playAudioChunk(audioData);
},
onResponseTextDelta: async (event, context) => {
// Handle incoming text deltas
console.log("Assistant:", event.delta);
},
onInputAudioTranscriptionCompleted: async (event, context) => {
// Handle user speech transcription
console.log("User said:", event.transcript);
},
});
// Send audio data from microphone
function sendAudioChunk(audioBuffer: ArrayBuffer) {
session.sendAudio(audioBuffer);
}
Implementacja wywoływania funkcji
Włącz asystenta głosowego do wywoływania zewnętrznych funkcji i narzędzi:
import { DefaultAzureCredential } from "@azure/identity";
import { VoiceLiveClient } from "@azure/ai-voicelive";
const credential = new DefaultAzureCredential();
const endpoint = "https://your-resource.cognitiveservices.azure.com";
const client = new VoiceLiveClient(endpoint, credential);
const session = await client.startSession("gpt-4o-mini-realtime-preview");
// Define available functions
const tools = [
{
type: "function",
name: "get_weather",
description: "Get current weather for a location",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state or country",
},
},
required: ["location"],
},
},
];
// Configure session with tools
await session.updateSession({
modalities: ["audio", "text"],
instructions:
"You can help users with weather information. Use the get_weather function when needed.",
tools: tools,
toolChoice: "auto",
});
// Handle function calls
const subscription = session.subscribe({
onResponseFunctionCallArgumentsDone: async (event, context) => {
if (event.name === "get_weather") {
const args = JSON.parse(event.arguments);
const weatherData = await getWeatherData(args.location);
// Send function result back
await session.addConversationItem({
type: "function_call_output",
callId: event.callId,
output: JSON.stringify(weatherData),
});
// Request response generation
await session.sendEvent({
type: "response.create",
});
}
},
});
Rozwiązywanie problemów
Typowe błędy i wyjątki
Błędy uwierzytelniania: Jeśli otrzymasz błędy uwierzytelniania, sprawdź, że:
- Twój zasób Azure AI Foundry jest poprawnie skonfigurowany
- Twój klucz API lub dane uwierzytelniające mają wymagane uprawnienia
- URL endpoint jest poprawny i dostępny
Problemy z połączeniem WebSocket: VoiceLive korzysta z połączeń WebSocket. Upewnij się, że:
- Twoja sieć pozwala na połączenia WebSocket
- Reguły zapory pozwalają na połączenia z
*.cognitiveservices.azure.com - Polityki przeglądarki pozwalają na dostęp do WebSocket i mikrofonu (do korzystania z przeglądarki)
Problemy z dźwiękiem: W przypadku problemów związanych z dźwiękiem:
- Sprawdź uprawnienia mikrofonu w przeglądarce
- Sprawdź, czy obsługiwane są formaty audio (PCM16, PCM24)
- Upewnij się, że odpowiedni kontekst audio do odtwarzania
Wycinka drzew
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby zobaczyć dziennik wiadomości i odpowiedzi WebSocket, ustaw zmienną środowiskową AZURE_LOG_LEVEL na .info Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel w @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami dotyczącymi pakietów @azure/rejestratora.
Dalsze kroki
Więcej przykładów kodu znajdziesz pod następującymi linkami:
Contributing
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.
Azure SDK for JavaScript