App DSP Prak 6 Ver 01
App DSP Prak 6 Ver 01
Modul 6
Ekstraksi Pitch dan Formant pada Sinyal Wicara
I. TUJUAN
- Mahasiswa mampu mengestimasi nilai fundamental frekuensi pada sinyal wicara
- Mahasiswa mampu mengestimasi nilai formant dari sinyal wicara
Sebuah cara yang layak dipakai dalam mengestimasi frekuensi fundamental untuk
durasi yang panjang adalah metode cepstrum yang mana merupakan sebuah analisis
Fourier pada nilai logarithmic amplitude spectrum dari sebuah sinyal. Jika log amplitude
spectrum tersusun dari berbagai jarak frekuensi harmonisa-harmonisa sinyal, selanjutnya
analisis Fourier pada spectrum akan menunjukkan sebuah puncak yang berkaitan dengan
jarak diantara harmonisa tersebut, yang dalam hal ini adalah nilai frequensi fundamental
dari sinyal.
Disebut cepstrum darena diperoleh dari kandungan nilai yang berada di dalam
spectrum dengan proses lebih dalam lagi. Sumbu x pada cepstrum memiliki satuan
quefrency, dan puncak yang muncul pada cepstrum (yang berkaitan dengan periodisitas
di dalam spectrum) disebut rahmonics.
Untuk dapat melakukan estimasi pada dnilai frekuensi fundamental dari cepstrum kita
harus mencari sebuah puncak yang muncul di dalam daerah quefrency berkaitan dengan
tipe frekuensi fundamental pada sinyal wicara.
Satu kelemahan metode ini adalah proses komputasinya sangat panjang. Itulah
fenomena alam, kita selalu mencoba memahami ciptaan Alloh, tetapi selalu saja ada yang
masih belum bisa kita mengerti….. (smile)
Metode yang cukup banyak dipakai pada estiamsi formant frequency didasarkan pada
pemodelan signal wicara yang dibangkitkan oleh sekumpulan sumber frekuensi dan filter
seperti pada diagram blok pada Gambar 7.
Tipe analisis ini disebut source-filter separation, dan di dalam kasus estimasi formant
frequencykit ahanya berkonsentrasi pada pemodelan system dan frekuensi resonansi yang
muncul. Untuk mendapatkan kecocokan yang terbaik pada sistem, kita system
menggunakan sebuah metode analisis yang disebut Linear Prediction. Metode ini
memodelkan sinyal denagn kondisi seperti dibangkitkan dalam kondisi energi yang
minimum dan selanjutnya dilewatkan pada sebuah filter IIR.
Gambar 8. Satu frame sinyal wicara ‘a’ dengan frekuensi samplingnya telah dirubah menjadi 10000.
Gambar 9. Spectrum sinyal wicara ‘a’ dengan frekuensi samplingnya telah dirubah menjadi 10000.
Gambar 10. Output Linear Prediction Filter dari spectrum sinyal wicara ‘a’.
Untuk mendapatkan formant frequencies dari filter, kita perlu untuk mendapatkan
lokasi-lokasi terjadinya resonansi yang dihasilkan oleh filter. Ini melibatkan perlakukan
koefisien filter sebagai sebuah polynomial dan menyelesaikannya akar-akar polynomial
tersebut. Anda perhatikan bagian kode program dibawah ini, yang merupakan langkah
untuk mengestimasi formant frequencies dari output LP filter:
Dari pencarian formant frekuensi yang telah dilakukan dengan langkah ini hasilnya
adalah:
Formant 1 Frequency 802.3
Formant 2 Frequency 1162.6
Formant 3 Frequency 2617.0
Formant 4 Frequency 3432.1
Formant 5 Frequency 4097.0
Software
Sound Card Matlab
PC Multimedia
Speaker
PC anda harus dilengkapi dengan peralatan multimedia seperti sound card, speaker aktif
dan microphone. Untuk microphone dan speaker active bisa juga digantikan dengan head
set lengkap. Sebelum anda memulai praktikum, sebaiknya anda tes dulu, apakah seluruh
perangkat multimedia anda sudah terintegrasi dengan PC.
3. Ambil satu frame sample dari sinyal a.wav yang sudah anda panggil. Dalam hal ini
anda bisa menentukan panjang frame 0.02*fs. Jika frekuensi sampling fs = 16000,
berarti satu frame adalah sebesar frame = 0.02*16000 = 320sampel.
% plot waveform 1 frame
figure(2)
frame_1=0.02*fs;
xframe=x(5*frame_1:6*frame_1);
puncak tersebut. Tentu saja nilainya dalam satuan waktu, bisa mili detik atau yang
lain.
ms2=fs/500; % maximum speech Fx at 500Hz
ms20=fs/50; % minimum speech Fx at 50Hz
% just look at region corresponding to positive delays
r=r(ms20+1:2*ms20+1);
[rmax,tx]=max(r(ms2:ms20));
6. Ulangi langkah anda untuk jenis file wicara yang lain misalnya file_u.wav, dsb
6. Anda bisa mengulangi percobaan ini untuk jenis vokal atau file wicara yang lain.
3. Lanjutkan langkah anda denga menyusun satu frame sinyal dan tampilkan hasilnya.
% plot waveform
frame_1=0.02*fs;
xframe=x(5*frame_1:6*frame_1);
t=(0:length(xframe)-1)/fs; % times of sampling instants
plot(t,xframe);
legend('1 Frame Waveform');
ylabel('Magnitude')
xlabel('Time')
4. Lakukan pengamatan spectrum sinyal yang sudah anda susun dalam bentuk 1 frame.
Jangan lupa anda menggunakan fungsi window hamming untuk pekerjaan ini.
% do fourier transform of windowed signal
Y=fft(xframe.*hamming(length(xframe)));
%plot spectrum of bottom 8000Hz
hz5000=5000*length(Y)/fs;
f=(0:hz5000)*fs/length(Y);
plot(f,20*log10(abs(Y(1:length(f)))+eps));
legend('Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
plot(f,20*log10(abs(h)+eps));
legend('LP Filter');
xlabel('Frequency (Hz)');
ylabel('Gain (dB)');
6. Lakukan pencarian akar-akar polinomial yang ada, dan lanjutkan dengan proses
pencarian nilai-nilai puncak pada envelope yang sudah dihasilkan. Dengan langkah ini
anda akan mendapatkan nilai Formant1, Formant 2, Formant 3 dan Formant 4.
% find frequencies by root-solving
r=roots(a); % find roots of polynomial a
r=r(imag(r)>0.01); % only look for roots >0 up to fs/2
ffreq=sort(atan2(imag(r),real(r))*fs/(2*pi));
% convert to Hz and sort
for i=1:length(ffreq)
fprintf('Formant %d Frequency %.1f\n',i,ffreq(i));
end
6. Ulangi langkah anda untuk jenis file wicara yang lain misalnya file_u.wav, dsb
Pertemuan 2
4.3. Pencarian Nilai Frekuensi Pitch dan Formant Pada Keseluruhan Sinyal
Pada percobaan ini anda akan melakukan proses analisis sinyal wicara pada keseluruhan
file. Langkah yang harus anda lakukan adalah seperi berikut.
1. Susun sebuah bok diagram standar pengolahan sinyal wicara. Untuk itu anda harus
mengkonsultasikan langkah ini kepada dosen pengampu praktikum. Jika blok diagram
anda sudah betul anda lanjutkan percobaan.
2. Lakukan perekaman sebuah kata, misalnya ’ada’. Dan simpan hasilnya di dalam file
ada.wav. Anda bisa menggunakan wavesurfer atau Matlab untuk proses ini.
3. Buat program pemanggilan sinyal wicara, misalnya ada.wav.
4. Lakukan prose resampling sehingga frekuensi sampling yang anda gunakan adalah fs =
10000 Hz.
5. Lakukan pembentukan frame sinyal wicara, dengan mengacu satu frame adalah 20 ms.
6. Buat program pencarian nilai pitch pada setiap frame, gunakan metode auto korelasi
7. Buat program pencarian nilai frekuensi formant.
8. Hasil yang anda peroleh dari semua frame harus disimpan ke dalam file text.
9. Lakukan beberapa percobaan ulang untuk kata yang lain, misalnya ‘aku’, ‘saya’, dsb.
5. Analisa
Anda telah melakukan serangkaian langkah percobaan yang cukup penting dalam
analisis sinyal wicara, dimana anda sudah bias mendapatkan fitur yang penting, yaitu
formant. Dengan kemampuan ini anda sudah bisa membedakan suara anda dengan suara
dari teman anda, biarpun mengucapkan kata yang sama. Coba anda lakukan perbandingan
nilai formant untuk ucapan ’i’ yang berasal dari suara anda dan teman disamping anda.
Jelaskan fenomena ini dengan mengacu teori pengolahan informasi wicara.