SR (Speech-to-Text) veya Sesli IVR


#1

Merhaba,

say ile ilgili yakın zamanda bir release yapılacağından bahsedilmişti. Acaba konuşmayı metne dönüştürme, doğal dil işleme, dilog akışı, Sesli IVR ile ilgili olarak yol haritanız nedir? Planlamanız var mı? En azından ispeech, sestek gibi servislerden API çağrıları yoluyla konuşmayı metne dönüştürmeyle ilgili olaraktan Bulutfon BFXM ile bir çözüm üretebilir miyiz? Öneriniz nedir?


#2

Merhaba @seyyah,

Bununla ilgili bir kaç çalışmamız var. Ücretsiz çözümler maalesef çok kötüler, ücretli çözümlerse extra bir maliyet içeriyor. Bu yüzden firma olarak arada kalıyoruz. Mayıs 2018 gibi bu işı bitiririz diye tahmin ediyorum. Ancak bunu söz olarak lütfen almayın. Çoğu zaman regülasyon veya piyasa şarlatından dolayı araya farklı geliştirmeler geliyor.

Sorunuzun çözümü için BulutfonXM’deki PLAY methodunu haricı bir TTS servisiyle kullanmanızı önerebilirim. Bizim en beğendiğimiz TTS servislerini aşağıda listeledim.

1/ https://www.ispeech.org/
2/ https://aws.amazon.com/polly/

Saygılarımla,


#3

@onurozgurozkan bey, bir taraftan ispeech API’sini de inceliyorum. BFXM’in play metodunu kullanarak, ispeech API ile müşterinin konuşmasını (veya bizim talimatımız sonrasında söylediği cümleyi) text olarak alacağız. Peki bunu nasıl yapacağız? Örnek bir klavuz, kod parçası vs önerir misiniz?


#4

@onurozgurozkan bey,

ispeech API’nin Ruby SDK’sında, [1] nolu kaynak,


require File.dirname(__FILE__) + '/ispeech.rb';

Recognizer = SpeechRecognizer.new()
Recognizer.set_attribute("server", "http://api.ispeech.org/api/rest")
Recognizer.set_attribute("apikey", "developerdemokeydeveloperdemokey")
Recognizer.set_attribute("locale", "en-US")
Recognizer.set_attribute("freeform", "3")
Recognizer.set_attribute("output", "json")
Recognizer.set_attribute("content-type", "wav")

file = File.open("output.wav", "rb")
contents = file.read;
file.close;
Recognizer.set_attribute("audio", Base64.encode64(contents).gsub("\n", ""))
result = Recognizer.make_request()

if (result.class == Hash) #Error occured, print error
  puts result["error"]
else
  puts result;
end

Burada kritik satır,

file = File.open("output.wav", "rb")

buradan anlıyorum ki kayıtlı dosyanın REST çağrıda kullanılması baz alınmış. Bir taraftan API’yi derinlemesine inceliyorum. Ancak sormak istediğim konu Bulutfon müşteri sesini bana wav (veya farklı bir ses dosya formatında) sunabilecek mi? BFXM ile bu dosyayı alacağım, ispeech API ile text’e dönüştüreceğim. Ve bunu realtime yapacağız. Pratik tarafıyla alakalı görüşünüz veya tecrübeniz nedir? Müşteri memnuniyeti açısından sorun yaşarmıyız?

Önerileriniz nelerdir?

Kaynaklar

  1. https://github.com/iSpeech/iSpeech-Ruby-SDK/blob/master/speech-recognition-demo.rb#L11

#5

@onurozgurozkan bey,

[1] nolu kaynakta “Automated Speech Recognition” parametreleri aşağıda ki gibi söylenmiş,

image

Content-Type olarak “audio/x-wav, audio/amr, audio/speex” seçeneği sunulmuş.

Daha da önemlisi TTS de var [2] ancak ASR için Türkçe dil desteğini göremedim [3].

Kaynaklar

  1. http://www.ispeech.org/api/#request-parameters26
  2. http://www.ispeech.org/api/#voices-standard
  3. http://www.ispeech.org/api/#locales

#6

@onurozgurozkan bey merhaba,

TTS servisi kapsamında Bulutfon’dan bağımsız bir şekilde Amazon Aws Polly’i test ettik. Türkçe konusunda oldukça başarılılar.

ASR konusunda “Google Cloud Speech Recognition” API’sini kullanmaya karar verdik. IVR destekli dijital/sanal santral sunan çözümlerinde arkaplanda başarılı bir şekilde Google’u kullanıyor olmalarından dolayı böyle bir yönelimimiz oluyor. Bulutfon’dan bağımsız bir şekilde ses dosyaları üzerinde başarılı bir şekilde Türkçe ses kayıtlarını metne dönüştürebiliyoruz.

Sorumuz şu Bulutfon üzerinden müşterimiz aradığında stream olarak ses kaydını nasıl alacağız? Stream’i (tecrübeniz olduysa) Google (veya başka bir ASR) yardımıyla nasıl metne dönüştüreceğiz? (Ses dosyasını değil, stream’inin metne dönüştürülmesi gerekiyor). API çağrıları sürecinde realtime olamayacağımızdan oluşan gecikmeler, müşteri memnuniyeti açısından nasıl karşılanır? Geçmiş tecrübeniz varsa paylaşabilir misiniz? Bekleme kısmını yönetmek için ipucu sağlayabilir misiniz?

İlgi ve değerli zamanınız için teşekkürler.


#7

Selam,

TTS konusunda başarılı testlerimiz bizim de oldu ancak Türkçe ASR de biz de Google’dan daha iyi bir cloud alternatif bulamadık. Onun da bizim ölçeğimiz için ücreti oldukça fazla. Bulutfon’a isteğe bağlı olarak bu özellikleri ekleyeceğiz.

Ses dosyalarını şu an için stream edemiyoruz. ASR amacı ile ses dosyasına ulaşmanızın tek yolu şu an için API ile ses dosyasına çağrı bitiminde erişmeniz olacaktır. Ses trafiğine anlık erişmenizin bir yolu, çağrıyı bir dahiliye yönlendirmek ve ASR işlemini orada yapabilmek olur ancak bu teorik bir öneri. Pratikte daha önce test ettiğimiz bir senaryo değil.

Saygılarımla