paint-brush
Yerel Makinede Piper Konuşma Sentezleyicisi Nasıl Kurulurby@biq
1,658
1,658

Yerel Makinede Piper Konuşma Sentezleyicisi Nasıl Kurulur

biq2m2023/12/18
Read on Terminal Reader

Piper, piper-whistle ve adlandırılmış kanallar kullanılarak geçici, yerel (çevrimdışı) bir metin-konuşma sentezleyicisinin nasıl kurulabileceğine bir göz atalım.
featured image - Yerel Makinede Piper Konuşma Sentezleyicisi Nasıl Kurulur
biq HackerNoon profile picture
0-item
1-item

Piper , piper-whistle ve adlandırılmış yöneltmeler kullanılarak geçici, yerel (çevrimdışı) bir metin-konuşma sentezleyicisinin nasıl kurulabileceğine bir göz atalım.


GNU/Linux tabanlı bir sistemde piper kurmak için, piper'ın yardımıyla biraz manuel kurulumla sistem çapında metinden konuşmaya izin verecek kadar basit olan adlandırılmış yöneltmeler kullanan genel bir mimari tanımlayacağım. -whistle ve bazı küçük ödünler (basittir, ancak paralel konuşma işlemeyi desteklemez).


Başlamak için, github'da barındırılan deposundan oluşturulmuş en son piper bağımsızını getirelim (bu yazının yazıldığı sırada 2023.11.14-2 ). Sıkıştırılmış arşivi indirdikten sonra piper kurulumumuz için bir dizin yapısı oluşturacağız. Kök dizin, aşağıdaki alt dizinlerle birlikte /opt/wind konumunda olacaktır:


  • /opt/wind/piper (inşa edilen kavalcıyı barındıracak)
  • /opt/wind/channels (adlandırılmış kanalları içerecektir)


Sıkıştırmayı açtıktan sonra, piper yürütülebilir dosyasının /opt/wind/piper/piper adresinde, ayrıca beraberindeki kütüphanelerde ve espeak-ng-data adresinde mevcut olması gerekir.

Piper tarafından kullanılan ses modellerini yönetmek için, sesleri indirmeyi ve yönetmeyi daha kolay hale getiren, python ile yazılmış bir komut satırı yardımcı programı olan piper-whistle'ı kullanmanızı öneririm.


En son tekerlek dosyasını gitlab veya github yayın sayfasından alabilirsiniz. Wheel dosyasını yükledikten sonra, biraz konuşma oluşturmak için bir ses getirelim. Öncelikle piper_whistle -vR çağırarak veritabanını güncelleyelim. İngilizce konuşmada alba denilen kadın sesini oldukça beğeniyorum. Düdük kullanarak, piper_whistle list -l en_GB -i 2 kullanarak mevcut tüm İngilizce (GB) sesleri listeleyebiliriz. Ses indeks 2'dedir. Kurulum için piper_whistle install en_GB 2 çağırmanız yeterlidir.


Sonra gerekli adlandırılmış kanalları oluşturalım. Ortaya çıkan yapı şöyle görünecek:

  • /opt/wind/channels/speak (JSON yükünü kabul eder)
  • /opt/wind/channels/input (piper tarafından okunur)
  • /opt/wind/channels/ouput (piper tarafından yazılmıştır)


Adlandırılmış bir kanal oluşturmak için aşağıdaki komutu kullanabilirsiniz: mkfifo -m 755 /opt/wind/channels/input


Son olarak ayrı kabuklarda üç süreç oluşturuyoruz:

  • tty0: tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input
  • tty1: /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output
  • tty2: aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output


Tty0'daki süreç, piper veya aplay tarafından işlem bittikten sonra bile borunun açık tutulmasını sağlar. Bu şekilde TTS isteklerini sıraya koyabilir ve ardından bunları oynatabilir veya kaydedebiliriz.


Yukarıdaki yapıyı kullanırsanız piper-whistle ek özellikler sunduğundan, artık piper_whistle speak "This is quite neat" aracılığıyla konuşma üretebiliriz. X11'li sistemlerde piper_whistle speak "$(xsel --clipboard --output)" yoluyla panonuzdaki metnin sözlü versiyonunu oluşturabilirsiniz.