MFCC (Mel-Frequency Cepstral Coefficients) ve GMM (Gaussian Mixture Model) Teknikleri

Efecan Güler
3 min readFeb 23, 2023

--

Merhaba!

Bu makalede, ses işleme alanında oldukça önemli olan MFCC (Mel-Frequency Cepstral Coefficients) ve GMM (Gaussian Mixture Model) tekniklerine dair detaylı bir açıklama yapacağız. Ayrıca, Python dilinde MFCC ve GMM kullanarak ses verilerini işlemek için örnek kodlar da vereceğiz.

MFCC Nedir?

MFCC, ses işleme alanında yaygın olarak kullanılan bir özellik çıkarma tekniğidir. İnsan kulağı, sinyallerin frekans bileşenlerine göre duyarlıdır ve bu nedenle, MFCC, insan işitme sisteminin frekans duyarlılığına benzer bir özellik çıkarma tekniğidir. MFCC, ses verilerini frekans bileşenlerine ayırır ve daha sonra bunları kırpılmış, ölçeklendirilmiş ve sıkıştırılmış verilere dönüştürür.

MFCC özellikleri, özellikle konuşma tanıma, konuşma sentezi ve müzik sınıflandırma gibi uygulamalarda kullanılır. MFCC, özellikle konuşma tanıma uygulamalarında, sinyal işleme sürecinin en önemli aşamalarından biridir.

MFCC Özellik Çıkarma Adımları

MFCC özellik çıkarma adımları şu şekildedir:

  1. Sinyal örnekleme: Sinyalin örnekleme frekansı belirlenir ve sinyal bu frekansta örneklenir.
  2. Hamming penceresi: Sinyal, her bir örneği birbirinden ayrılmış kısa sürelerle işlenir. Bu işlem, “hamming penceresi” olarak adlandırılır.
  3. FFT: Hamming penceresi boyunca sinyal işlendikten sonra, FFT (Fast Fourier Transform) uygulanır ve sinyal frekans bileşenlerine ayrılır.
  4. Mel Filtre Bankası: Frekans bileşenleri, Mel ölçeğinde ölçeklendirilir. Mel ölçeği, insan işitme sisteminin duyarlılığına benzer bir şekilde ölçeklendirilmiştir.
  5. Logaritmik dönüşüm: Mel filtre bankası çıktısı üzerinde logaritmik dönüşüm uygulanır.
  6. Cepstral katsayıları: Logaritmik dönüşüm sonrası çıktı, cepstral katsayıları olarak adlandırılır.

MFCC Özellik Çıkarma Örneği

Python dilinde, “librosa” kütüphanesi kullanılarak MFCC özellikleri kolayca çıkarılabilir. Örnek kodlar şu şekildedir:

import librosa

# Ses dosyasını yükle
audio_path = 'audio_file.wav'
y, sr = librosa.load(audio_path)

# MFCC özellikleri çıkar
mfcc = librosa.feature.mfcc(y=y, sr=sr)

# MFCC özellikleri görselleştir
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
librosa.display.specshow(mfcc, x_axis='time')
plt.colorbar()
plt.title('MFCC Özellikleri')
plt.tight_layout()
plt.show()

Bu kod, öncelikle “librosa” kütüphanesi kullanılarak bir ses dosyası yükler. Daha sonra, MFCC özellikleri, “librosa.feature.mfcc” fonksiyonu kullanılarak çıkarılır ve görselleştirilir.

GMM Nedir?

GMM, bir sınıflandırma ve kümeleme tekniği olarak kullanılan bir istatistiksel modeldir. GMM, bir veri kümesinin altındaki olası Gauss dağılımı sayısını tahmin eder ve verileri bu Gauss dağılımlarının bileşimi olarak modellemeye çalışır. GMM, birçok uygulama alanında kullanılır, özellikle görüntü işleme ve ses işleme gibi alanlarda. Ses işleme alanında, GMM, konuşmacı tanıma, konuşma sınıflandırma ve konuşma sentezi gibi uygulamalarda kullanılır.

GMM Modelleme Adımları

GMM modelleme adımları şu şekildedir:
1. Veri örnekleme: Veri örnekleri toplanır.
2. Model inşası: GMM modeli inşa edilir. Bu adımda, verilerin Gauss dağılımları ile modellenmesi için gereken parametreler (ortalama, varyans, ağırlıklar vb.) tahmin edilir.
3. Veri sınıflandırma: Veriler, GMM modelindeki Gauss dağılımlarına sınıflandırılır. Her bir veri örneği, modeldeki Gauss dağılımlarından birine en yakın olan Gauss dağılımına atanır.
4. Sonuçların yorumlanması: Verilerin sınıflandırılması sonucunda elde edilen sonuçlar yorumlanır. Bu sonuçlar, örneğin konuşmacı kimliği gibi belirli bir sorunun çözülmesine yönelik olabilir.

GMM Modelleme Örneği

from scipy.io.wavfile import read
from sklearn.mixture import GaussianMixture
import numpy as np

# Ses dosyasını okuma
rate, data = read("ses_dosyasi.wav")

# Veri kümesi oluşturma
n_samples = len(data)
X = np.reshape(data, (n_samples, 1))

# GMM modeli oluşturma ve eğitme
gmm = GaussianMixture(n_components=3, covariance_type='full').fit(X)

# Eğitilmiş modeli kullanarak tahmin yapma
labels = gmm.predict(X)

Yazdığımız kod, bir ses dosyasını okur, bir GMM modeli oluşturur ve eğitir, son olarak da veri kümesinin hangi Gauss dağılım karışımına ait olduğunu tahmin eder. İlk olarak, read() fonksiyonuyla, bir WAV dosyası okunur. Sonra, np.reshape() fonksiyonu kullanılarak, okunan ses dosyası bir veri kümesine dönüştürülür. Bu veri kümesi, bir boyutlu bir dizidir ve her bir veri noktası, ses dosyasının bir örneğidir.

Daha sonra, GaussianMixture() sınıfıyla, n_components=3 ve covariance_type='full' parametreleri belirtilerek bir GMM modeli oluşturulur. n_components parametresi, kullanılacak Gauss dağılımlarının sayısını belirtirken, covariance_type parametresi, kullanılacak ko-variyans matris tipini belirler.

Son olarak, fit() yöntemiyle, veri kümesi eğitilir ve son olarak, predict() yöntemiyle, her bir veri noktasının hangi Gauss dağılım karışımına ait olduğu tahmin edilir. Bu tahminler, belirli bir hoparlörün konuşma özelliklerini modellemek için kullanılabilir.

Sonuç

Bu makalede, ses işleme alanında sıkça kullanılan iki teknik olan MFCC ve GMM hakkında ayrıntılı bilgi verilmiştir. Ayrıca, Python dilinde bu teknikleri nasıl uygulayabileceğinize dair örnek kodlar da verilmiştir. Bu teknikler, örneğin konuşmacı tanıma, konuşma sınıflandırma ve konuşma sentezi gibi uygulamalarda kullanılabilecek çok önemli araçlardır.

--

--