Raspberry Pi’ın konuşmasını sağlayarak robot projelerinize veya uygulama programlarınıza etkileşim katabilirsiniz. Raspberry Pi’ı kullanarak metinleri seslendirebileceğiniz birçok açık kaynak kod araç vardır.
Gerekli araçları yüklemeden önce Raspberry Pi’ın ses kaynağının 3mm jack üzerinden mi yoksa HDMI üzerinden mi alınacağını ayarlamak gerekir. Bunun için raspi-config aracının Advanced options menüsü altındaki Audio seçeneğinden uygun ses çıkışını seçin.
1 |
pi@raspberry:~ $ sudo raspi-config |
Raspberry Pi’ın ses yürütebilmesi için alsa araç ve kütüphanesine ihtiyacı vardır. Hâlihazırda sistemde yüklü değilse aşağıdaki komut ile yükleyebilirsiniz:
1 2 3 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install alsa-utils -y |
Daha sonra, seçtiğiniz ses çıkışına bir hoparlör ya da kulaklık bağlayarak aşağıdaki gibi; aplay aracı ile /usr/share/sounds/alsa/dizinindeki örnek wav dosyalarını çaldırarak bir ses sınaması gerçekleştirebilirsiniz:
1 |
pi@raspberry:~ $ aplay /usr/share/sounds/alsa/* |
Eğer hoparlörden ses duyabiliyorsanız metin seslendirme araçlarını yüklemeye geçebilirsiniz.
espeak ile Raspberry Pi’ı konuşturmak
Espeak[1] açık kaynak kodlu ücretsiz bir konuşma sentezleyicisidir ve metinleri robotik bir ses ile seslendirebilir. espeak, Türkçe de dâhil 30’dan fazla dilde metni çevrim dışı (offline) olarak seslendirebilir. espeak’i kullanarak, programlarınız (Python, PHP, C++) içerisinden çalıştırabilir, sesli kullanıcı etkileşimleri yaratabilirsiniz. espeak programını kurmak için aşağıdaki komutu verebilirsiniz:
1 |
pi@raspberry:~ $ sudo apt install espeak –y |
Kurulum tamamlandıktan sonra espeak programını aşağıdaki gibi deneyebilirsiniz:
1 |
pi@raspberry:~ $ espeak "Hello Raspberry Pi" |
espeak çalışması sırasında ekrana hata ayıklama çıktıları basabilir. Bu çıktıların konsola basılmamasını sağlamak için aşağıdaki gibi dipsiz kuyuya (/dev/null) yönlendirebilirsiniz:
1 |
pi@raspberry:~ $ espeak "Follow the white rabbit" 2>/dev/null |
espeak, konuşma hızından sesin cinsiyetine kadar birçok seçeneği değiştirebilme imkânı sunar. Bazı önemli seçenekler ve görevleri şunlardır:
- -f : Okunacak metnin kayıtlı olduğu dosya tanımlanır.
- -a: Ses şiddeti 0 ile 200 arasında ayarlanabilir.
- -s: Okuma hızı dakikadaki kelime sayısı olarak belirtilebilir.
- -s: Seslendirmeyi yapan ses seçilebilir.
- -x: Seslendirmesi yapılan hecelerin ekrana basılmasını sağlar.
- -v: Seslendirilecek metnin yazıldığı dili ve seslendirmeyi yapacak olan sesin cinsiyeti ayarlanabilir. Seçeneğin hemen ardından tr, en gibi dil kodu belirtildikten sonra kadın (female) sesi için f1 ile f4, erkek (male) sesi için m1 ile m7 arasında bir değer tanımlanabilir. Fısıltı sesi ile okutmak için whisper yazılabilir.
- -w: Okunan metnin bir wav biçimli bir ses dosyası olarak kaydedilmesini sağlar.
Yukarıdaki seçenekler ışığında aşağıdaki örnekleri çalıştırarak inceleyebilirsiniz:
1 |
pi@raspberry:~ $ espeak –vtr+m2 -s80 -a200 "Merhaba canım, nasılsın" 2> /dev/null |
Yukarıdaki örnekte ilgili metin Türkçe dili (tr) kullanılarak 2 numaralı erkek sesi (m2) ile dakikada 80 kelime hızında okunmuştur. Aynı örneği bir ses dosyası oluşturmak için kullanmak gerekirse –w seçeneği aşağıdaki gibi kullanılabilir:
1 2 3 4 5 |
pi@raspberry:~ $ espeak –vtr+m2 -s80 -a200 –w canim.wav"Merhaba canım, nasılsın" 2> /dev/null pi@raspberry:~ $ ls -la *wav -rw-r--r-- 1 pi pi 216956 Dec 5 15:59 canim.wav |
canim.wav dosyasını yürütmek için aplay programı aşağıdaki gibi kullanılabilir:
1 |
pi@raspberry:~ $ aplay canim.wav |
Google ile Raspbery Pi’ı konuşturmak
Google’un metin seslendirme yeteneği birçok seslendirme aracına göre (text to speetch) daha başarılıdır. Raspberry Pi’ınızın internet bağlantısı varsa metinlerinizi Google’ın sunucusunu kullanarak seslendirebilirsiniz. Bu durumun tek dezavantajı metnin okunmaya başlanmasının internet hızına göre biraz zaman almasıdır (yaklaşık 2sn).
Google’ın metin okuma motorunu kullanmak için translate_tts sayfasına bir web isteği gönderilir. Buradan dönecek olan ise ses verisidir. Aşağıda gibi mplayer uygulaması ile yapılan istek Raspberry Pi’ın ses kartından yürütülür.
1 |
/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$*&tl=tr"; |
Öncelikle mplayer paketini yükleyelim:
1 |
pi@raspberry:~ $ sudo apt install mplayer -y |
Yukarıdaki web isteğini daha kullanışlı bir biçime çevirmek için bir kabuk betiği olarak kaydedebilirsiniz. Bunun için nano editörünü açarak aşağıdaki satırları ekleyin ve konus.sh dosya adıyla kaydedin. Ardından da bu dosyaya çalıştırma izni verin:
1 2 3 4 5 6 7 8 9 |
pi@raspberry:~ $ nano konus.sh #!/bin/bash say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$*&tl=tr" > /dev/null 2>&1; } say $* pi@raspberry:~ $ chmod 755 konus.sh |
Eğer Raspberry Pi bilgisayarınızda internet bağlantısı varsa konus.sh betiğini aşağıdaki şekilde çalıştırarak metni seslendirebilirsiniz:
1 |
pi@raspberry:~ $ ./konus.sh "Merhaba. Google konuşuyor" |
[1] espeak resmi sayfası: http://espeak.sourceforge.net
