Ses İşlemede Spektrumdan Cepstruma
Spektrum, log spektrum, cepstrum ve MFCC arasındaki matematiksel ilişkiyi açıklar. Homomorfik işleme, quefrency alanı ve konuşma özellik çıkarımındaki kullanım sınırları ele alınır.
Bir sinyalin cepstrumu, spektrumun tersi değildir. Cepstral gösterim, spektrumun logaritmik biçimine ikinci bir dönüşüm uygulanmasıyla elde edilir. Bu ayrım, konuşma işleme terminolojisinde sık karşılaşılan kavramsal karışıklığı gidermek için önemlidir. Spektrum, sinyal enerjisinin frekanslara nasıl dağıldığını gösterir. Cepstrum ise spektrumdaki yavaş ve hızlı değişimleri farklı bir eksende incelemeye imkan verir.
Cepstrumla ilk karşılaşmam, açık kaynak konuşma tanıma sistemlerinin kaynak kodlarını incelerken oldu. CMU PocketSphinx gibi daha eski sistemlerden Kaldi'ye, Vosk'a ve Whisper benzeri yeni nesil yapılara uzanan bu incelemeler, konuşma işleme zincirindeki kavramların yalnızca teorik tanımlarını değil, gerçek uygulamalardaki karşılıklarını da görmemi sağladı. Kendi ses işleme kütüphanemi geliştirirken spafe ve librosa gibi Python kütüphanelerinin özellik çıkarma yaklaşımlarından da yararlandım.
Yüksek lisans çalışmalarım sırasında adli bilişimde ses ve görüntü işleme alanına yoğunlaştım. Bu alanda araştırmalar yaptım, yazılımlar geliştirdim ve edindiğim deneyimi akademik bir kitap çalışmasına aktardım. Spektrum, kepstrum, Mel ölçeği ve doğrusal öngörü gibi kavramların birbirleriyle ilişkisi, bu süreçte üzerinde en fazla durduğum konulardan biri oldu.
Spektrumdan cepstruma geçiş
Bir konuşma sinyali, kısa zaman aralıklarında ses kaynağı ile ses yolunun birleşimi olarak modellenebilir. Basitleştirilmiş kaynak-filtre modelinde ses telleri bir uyarım üretir. Ağız ve boğaz boşluklarından oluşan ses yolu ise bu uyarımı süzer.
Zaman alanındaki ilişki şu biçimde gösterilebilir:
x[n] = e[n] X h[n]Burada "e[n]" uyarım sinyalini, "h[n]" ses yolunun dürtü yanıtını ve "x[n]" gözlenen konuşma sinyalini gösterir. "X" işareti katlanım işlemini ifade eder.
Fourier dönüşümünden sonra katlanım, frekans alanında çarpıma dönüşür:
X[k] = E[k] H[k]Büyüklük spektrumunun logaritması alındığında çarpımsal ilişki toplamsal hale gelir:
log |X[k]| = log |E[k]| + log |H[k]|Cepstral analizin temel mühendislik değeri burada ortaya çıkar. Kaynak ile filtre bileşenleri zaman alanında ve doğrusal spektrumda birbirine karışmış durumdadır. Logaritmik spektrum üzerinde ise toplamsal olarak temsil edilirler. Logaritmik spektruma ters Fourier dönüşümü uygulandığında bileşenler, değişim hızlarına göre cepstral eksenin farklı bölgelerinde yoğunlaşabilir.
Gerçek cepstrum yaygın bir tanımla şu şekilde yazılır:
c[n] = IDFT{log |DFT{x[n]}|}Bazı tanımlarda büyüklük yerine güç spektrumu kullanılır:
c[n] = IDFT{log |X[k]|²}Bu iki ifade aynı ölçeklemeyi üretmez. Bu nedenle bir yazılım kütüphanesinde cepstrum veya güç cepstrumu hesaplanırken kullanılan tanım açıkça belirtilmelidir.
Cepstral eksenin birimi zaman gibi görünse de doğrudan fiziksel gecikme ekseni değildir. Bu eksen için literatürde "quefrency" terimi kullanılır. Örnekleme frekansı "fs" ise "n" numaralı cepstral örneğin karşılığı yaklaşık olarak şöyledir:
q_n = n / f_sPeriyodik bir spektral yapı, cepstrumda bu periyoda karşılık gelen quefrency bölgesinde tepe oluşturabilir. Temel frekansı "F0" olan periyodik bir konuşma sinyali için beklenen tepe yaklaşık olarak "1 / F0" çevresindedir. Bu ilişki, cepstrumun perde ve temel frekans tahmininde kullanılmasını sağlar.
Cepstral tepenin bulunması her koşulda güvenilir bir "F0" tahmini üretmez. Gürültü, harmoniklerin zayıflaması, çoklu konuşmacı, kısa çerçeve seçimi ve perdesiz sesler sonucu etkiler. Cepstral perde analizi, belirli bir arama aralığı ve seslilik kararıyla birlikte uygulanmalıdır.
Terminolojinin ortaya çıkışı
Cepstrum terimi, Bogert, Healy ve Tukey'nin 1963 yılında yayımlanan çalışmasında kullanıldı. Çalışmanın odağı konuşma tanımadan daha genişti. Amaç, zaman serilerindeki yankıları ve periyodik spektral yapıları incelemekti.
"Cepstrum" sözcüğü, "spectrum" kelimesinin ilk bölümünün değiştirilmesiyle oluşturulmuş bir kelime oyunudur. Aynı yaklaşım, ilgili başka terimlere de uygulanmıştır:
- "spectrum" yerine "cepstrum"
- "frequency" yerine "quefrency"
- "harmonics" yerine "rahmonics"
- "filtering" yerine "liftering"
- "phase" yerine "saphe"
Bu terimlerin tamamı modern literatürde aynı yaygınlıkta kullanılmaz. "Cepstrum", "quefrency" ve "liftering" halen teknik metinlerde düzenli olarak görülür. "Rahmonics" daha sınırlı bir kullanıma sahiptir. "Saphe" ve "saphe cracking" ise çoğunlukla cepstrumun tarihçesini anlatan kaynaklarda veya özgün terminolojiye bağlı metinlerde geçer.
"Liftering" terimi, cepstral alanda yapılan süzme işlemini ifade eder. Adı, "filtering" kelimesindeki harflerin değiştirilmesiyle türetilmiştir. Düşük quefrency bileşenlerini koruyan bir lifter, spektral zarfı belirginleştirebilir. Yüksek quefrency bileşenlerini koruyan bir işlem ise harmonik yapıyı ve hızlı spektral değişimleri öne çıkarabilir.
Cepstral alandaki bu ayrım ideal değildir. Kaynak ve filtre bileşenleri her sinyalde kesin sınırlarla ayrılmaz. Düşük ve yüksek quefrency bölgeleri arasında örtüşme olabilir. Liftering, fiziksel bileşenleri kusursuz biçimde ayıran bir yöntem değil, belirli değişim hızlarını seçen bir cepstral süzme işlemidir.
Cepstrum türleri
Cepstrum tek bir matematiksel gösterimi ifade etmez. Kullanılan spektral bilgiye ve dönüşüm biçimine göre farklı cepstrum türleri bulunur.
Gerçek cepstrum, büyüklük spektrumunun logaritmasını kullanır:
c_r[n] = IDFT{log |X[k]|}Faz bilgisi hesaba katılmadığı için gerçek cepstrumdan özgün sinyal her durumda geri üretilemez. Bu gösterim spektral zarf, yankı ve periyodiklik analizi için uygundur.
Güç cepstrumu, çoğunlukla ters dönüşüm çıktısının büyüklüğünün karesiyle veya log güç spektrumunun dönüşümüyle tanımlanır. Kaynaklar ve kütüphaneler arasında tanım farkları görülebilir. Aynı ad altında farklı ölçeklemeler kullanılabildiği için sonuçlar doğrudan karşılaştırılmadan önce uygulama ayrıntıları incelenmelidir.
Karmaşık cepstrum, logaritmik spektrumun büyüklük ve faz bilgisini birlikte ele alır:
c_c[n] = IDFT{log X[k]}Karmaşık logaritmanın hesaplanabilmesi için fazın açılması gerekir. Sarılı faz doğrudan kullanılırsa süreksizlikler oluşur. Faz açma işlemi, ardışık faz değerleri arasındaki "2π" sıçramalarını düzeltmeyi amaçlar. Bu işlem hatalı yapıldığında karmaşık cepstrum da hatalı olur.
Karmaşık cepstrum, uygun koşullar altında homomorfik sistem çözümlemesi ve minimum fazlı bileşenlerin incelenmesi için kullanılabilir. Gerçek cepstruma göre daha fazla bilgi taşır, ancak sayısal olarak daha hassastır.
Konuşma özelliklerindeki yeri
Konuşma tanıma sistemlerinde cepstral gösterimin en bilinen kullanımı Mel frekans kepstrum katsayılarıdır. MFCC işlem hattında konuşma sinyali önce kısa çerçevelere ayrılır. Her çerçevenin spektrumu hesaplanır. Spektral enerji Mel ölçeğine göre yerleştirilen filtre bankalarından geçirilir. Filtre enerjilerinin logaritması alındıktan sonra ayrık kosinüs dönüşümü uygulanır.
Basitleştirilmiş MFCC hesabı şu şekilde gösterilebilir:
E_m = Σ_k |X[k]|² H_m[k]
L_m = log(E_m + ε)c_r = Σ_m L_m cos[πr(m + 1/2) / M]
"H_m[k]", "m" numaralı Mel filtresini gösterir. "M" filtre sayısıdır. "c_r" ise "r" numaralı MFCC katsayısıdır.
MFCC, gerçek cepstrumun doğrudan hesaplanmış biçimi değildir. Fourier spektrumunun tamamı yerine Mel filtre bankasının logaritmik enerji değerleri kullanılır. Ardından ters Fourier dönüşümü değil, çoğunlukla ikinci tür ayrık kosinüs dönüşümü uygulanır. Yöntemin cepstral olarak adlandırılması, logaritmik spektral zarfın düşük boyutlu kosinüs bileşenleriyle temsil edilmesine dayanır.
Doğrusal öngörü kepstrum katsayıları, doğrusal öngörü modelinden elde edilen katsayıları cepstral alana taşır. LPCC, konuşma üretimini tüm kutuplu bir filtre modeliyle temsil eden doğrusal öngörü yaklaşımıyla bağlantılıdır. MFCC algısal frekans ölçeklemesine dayanırken LPCC parametrik bir ses yolu modelinden türetilir.
Bu iki özellik türü aynı bilgiyi üretmez. Gürültü, kanal etkisi, örnekleme frekansı ve konuşmacı özellikleri karşısındaki davranışları farklıdır. Hangi temsilin daha uygun olduğu akustik modelin türüne, eğitim verisine ve uygulama ortamına bağlıdır.
Cepstral katsayılar düşük boyutlu ve işlenebilir bir özellik vektörü sağlar. Yine de sıkıştırma sırasında bilgi kaybı oluşur. Faz bilgisi, ince harmonik ayrıntılar ve yüksek sıralı spektral değişimler çoğu MFCC yapılandırmasında korunmaz. Bu kayıp klasik konuşma tanıma sistemlerinde yararlı olabilir. Sistem, fonetik sınıflandırmayla doğrudan ilişkili olmayan ayrıntılara daha az duyarlı hale gelir.
Yeni nesil konuşma modelleri cepstral katsayıları kullanmak zorunda değildir. Bazı sistemler log-Mel spektrogramıyla, bazıları ise doğrudan dalga biçimiyle çalışır. Bu değişim, cepstrumun geçersiz hale geldiğini göstermez. Modelin özellik öğrenme kapasitesi arttıkça, elle tasarlanmış sıkıştırma adımlarının bir kısmı sinir ağına bırakılmıştır.
Kaynak kodundan kavrama
Cepstral işlemleri yalnızca formüller üzerinden incelemek, uygulamadaki birçok ayrıntıyı görünmez bırakır. Çerçeve uzunluğu, pencere fonksiyonu, Fourier dönüşümü boyutu, spektrum normalizasyonu, logaritma tabanı ve sıfır enerji için kullanılan alt sınır sonucu değiştirir.
PocketSphinx, Kaldi, Vosk ve benzeri projelerin kaynak kodları, teorik özellik çıkarım zincirlerinin üretim sistemlerinde nasıl uygulandığını gösterir. Bu sistemlerde MFCC hesabı tek başına ele alınmaz. Örnekleme, ön vurgu, çerçeveleme, enerji hesabı, kepstral ortalama normalizasyonu ve zaman türevleri aynı ön işleme zincirinin parçalarıdır.
spafe ve librosa gibi kütüphaneler deneysel çalışmalar için erişilebilir uygulamalar sunar. Ancak iki kütüphanede aynı adla çağrılan özellik çıkarıcıların varsayılan parametreleri farklı olabilir. Filtre bankası tanımı, DCT normalizasyonu, ilk katsayının kullanımı ve enerji değerinin vektöre eklenmesi gibi ayrıntılar sonucu etkiler.
Bir model belirli bir MFCC yapılandırmasıyla eğitildiyse üretim aşamasında aynı işlem sırası korunmalıdır. Küçük bir pencereleme veya normalizasyon farkı, özellik dağılımını değiştirir. Akustik model matematiksel olarak geçerli bir vektör alsa bile eğitim sırasında gördüğü dağılımdan uzaklaşabilir.
Kendi ses işleme kütüphanemi geliştirirken bu ayrıntılar, cepstral gösterimin yalnızca birkaç formülden oluşmadığını açık biçimde gösterdi. Uygulamanın güvenilirliği, dönüşümlerin doğru sıralanmasına ve sayısal tercihlerin tutarlı biçimde korunmasına bağlıdır. Akademik çalışmalarımda edindiğim kuramsal altyapı ile açık kaynak projelerin kaynak kodlarında gördüğüm mühendislik kararları bu noktada birbirini tamamladı.
Terminolojinin mühendislik karşılığı
Cepstrum terminolojisi ilk bakışta bilimsel bir kelime oyunu gibi görünür. Kavramların kalıcı olmasını sağlayan etken ise isimlerin ilgi çekiciliği değil, temsil ettikleri işlemlerin kullanışlılığıdır. Logaritmik spektrum, çarpımsal bileşenleri toplamsal hale getirir. İkinci dönüşüm, spektral zarf ile daha hızlı spektral değişimleri farklı quefrency bölgelerine taşır. Liftering ise bu bölgelerin seçilmesini sağlar.
Bu çerçeve konuşma tanıma, ses modelleme, temel frekans tahmini, yankı analizi ve adli ses inceleme çalışmalarında farklı biçimlerde kullanılabilir. Her uygulama aynı cepstrum tanımını veya aynı katsayı kümesini kullanmaz. Yöntemin adı tek başına yeterli teknik açıklama sağlamaz. Dönüşümün türü, parametreleri ve koruduğu bilgi açıkça belirtilmelidir.
Cepstrumla spectrum arasındaki ilişki de bu nedenle bir terslik ilişkisi olarak yorumlanmamalıdır. Cepstrum, spektrumdan türetilen başka bir gösterim uzayıdır. Frekans eksenindeki yapıyı quefrency ekseninde yeniden düzenler. Bu değişim, sinyalin farklı bileşenlerini daha doğrudan inceleme olanağı verir.
Cepstral terminolojinin tarihsel yaratıcılığı, matematiksel yöntemin önüne geçmemelidir. Kavramın mühendislikteki değeri, konuşma üretimindeki kaynak ve filtre etkilerini yaklaşık olarak ayrıştırabilmesinden ve yüksek boyutlu spektral bilgiyi işlenebilir özelliklere dönüştürmesinden gelir. Açık kaynak kodları, akademik çalışmalar ve kendi yazılım geliştirme sürecim, bu dönüşümün teorik bir meraktan çok daha fazlası olduğunu gösterdi.
Kaynakça
Bogert, B. P., Healy, M. J. R. ve Tukey, J. W. (1963). The quefrency analysis of time series for echoes: Cepstrum, pseudo-autocovariance, cross-cepstrum and saphe cracking. Proceedings of the Symposium on Time Series Analysis, 209-243.
Oppenheim, A. V. ve Schafer, R. W. (2004). From frequency to quefrency: A history of the cepstrum. IEEE Signal Processing Magazine, 21(5), 95-106. "https://doi.org/10.1109/MSP.2004.1338001" (https://doi.org/10.1109/MSP.2004.1338001)
Rabiner, L. R. ve Schafer, R. W. (1978). Digital Processing of Speech Signals. Englewood Cliffs, NJ: Prentice-Hall.
Quatieri, T. F. (2002). Discrete-Time Speech Signal Processing: Principles and Practice. Upper Saddle River, NJ: Prentice-Hall.
Deller, J. R., Proakis, J. G. ve Hansen, J. H. L. (1993). Discrete-Time Processing of Speech Signals. New York, NY: Macmillan.
Köker, M. A. (2024). Adli Bilişimde Ses ve Görüntü İşleme Teknikleri. İstanbul: Akademik Yayıncılık.
SuperKogito. spafe: Simplified Python Audio Features Extraction. "GitHub" (https://github.com/SuperKogito/spafe)
McFee, B. ve diğerleri. librosa: Python library for audio and music analysis. "GitHub" (https://github.com/librosa/librosa)
Shmyrev, N. V. Vosk Speech Recognition Toolkit. "GitHub" (https://github.com/alphacep/vosk-api)