Otomatik Konuşmacı Tanıma Sistemi

Bu çalışmada,  MATLAB üzerinde bir konuşmacı tanıma sisteminin geliştirilmesi amaçlanmıştır. Ses tanıması, konuşmacı tarafından söylenen sözleri tanımlamak için işitsel sinyallerin analizi işlemidir. Ses tanıma sistemlerinin kullanılması ile insan – bilgisayar iletişimi ve veri girişi açısından, kullanıcının alışkın olduğu en yaygın iletişim aracını, yani doğal konuşma dilini kullanması bilgisayar kullanımını kolaylaştıracaktır[1].

Konuşmacı tanıma, otomatik konuşma dalgaları kullanarak ve bireysel bilgilere dayanarak kimin konuştuğunu tanıma sürecidir. Bu teknik sayesinde örneğin;

  • Sesli arama,
  • Telefonla bankacılık,
  • Telefon alışveriş,
  • Veri tabanı erişimi hizmetleri,
  • Bilgi hizmetleri,
  • Sesli posta,
  • Bilgisayarlara sesli erişim
  • Gizli bilgi alanları için güvenlik kontrolü gibi uzaktan servislere kimlik ve kontrol erişimini doğrulamak için konuşmacının ses kullanılır.

Araştırmada temsili bir konuşmacı tanıma sisteminin geliştirilmesi amaçlanmıştır. Böyle bir konuşmacı tanıma sistemi birçok güvenlik uygulamalarında kullanılabilir. Örneğin kullanıcılar güvenli bir odaya giriş için bir güvenlik kodu söyler ve sistem konuşmacıyı tanır. Sistem ses girdisinin ses karakteristiklerini kontrol ederek otomatik konuşmacı tanıma sağlayacaktır.

Çalışma kapsamında, Illinois üniversitende yapılan bir araştırmadan ve Digital Speech Processing Using Matlab kitabından yararlanılmıştır.

Konuşmacı Tanıma İlkeleri ve Aşamaları

Konuşmacı tanıma “kimlik saptama” ve “doğrulama” olarak iki grupta sınıflandırılabilir. Konuşmacı Kimlik Saptama; alınan sesin hangi kayıtlı konuşmacı tarafından söylendiğinin tespit edilmesidir. Konuşmacı doğrulama; konuşmacının kimlik doğrulama talebinin kabul veya reddedilmesi sürecidir. Kimlik saptama süreci Şekil-1’de, Konuşma doğrulama süreci Şekil-2’de verilmiştir.

Şekil-1 Konuşmacı Kimlik Saptama

Konuşmacı Kimlik Saptama

Şekil-2 Konuşmacı Doğrulama

Konuşmacı Doğrulama

Genellikle konuşmacı tanıma sistemleri iki temel modülü içerir. Bunlar öznitelik çıkarma ve özellik eşleştirmedir. Öznitelik çıkarma; ses sinyalindeki akustik özelliklerin çıkarılmasına öznitelik çıkarma denilir. Özellik eşleştirme; alınan sesin, kayıtlı konuşmacıların özelliklerini karşılaştırılması ve bilinmeyen konuşmacının tanımlanması sürecini içerir. Öznitelik çıkarma modülünün amacı dijital sinyal işleme (DSP) araçlarını kullanarak, konuşma dalga biçimini dönüştürmek ve daha fazla analiz için bir özellik dizisi çıkarmaktır. Bu aşama, sinyal işlemenin başlangıç aşaması olarak ifade edilebilir. Öznitelik çıkarmanın ana hedefi, ses örneğindeki, konuşmacıyı tanımlayan akustik özelliklerden ödün vermeden yüklü miktardaki veriyi özetlemektir. Bu sayede tanıma işlemi kolaylaşır ve daha verimli olur.

MFCC(Mel-Frequency CepstrumCoefficients); konuşma tanıma alanında en çok kullanılan öznitelik çıkarma yöntemlerinden birisidir. Öznitelik çıkarma hem kaydolma hem de saptama aşamasında kullanılır ve aşağıdaki aşamalardan oluşur[1]. Aşamalar Şekil-3’te verilmiştir.

  • Çerçeve Bloklama (Frame Blocking)
  • Pencereleme (Windowing)
  • Fourier Transformasyonu (FFT)
  • Mel-Frekansı saptırması (Mel-Frequency Warping)
  • Kepstrum (Cepstrum)

MFCC Aşamaları

Çerçeve Bloklama aşamasında; sinyaller, genellikle 20 ve 100 milisaniye arasında değişen uzunluklarda çerçevelere bölünürler. Her çerçeve kendisinden bir önceki çerçevenin belli bir kısmını örter. Örtme yönteminin amacı bir çerçeveden diğerine geçişim yumuşak olmasını sağlamaktır. Pencereleme aşamasının amacı, çerçeve başında ve sonundaki süreksizlikleri ortadan kaldırmaktır. Bu aşamada en çok kullanılan pencereleme fonksiyonlarından birisi Hamming fonksiyonudur. FFT Dönüşümü aşamasında amaç her çerçevede Hızlı Fourier Dönüşümü almaktır. Bu dönüşüm Ayrık Fourier Dönüşümünün hızlı bir şeklidir ve tanım kümesini zaman uzayından frekans uzayına geçirir.

