Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure VoiceLive, ses ajanları için düşük gecikmeli ve yüksek kaliteli konuşma-konuşma etkileşimlerini sağlayan yönetilen bir hizmettir. Hizmet, konuşma tanıma, üretken yapay zeka ve metinden sese işlevlerini tek, birleşik bir arayüzde birleştirerek kesintisiz, ses odaklı deneyimler yaratmak için uçtan uca bir çözüm sunuyor.
İstemci kitaplığını kullanarak:
- Gerçek zamanlı sesli asistanlar ve konuşma ajanları oluşturun
- En az gecikmeyle konuşma-konuşma uygulamaları oluşturun
- Gürültü bastırma ve yankı engelleme gibi gelişmiş konuşma özelliklerini entegre edin
- Farklı kullanım alanları için birden fazla yapay zeka modelinden (GPT-4o, GPT-4o-mini, Phi) yararlanın
- Dinamik yanıtlar için fonksiyon çağrısı ve araç entegrasyonunu uygulayın
- Görsel bileşenlerle avatar özellikli sesli etkileşimler oluşturun
Not: Bu paket hem tarayıcı hem de Node.js ortamlarını destekler. WebSocket bağlantıları gerçek zamanlı iletişim için kullanılır.
Başlangıç Yapmak
Şu anda desteklenen ortamlar
- Node.js LTS sürümleri
- Safari, Chrome, Edge ve Firefox'un en son sürümleri
Önkoşullar
- Azure aboneliği
- Voice Live API erişimine sahip bir Azure AI Foundry kaynağı
Paketi yükle
Azure VoiceLive client library npm kullanılarak kurulum:
npm install @azure/ai-voicelive
Kimlik kütüphanesini kur
VoiceLive istemcileri, Azure Identity Library kullanılarak kimlik doğrulaması yapar. Onu da kurun:
npm install @azure/identity
TypeScript'i Yapılandır
TypeScript kullanıcılarının Node tipi tanımlarının kurulması gerekir:
npm install @types/node
Ayrıca compilerOptions.allowSyntheticDefaultImports programınızı etkinleştirmeniz tsconfig.json. Eğer etkinleştirdiyseniz compilerOptions.esModuleInterop, varsayılan olarak allowSyntheticDefaultImports etkinleştirilmiş olduğunu unutmayın.
JavaScript Paketi
Bu istemci kitaplığını tarayıcıda kullanmak için önce bir paketleyici kullanmanız gerekir. Bunun nasıl yapılacağının ayrıntıları için lütfen
Temel kavramlar
VoiceLiveClient
Azure VoiceLive hizmetine bağlantı kurmak için birincil arayüz. Bu istemciyi gerçek zamanlı sesli etkileşimler için kimlik doğrulama ve oturumlar oluşturmak için kullanın.
VoiceLiveSession
Gerçek zamanlı sesli iletişim için aktif bir WebSocket bağlantısını temsil eder. Bu sınıf, çift yönlü iletişimi yöneterek ses girişi gönderip ses çıkışı, metin transkripsiyonları ve diğer olayları gerçek zamanlı olarak almanızı sağlar.
Oturum Yapılandırması
Hizmet, sesli etkileşimin çeşitli yönlerini kontrol etmek için oturum yapılandırmasını kullanır:
- Turn Detection: Kullanıcıların konuşmaya başlayıp durduğunda servisin nasıl algıladığını yapılandırın
- Ses İşleme: Gürültü bastırma ve yankı engelleme etkinleştirin
- Ses Seçimi: Standart Azure sesleri, yüksek çözünürlüklü sesler veya özel sesler arasından seçim yapabilirsiniz
- Model Seçimi: İhtiyaçlarınıza en uygun yapay zeka modelini (GPT-4o, GPT-4o-mini, Phi varyantları) seçin
Modeller ve Yetenekler
VoiceLive API, farklı yeteneklere sahip birden fazla yapay zeka modelini destekler:
| Model | Description | Kullanım Örneği |
|---|---|---|
gpt-4o-realtime-preview |
Gerçek zamanlı ses işleme ile GPT-4o | Yüksek kaliteli konuşma yapay zekası |
gpt-4o-mini-realtime-preview |
Hafif GPT-4o varyantı | Hızlı ve verimli etkileşimler |
phi4-mm-realtime |
Multimodal destekli Phi modeli | Maliyet etkin ses uygulamaları |
Konuşma Geliştirmeleri
VoiceLive API, Azure'a özgü iyileştirmeler sunar:
- Azure Semantic VAD: Dolgu kelimelerini kaldıran gelişmiş ses aktivitesi algılama
- Gürültü Bastırma: Çevresel arka plan gürültüsünü azaltır
- Yankı İptal: Modelin kendi sesindeki yankını kaldırır
- Tur Sonu Algılama: Doğal duraklamalara erken kesinti olmadan izin verir
Azure Active Directory ile authenticating
VoiceLive servisi, API'lerine gelen isteği doğrulamak için Azure Active Directory'ye dayanır.
@azure/identity paketi, uygulamanızın bunu yapmak için kullanabileceği çeşitli kimlik bilgisi türleri sağlar.
@azure/identity
için README, başlamanıza yönelik daha fazla ayrıntı ve örnek sağlar.
Azure VoiceLive servisiyle etkileşime girmek için sınıfın bir örneği VoiceLiveClient , bir hizmet uç noktası ve bir credential nesnesi oluşturmanız gerekir. Bu belgede gösterilen örnekler, yerel geliştirme ve üretim ortamları dahil olmak üzere çoğu senaryo için uygun olan , adlı DefaultAzureCredentialbir kimlik belgesi nesnesi kullanır. Üretim ortamlarında kimlik doğrulama için yönetilen bir kimlik kullanmanızı öneririz.
Farklı kimlik doğrulama yolları ve bunlara karşılık gelen kimlik bilgileri türleri hakkında daha fazla bilgiyi Azure Identity dokümantasyonunda bulabilirsiniz.
İşte hızlı bir örnek. İlk olarak, ithal DefaultAzureCredential ve 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);
API Anahtarı ile Doğrulama
Geliştirme senaryoları için, ayrıca bir API anahtarı kullanarak kimlik doğrulaması yapabilirsiniz:
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);
Örnekler
Aşağıdaki bölümler, Azure VoiceLive kullanılarak kullanılan bazı yaygın görevleri kapsayan kod parçalarını sunmaktadır. Burada ele alınan senaryolar şunlardır:
- Temel bir sesli asistan oluşturmak
- Oturum seçeneklerinin yapılandırılması
- Gerçek zamanlı olayların yönetimi
- Fonksiyon çağrısını uygulamak
Temel bir sesli asistan oluşturmak
Bu örnek, konuşmadan konuşmaya etkileşimleri yönetebilen basit bir sesli asistanın nasıl oluşturulacağını gösterir:
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",
});
Oturum seçeneklerinin yapılandırılması
Sesli etkileşimin çeşitli yönlerini özelleştirebilirsiniz:
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",
});
Gerçek zamanlı olayların yönetimi
VoiceLive istemcisi, gerçek zamanlı etkileşimler için olay odaklı iletişim sağlar:
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);
}
Fonksiyon çağrısını uygulamak
Sesli asistanınızın dış fonksiyonları ve araçları aramasını sağlayın:
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",
});
}
},
});
Sorun giderme
Yaygın hatalar ve özel durumlar
Kimlik Doğrulama Hataları: Kimlik doğrulama hataları alırsanız, şunu doğrulayın:
- Azure AI Foundry kaynağınız doğru şekilde yapılandırılmıştır
- API anahtarınız veya kimlik bilgileriniz gerekli izinlere sahiptir
- Uç nokta URL'si doğru ve erişilebilir
WebSocket Bağlantı Sorunları: VoiceLive WebSocket bağlantıları kullanıyor. Şunlardan emin olun:
- Ağınız WebSocket bağlantılarına izin veriyor
- Güvenlik duvarı kuralları bağlantılara izin verir
*.cognitiveservices.azure.com - Tarayıcı politikaları WebSocket ve mikrofon erişimine izin verir (tarayıcı kullanımı için)
Ses Sorunları: Ses ile ilgili sorunlar için:
- Tarayıcıda mikrofon izinlerini doğrulayın
- Ses formatlarının (PCM16, PCM24) desteklenip desteklenmediğinden emin olun
- Oynatma için doğru ses bağlamı kurulumunu sağlayın
Ağaç kesimi
Loglamayı etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. WebSocket mesajları ve yanıtlarının günlüğünü görmek için AZURE_LOG_LEVEL ortam değişkenini .info Alternatif olarak, çalışma zamanında setLogLevel@azure/logger çağrılarak günlük tutma etkinleştirilebilir.
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.
Sonraki Adımlar
Daha fazla kod örneğini aşağıdaki bağlantılardan bulabilirsiniz:
Contributing
Bu kitaplığa katkıda bulunmak isterseniz kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.
Azure SDK for JavaScript