Text to Speech, Model Training

Bedava Text To Speech Modeli Nasıl Kullanılır?

Bu yazıda, Kokoro modelini kullanarak metinleri sese dönüştürme (Text to Speech – TTS) işlemini adım adım inceleyeceğiz. Python’ın güçlü kütüphaneleri ve araçları sayesinde, kısa bir kod bloğuyla metinleri doğal ve akıcı bir sesle okuyabilen ses dosyalarına kolayca çevirebilirsiniz.

Metinleri Doğal Seslere Dönüştürmek

Kokoro modeli, metinden sese dönüştürme işlemi için yüksek performanslı ve kullanıcı dostu bir çözüm sunar. Bu model, özellikle doğal bir ses deneyimi arayanlar için etkili bir araçtır.

Dikkat Edilmesi Gerekenler:

  • Hazırladığımız kod, maksimum 30 saniyelik ses dosyaları oluşturabilir.
  • Daha uzun metinler için kodu tekrar tekrar çalıştırarak parçalı ses dosyaları üretebilirsiniz.

Kokoro Modeli ile Text to Speech İşleminin Avantajları

Kısa sürede sonuç: Karmaşık işlemler yerine sadece birkaç satır Python koduyla hızlı bir şekilde ses dosyası oluşturabilirsiniz.

Doğal ses deneyimi: Metinler, robotik bir tını yerine insan sesi gibi duyulur.

Aşağıda bu işlemin temellerini anlatacak; gerekli araçların nasıl kurulacağını, modelin nasıl yükleneceğini ve seslerin nasıl oluşturulacağını detaylı biçimde ele alacağız.

Kod Bloğuna Genel Bakış

Aşağıda paylaştığımız kod, sırasıyla şu işlemleri yapıyor:

  1. Proje için gerekli bağımlılıkları sessizce kuruyor.
  2. Kokoro modelini yüklüyor ve varsayılan bir ses paketi (VOICEPACK) tanımlıyor.
  3. generate fonksiyonunu kullanarak girilen metni 24kHz örnekleme oranına sahip bir ses dosyasına dönüştürüyor.
  4. Son olarak, hem oluşan ses dosyasını çalıyor hem de fonetik (okunuş) verilerini ekrana yazdırıyor.

1. Gerekli Bağımlılıkların Kurulması

Kodumuzun en başında, projeye ait tüm kütüphaneleri otomatik ve sessiz bir şekilde (konsolda gereksiz çıktı almadan) yüklüyoruz. Bu adım, ilerleyen aşamalarda hata almadan çalışmak için önemlidir.

# 1️⃣ Install dependencies silently
!git lfs install
!git clone https://huggingface.co/hexgrad/Kokoro-82M
%cd Kokoro-82M
!apt-get -qq -y install espeak-ng > /dev/null 2>&1
!pip install -q phonemizer torch transformers scipy munch
  • git lfs install ve git clone: Model dosyalarının barındığı depoyu (repository) bilgisayarımıza klonluyoruz.
  • %cd Kokoro-82M: İndirdiğimiz klasöre geçiş yapıyoruz.
  • apt-get -qq -y install espeak-ng: espeak-ng, konuşma sentezinde kullanılan önemli araçlardan biridir.
  • pip install -q phonemizer torch transformers scipy munch: Python içinde kullanılacak paketleri yüklüyoruz.

2. Modelin ve Ses Paketinin Yüklenmesi

Burada, kodun geri kalanında kullanacağımız Kokoro modelini tanımlıyor ve belirli bir ses paketini (VOICEPACK) seçiyoruz.

