Ana içeriğe geç

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);