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

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ı

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

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)

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ı

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

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ı

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

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