Ses İşlemleri
Pi v2'de ses oynatma, kayıt ve metin okuma işlemleri için kullanılan fonksiyonlar.
tts(metin, voiceName?, speed?)
Metni sese dönüştürür ve oynatır (Text-to-Speech).
Parametreler:
- metin (string) - Okunacak metin
- voiceName (string, opsiyonel) - Kullanılacak ses adı
- speed (number, opsiyonel) - Konuşma hızı (0.7 - 1.2 arası, 1 = normal hız)
Dönüş Değeri:
Promise<any>- İşlem sonucu
Örnek:
// Varsayılan ses ile
await tts("Merhaba, hoş geldiniz!");
// Özel ses ile
await tts("Bu mesaj özel ses ile okunuyor", "female_voice");
// Değişken kullanarak
const mesaj = `Sayın ${$arayan}, aramanız önemli.`;
await tts(mesaj);
// Konuşma hızını ayarlama
await tts("Bu mesaj daha yavaş okunuyor", undefined, 0.8);
playSound(voiceId)
Önceden kaydedilmiş ses dosyasını oynatır.
Parametreler:
- voiceId (string) - Oynatılacak ses dosyasının ID'si
Dönüş Değeri:
Promise<any>- İşlem sonucu
Örnek:
try {
await playSound("welcome_message");
await addLog("Ses oynatıldı");
} catch (error) {
await addLog("Ses oynatma hatası:", error);
}
getDigits(voiceId, timeout, maxDigits, escapeCharacter?)
Ses oynatır ve kullanıcıdan rakam girişi bekler.
Parametreler:
- voiceId (string) - Oynatılacak ses dosyasının ID'si
- timeout (number) - Bekleme süresi (milisaniye)
- maxDigits (number) - Maksimum rakam sayısı
- escapeCharacter (string, opsiyonel) - Girişi sonlandıran tuş (ör. "#")
Dönüş Değeri:
-
Promise<object>- İşlem sonucu- code - İşlem kodu
- result - Kullanıcının bastığı tuş/tuşlar (string)
- data - Ek veri bilgisi
Örnek:
const response = await getDigits("menu_voice", 5000, 1);
await addLog("Girilen rakam:", response.result); // Örn: "1", "2", "123" vb.
await addLog("İşlem kodu:", response.code);
// Menü örneği
const choice = await getDigits("main_menu", 10000, 1);
switch (choice.result) {
case "1":
await tts("Satış departmanına aktarılıyorsunuz");
break;
case "2":
await tts("Teknik destek departmanına aktarılıyorsunuz");
break;
case "0":
await tts("Operatöre aktarılıyorsunuz");
break;
default:
await tts("Geçersiz seçim, lütfen tekrar deneyin");
}
getDigitsWithTTS(metin, timeout, maxDigit, voiceName?, escapeCharacter?, speed?)
Metni okur ve kullanıcıdan rakam girişi bekler.
Parametreler:
- metin (string) - Okunacak metin
- timeout (number) - Bekleme süresi (milisaniye)
- maxDigit (number) - Maksimum rakam sayısı
- voiceName (string, opsiyonel) - Kullanılacak ses adı
- escapeCharacter (string, opsiyonel) - Girişi sonlandıran tuş (ör. "#")
- speed (number, opsiyonel) - Konuşma hızı (0.7 - 1.2 arası, 1 = normal hız)
Dönüş Değeri:
-
Promise<object>- İşlem sonucu- code - İşlem kodu
- result - Kullanıcının bastığı tuş/tuşlar (string)
- data - Ek veri bilgisi
Örnek:
const response = await getDigitsWithTTS(
"Lütfen 1 ile 9 arasında bir rakam tuşlayın",
8000,
1
);
if (response.result) {
await tts(`${response.result} rakamını seçtiniz`); // Örn: "1 rakamını seçtiniz"
} else {
await tts("Herhangi bir tuşlama algılanmadı");
}
// Özel ses ile
const choice = await getDigitsWithTTS(
"Ana menü için 1, çıkış için 9 tuşlayın",
10000,
1,
"professional_voice"
);
// Çoklu rakam girişi örneği
const pinResponse = await getDigitsWithTTS(
"Lütfen 4 haneli PIN kodunuzu giriniz",
15000,
4
);
if (pinResponse.result && pinResponse.result.length === 4) {
await addLog("Girilen PIN:", pinResponse.result); // Örn: "1234"
await tts("PIN kodunuz alındı");
} else {
await tts("Eksik veya hatalı PIN kodu");
}
setDefaultVoiceName(voiceName)
Varsayılan ses adını ayarlar.
Parametreler:
- voiceName (string) - Varsayılan olarak kullanılacak ses adı
Dönüş Değeri:
- undefined
Örnek:
// Varsayılan sesi ayarla
setDefaultVoiceName("turkish_female");
// Artık tüm TTS çağrıları bu sesi kullanacak
await tts("Bu mesaj varsayılan ses ile okunuyor");
startVoiceRecord()
Ses kaydını başlatır.
Sözdizimi:
await startVoiceRecord()
Dönüş Değeri:
Promise<undefined>- İşlem sonucu
Örnek:
try {
await startVoiceRecord();
await tts("Ses kaydı başladı, mesajınızı bırakın");
} catch (error) {
console.error("Ses kaydı başlatılamadı:", error);
}
stopVoiceRecord()
Ses kaydını durdurur ve kayıt dosyasının base64 içeriğini döndürür.
Sözdizimi:
await stopVoiceRecord()
Dönüş Değeri:
Promise<string>- Kayıt dosyasının base64 içeriği
Örnek:
try {
const recordBase64 = await stopVoiceRecord();
await addLog("Kayıt tamamlandı, base64 uzunluğu:", recordBase64.length);
await tts("Mesajınız kaydedildi, teşekkürler");
// Base64 içeriği ile işlem yapma
const audioData = {
content: recordBase64,
format: "audio/wav",
timestamp: new Date().toISOString()
};
// API'ye gönderme
await post(
"https://api.example.com/audio/upload",
JSON2str(audioData),
{ "Content-Type": "application/json" }
);
} catch (error) {
await addLog("Ses kaydı durdurulamadı:", error);
}
playAudioFromUrl(url)
Belirtilen URL adresindeki ses dosyasını oynatır.
Parametreler:
- url (string) - Oynatılacak ses dosyasının URL adresi
Desteklenen Formatlar:
- WAV
- MP3
- AAC
- FLAC
- OGG
- M4A
Dönüş Değeri:
Promise<any>- İşlem sonucu
Örnek:
try {
// MP3 dosyası oynatma
await playAudioFromUrl("https://example.com/audio/welcome.mp3");
await addLog("URL'den ses oynatıldı");
} catch (error) {
await addLog("URL ses oynatma hatası:", error);
}
// WAV dosyası oynatma
const audioUrl = "https://cdn.example.com/sounds/notification.wav";
await playAudioFromUrl(audioUrl);
// Dinamik URL ile
const userId = $arayan;
const personalizedAudio = `https://api.example.com/audio/greeting/${userId}.aac`;
try {
await playAudioFromUrl(personalizedAudio);
} catch (error) {
// Hata durumunda varsayılan mesaj
await tts("Hoş geldiniz!");
}
// FLAC dosyası oynatma
const highQualityAudio = "https://storage.example.com/audio/announcement.flac";
await playAudioFromUrl(highQualityAudio);
waitForSilence(silence, timeout)
Kanalda sessizlik oluşana kadar bekler. Genellikle ses kaydı sırasında konuşmanın bittiğini algılamak için kullanılır.
Parametreler:
- silence (number) - Beklenecek sessizlik süresi (milisaniye)
- timeout (number) - Maksimum bekleme süresi (saniye)
Dönüş Değeri:
Promise<any>- İşlem sonucu
Örnek:
await tts("Mesajınızı bırakın, bitirdiğinizde sessiz kalın");
await startVoiceRecord();
await waitForSilence(3000, 30);
const kayitBase64 = await stopVoiceRecord();
initiateTranscriptionSync(base64AudioData)
Ses kaydını eşzamanlı olarak metne dönüştürür (Speech-to-Text). Sonuç aynı çağrı içinde kullanılabilir.
Parametreler:
- base64AudioData (string) - Ses dosyasının base64 içeriği
Dönüş Değeri:
Promise<object>-{ success: boolean, text: string }
Örnek:
await tts("Lütfen talebinizi söyleyin");
await startVoiceRecord();
await waitForSilence(3000, 30);
const kayitBase64 = await stopVoiceRecord();
const sonuc = await initiateTranscriptionSync(kayitBase64);
if (sonuc.success) {
await addLog("Söylenen:", sonuc.text);
await tts("Şunu söylediniz: " + sonuc.text);
}
initiateTranscription(base64AudioData, arayan?, aranan?, partnerId?, kullaniciId?, santralId?, apiKey?, metadata?)
Ses kaydını transkripsiyon servisine gönderir (asenkron). Sonuç çağrı içinde beklenmez, analiz sistemine işlenir.
Parametreler:
- base64AudioData (string) - Ses dosyasının base64 içeriği
- arayan (string, opsiyonel) - Varsayılan: $arayan
- aranan (string, opsiyonel) - Varsayılan: $aranan
- partnerId, kullaniciId, santralId, apiKey (string, opsiyonel) - Servis kimlik bilgileri
- metadata (string, opsiyonel) - Ek bilgi
Dönüş Değeri:
Promise<string>- Servis yanıtı
Örnek:
const kayitBase64 = await stopVoiceRecord();
await initiateTranscription(kayitBase64);