pythonKodu kopyala# 2️⃣ Build the model and load the default voicepack
from models import build_model
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
MODEL = build_model('kokoro-v0_19.pth', device)
VOICE_NAME = ['bm_george'][0]
VOICEPACK = torch.load(f'voices/{VOICE_NAME}.pt', weights_only=True).to(device)
print(f'Loaded voice: {VOICE_NAME}')
  • build_model('kokoro-v0_19.pth', device): Kokoro’nun eğitilmiş ağırlık dosyasını (pth uzantılı) kullanarak modeli yapılandırır.
  • device: Bilgisayarınızda GPU (CUDA) varsa model GPU’da, yoksa CPU’da çalışacaktır.
  • VOICE_NAME: Kullanacağınız ses paketinin adıdır. Burada “bm_george” örnek olarak seçilmiştir ama siz [af_bella , af_sarah , am_adam, am_michael, bf_emma, bf_isabella, bm_george, bm_lewis, af_nicole, af_sky] seslerinden herhangi birisini seçebilirsiniz. İsim Ön eklerine göre anlamlar mevcuttur.
  • VOICEPACK: Seçtiğimiz ses paketini, PyTorch ile RAM’e (ya da GPU’ya) yükleriz.

3. Metinden Ses Oluşturma (Text-to-Speech)

Bu adımda, metni sese dönüştürmek için generate fonksiyonunu kullanıyoruz. Örnekte, birkaç cümlelik İngilizce bir metin yer alıyor.

# 3️⃣ Call generate, which returns 24khz audio and the phonemes used
from kokoro import generate

text = """The studio was filled with the rich odour of roses, and when the light
summer wind stirred amidst the trees of the garden, there came through
the open door the heavy scent of the lilac, or the more delicate
perfume of the pink-flowering thorn.
"""
audio, out_ps = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0])
  • text: Sese dönüştürmek istediğimiz metin.
  • lang=VOICE_NAME[0]: Ses paketinin ilk harfine göre dil seçiliyor. (Örneğin “b” ise İngiliz aksanı, “a” ise Amerikan aksanı gibi.)
  • audio: Oluşturulan ses verisinin bulunduğu değişken.
  • out_ps: Fonetik veriyi (kelimenin hecelenme şeklini) saklar.

Bu adımla birlikte, artık istediğimiz metnin 24kHz örnekleme oranıyla kaydedilmiş bir ses dosyasını elde etmiş oluyoruz.

4. Elde Edilen Sesin Çalınması ve Fonetik Çıktının Görüntülenmesi

Son olarak, üretilen sesi dinleyip fonetik çıktılarına göz atmak için aşağıdaki kodu kullanıyoruz:

# 4️⃣ Display the 24khz audio and print the output phonemes
from IPython.display import display, Audio
display(Audio(data=audio, rate=24000, autoplay=True))
print(out_ps)
  • Audio(data=audio, rate=24000, autoplay=True): 24kHz örnekleme oranında bir ses oynatıcısı oluşturur.
  • print(out_ps): Metni dönüştürürken kullanılan fonem dizisini terminale basar.

Bu örnekte, maksimum 30 saniyelik bir ses dosyası oluşturabiliyoruz. Metnin uzunluğu arttıkça veya kısaldıkça, ses süresi de buna bağlı olarak değişecektir.

ğlı olarak değişecektir.

Dikkat edilmesi gerekenler!

1. Dil Seçimi

Ses paketinin ilk harfi, dil aksanının belirlenmesinde rol oynar. Eğer Amerikan İngilizcesi tercih ediyorsanız “a” ile başlayan, İngiliz ingilizcesi tercih ediyorsanız “b” ile başlayan bir ses paketi seçebilirsiniz. Bunun yanı sıra harflerden sonra gelen harflerden f “kadın”, m “erkek” seslerini temsil ediyor.

2. GPU veya CPU Kullanımı

Kodun başındaki device değişkeni, mevcut donanıma göre GPU (CUDA) veya CPU kullanarak daha hızlı veya standart hızda çalışma imkânı sunar. Bu örnekte Cuda yani ekran kartı üzerinden çalıştırıyoruz.

3. Çalışma Ortamı

Kendi ekran kartınızı(GPU) yormak yerine, Google CoLab tercih edilebilir.

4. Seslendiren kişinin değiştirilmesi

VOICE_NAME: Kullanacağınız ses paketinin için [af_bella , af_sarah , am_adam, am_michael, bf_emma, bf_isabella, bm_george, bm_lewis, af_nicole, af_sky] seslerinden herhangi birisini seçebilirsiniz.

Bir cevap yazın:

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir