WaveNet, DeepMind tarafından 2016’da tanıtılan ve ham ses örneklerinin koşullu olasılığını autoregressive biçimde modelleyen bir sinir ağı mimarisidir. Dilated causal convolution yapısı geniş bir alıcı alanı katman sayısını doğrusal büyütmeden kurar; bunun karşılığında sıralı örnekleme ilk sürümlerde önemli bir gecikme maliyeti oluşturur.
Önce Temel Problemi Anlayalım
Ham ses yüksek zaman çözünürlüğüne sahiptir: 16 kHz örnekleme hızında bir saniye için 16.000 değer üretilir. Autoregressive model her değeri öncekilere bağlı ürettiğinde bu uzun dizi hem bağlam hem de çıkarım süresi açısından zorlayıcıdır.
Eski Yöntemler Ne Yapıyordu?
Geleneksel text-to-speech sistemleri şöyle çalışırdı:
- Önce metni analiz ederlerdi - Hangi kelime, hangi hece, hangi ses?
- Sonra fonetik özellikleri çıkarırlardı - Bu ses nasıl çıkar, tonu nedir?
- En son da bu özellikleri birleştirirlerdi - Parçaları yapıştır, sesi oluştur
Sonuç? Robotik, mekanik sesler. Hani eski navigasyon cihazlarının “100 metre sonra sağa dönün” sesi gibi. Dinlerken “bu kesinlikle makine” diyorsunuz.
WaveNet’in Devrimi: Raw Audio Generation
WaveNet tamamen farklı bir yaklaşım getirdi. “Ben niye özellik çıkarayım ki? Direkt ham ses dalgasını üreteyim!” dedi. Yani pixel pixel resim üretir gibi, sample sample ses üretiyor.
Bu yaklaşımın temel bileşenleri causal convolution ve artan dilation oranıdır.
Autoregressive Model - Tek Tek İlerlemek
WaveNet bir autoregressive model. Yani her yeni ses örneğini, önceki tüm örneklere bakarak üretiyor. Şöyle düşünün: Bir cümle yazarken her yeni harfi, önceki harflere bakarak tahmin ediyorsunuz. WaveNet de aynısını ses için yapıyor ama saniyede 16,000 kez!
Bu yaklaşımın güzelliği şu: Model, sesin doğal akışını öğreniyor. Bir “a” sesinden sonra hangi frekansların gelmesi gerektiğini, bir kelimenin sonunda sesin nasıl düşmesi gerektiğini falan…
Dilated Convolution - Geniş Görüş Açısı
Şimdi gelelim WaveNet’in en dahice kısmına: Dilated Convolution (ya da causal dilated convolution).
Normal convolution’da ne olur? 3 elemanlık bir kernel’ınız var diyelim, sadece 3 komşu değere bakarsınız. 10 katman koyarsanız ancak 30 elemanlık bir alan görebilirsiniz. Ama ses için bu yetmez! Bir kelimenin başını sonunu bağlamak için binlerce sample’a bakmanız lazım.
Dilated convolution, katmanlar ilerledikçe örnekler arasındaki adımı büyütür. Dilation iki katına çıkarıldığında receptive field üstel biçimde genişleyebilir; on katmanlık tek bir yığında 1024 örneğe uzanan bağlam kurulabilir. Hesaplama maliyeti tam convolution’a göre daha kontrollüdür, ancak “aynı maliyet” ifadesi kanal sayısı ve uygulamadan bağımsız bir garanti değildir.
Bu niye önemli? Çünkü ses, uzun menzilli bağımlılıklar içeriyor. Bir kelimenin başındaki ses, sonundaki sesi etkiliyor. Hatta cümlenin başındaki ton, sonundaki tonu belirliyor.
Gated Activation Units - Akıllı Filtreler
WaveNet’in bir başka zekice yanı da gated activation kullanması. Her katmanda iki paralel convolution var:
- Biri “filter” görevi görüyor (tanh activation)
- Diğeri “gate” görevi görüyor (sigmoid activation)
Sonuç = tanh(filter) × sigmoid(gate)
Bu ne işe yarıyor? Model, hangi bilginin geçmesi gerektiğine karar verebiliyor. Mesela yüksek frekanslı gürültüyü gate kapatarak engelleyebiliyor, önemli sesleri gate açarak geçirebiliyor.
Conditioning - Kontrollü Ses Üretimi
WaveNet’in en güzel yanlarından biri de “conditioning” yapabilmesi. Yani sadece rastgele ses üretmiyor, istediğiniz özelliklerde ses üretebiliyor:
- Global conditioning: “Kadın sesi üret” ya da “İngiliz aksanıyla konuş” gibi
- Local conditioning: Her time step için farklı bilgi - mesela metin bilgisi
Text-to-speech için local conditioning kullanılıyor. Model hem önceki seslere hem de “şu anda hangi harfi söylüyorum” bilgisine bakıyor.
Softmax Output - 256 Seviye Yeterli
İlginç bir detay: WaveNet ses değerlerini continuous olarak üretmiyor, 256 seviyeli bir classification problemi olarak ele alıyor (8-bit ses gibi). Neden? Çünkü softmax distribution’dan sampling yapmak, model’e çeşitlilik katıyor. Her seferinde biraz farklı, daha doğal ses üretiyor.
Pratik Kullanım ve Zorluklar
WaveNet’in başlıca sınırlamaları şunlardır:
Yavaş üretim: Autoregressive olduğu için paralelize edilemiyor. 1 saniye ses üretmek dakikalar alabiliyor. (Sonradan Parallel WaveNet gibi çözümler geliştirildi)
Yüksek bellek kullanımı: Tüm dilated convolution katmanları ve skip connection’lar epey bellek yiyor.
Eğitim maliyeti: Milyonlarca ses örneği ve günlerce eğitim gerekiyor.
Modern Uygulamalar
Bugün WaveNet’in mirasını birçok yerde görüyorsunuz:
- Google Assistant ve Google Cloud TTS altyapısında
- WaveGlow, WaveRNN gibi türev modellerde
- Müzik üretimi (NSynth, SampleRNN)
- Ses restoration ve enhancement uygulamalarında
Sonuç
WaveNet, ham ses olasılığını doğrudan modelleme ve dilated causal convolution yaklaşımıyla sonraki ses üretim çalışmalarını etkiledi. Bugünkü TTS sistemlerinin tamamı aynı mimariyi kullanmaz; paralel vocoder’lar, diffusion ve flow tabanlı modeller farklı kalite-gecikme dengeleri sunar. WaveNet’i güncel ürün seçimi olarak değil, bu tasarım alanının önemli bir mimari basamağı olarak değerlendirmek daha doğrudur.