Normal bir insan kulağı frekansları doğrusal olmayan bir şekilde algılar. Araştırmalar göstermiştir ki, ölçüler, 1 kHz e kadar doğrusal, daha yüksek değerlerde ise logaritmiktir. İnsan kulağının frekans yanıtını karakterize eden bu ölçüye Mel-Ölçüsü (Melodi Ölçüsü) de denir. Konuşmacı tanımanın bu aşaması bant geçiren süzgeç (band pass filter) olarak kullanılır. Öznitelik çıkarmanın son aşaması olarak, her çerçeve ters fourier transformasyona uğratılır ve frekans uzayından tekrar zaman uzayına döndürülür. Bu işlemin sonucu olarak Mel-Frekansı Kepstral Katsayıları ( MFCC : Mel – Frequency Cepstral Coefficients ) elde edilir.

Konuşmacı tanıma sistemlerinde genel olarak iki aşamalı bir sistemden geçer. Birincisi, kayıt veya eğitim aşaması olarak ifade edilir. Eğitim aşamasında, her kayıtlı konuşmacı, sistemde bir referans modeli oluşturmalı yani eğitmelidir. Konuşmacı sisteme konuşma örneklerini sunmak zorundadır. Konuşmacıya özgü bir eşik hesaplanır. İkincisi, test aşamasıdır. Bu aşamada alınan konuşma, daha önceden alınmış ve referans modeli çıkarılmış kayıtlarla eşleştirilir ve karar verilir.

Uygulama

Uygulama kapsamında MATLAB üzerinde bir otomatik konuşma sistemi tasarlanmış ve test edilmiştir. Uygulama 2 ana, 4 yardımcı olmak üzere 6 fonksiyondan oluşmaktadır.

Ana fonksiyonlar: Train() ve Test() fonksiyonlarıdır.


Train Kodu:
function code = train(dizinYol, n)
% Konuşma Tanıma: Eğitim Aşaması
% Girdi:
% dizinYol : Ses dosyalarını içeren yol adresi
% n : Toplam konuşmacı sayısı
%
% Çıktı:
% code : Eğitilmiş VQ codebook’lar,
% code(Brislin) for i-th speaker
%
% Not:
% Dizin yolundaki ses dosyaları:
% s1.wav, s2.wav, …, sn.wav olarak tutulur
% Örnek:
% >> code = train(‘D:\konusmaci_tanima\data\train\’, 9);

k = 16; % İstenen centroids sayısı

for i = 1:n % her konuşmacı için VQ codebook eğit döngüsü
file = sprintf(‘%ss%d.wav’, dizinYol, i);
disp(file);

[s, fs] = wavread(file);

v = mfcc(s, fs); % MFCC’sini hesapla

code(Brislin) = vqlbg(v, k); % VQ codebook ata.
end

Test Kodu:
function test(testYol, n, code)
% Konuşma Tanıma: Test Aşaması
%
% Girdi:
% testYol : test dosyalarının olduğu dizin adresi
% n : test kişi sayısı
% code : eğitilmiş konuşmacı codebooks’lar
%
% Not:
% Test ses dosyaları şu şekildedir:
% s1.wav, s2.wav, …, sn.wav
%
% Örnek:
% >> test(‘D:\konusmaci_tanima\data\test\’, 8, code);

for k = 1:n % Her test konuşmacısının ses dosyasını oku
file = sprintf(‘%ss%d.wav’, testYol, k);

[s, fs]

= wavread(file);

v = mfcc(s, fs); % Hesapla MFCC

distmin = inf;
k1 = 0;

for l = 1:length(code) % Karşılaştır
d = disteu(v, code(Brislin));
dist = sum(min(d,[],2)) / size(d,1);

if dist < distmin
distmin = dist;
k1 = l;
end
end

msg = sprintf(‘Test Kullanıcısı Konuşmacı %d , Sistemdeki Konuşmacı %d ile eşleşti’, k, k1);
disp(msg);
end

Yardımcı fonksiyonlar: Disteu(), Melfb(), Mfcc() ve Vqlbg() fonksiyonlarıdır.

Kaynaklar:

[1] Ses Tanıma. http://www.mcu-turkey.com/ses-tanima-3/ (Son erişim:10.05.2015)

[2] DSP Mini-Project: An Automatic Speaker Recognition System, http://minhdo.ece.illinois.edu/teaching/speaker_recognition/speaker_recognition.html  (Son erişim:10.05.2015)

[3] Rabiner, L. R., & Schafer, R. W. (2007). Introduction to digital speech processing. Foundations and 

 [4] Brislin, R. W. (1970). Back-translation for cross-cultural research. Journal of cross-cultural psychology, 1(3), 185-216.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir