0% found this document useful (0 votes)
70 views

1 Appendices: 1.1 APPENDIX A: Project MATLAB Coding

The document contains MATLAB code for a speaker recognition capstone project. It reads in training and test audio data from 5 speakers, extracts MFCC features, trains Gaussian mixture models (GMMs) on the training data for each speaker, and tests the trained GMMs by comparing test data against each model and reporting the results.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
70 views

1 Appendices: 1.1 APPENDIX A: Project MATLAB Coding

The document contains MATLAB code for a speaker recognition capstone project. It reads in training and test audio data from 5 speakers, extracts MFCC features, trains Gaussian mixture models (GMMs) on the training data for each speaker, and tests the trained GMMs by comparing test data against each model and reporting the results.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

1 APPENDICES

1.1 APPENDIX A: Project MATLAB coding.


%% Speaker Recognition Capstone Project
% Fred M K Anisi
% define all the invariants
No_of_Gaussians=12; %the number of Gaussian Mixtures which will be used in modelling
%no_coeff=[1];
no_coeff=[6:10]; %the i-th MFCC coefficient considered for this experiment
%change this and see if the performance changes
%Reading in the data
%Use wavread from matlab
disp('-------------------------------------------------------------------');
disp('Speaker Recognition Capstone Design Project By Fred');
disp(' 5 speakers, considering only one feature vector');
disp('A simple demonstration of speaker recognition using MFCCs and GMMS');
disp('');
disp('-------------------------------------------------------------------');

%-----------reading in the training data----------------------------------


training_data1=audioread('01_train.wav');
training_data2=audioread('02_train.wav');
training_data3=audioread('03_train.wav');
% training_data4=audioread('04_train.wav');
% training_data5=audioread('05_train.wav');

disp('Completed reading training data (Press any key to continue)');

pause;

%------------reading in the test data-----------------------------------


testing_data1=audioread('01_test.wav');
testing_data2=audioread('02_test.wav');
testing_data3=audioread('03_test.wav');
% testing_data4=audioread('04_test.wav');
% testing_data5=audioread('05_test.wav');
disp('Completed reading test data (Press any key to continue)');
pause;

Fs=8000; %or obtain this from wavread

%-------------feature extraction------------------------------------------
training_features1=melcepst(training_data1,Fs);
training_features2=melcepst(training_data2,Fs);

training_features3=melcepst(training_data3,Fs);
% training_features4=melcepst(training_data4,Fs);
% training_features5=melcepst(training_data5,Fs);
disp('Completed feature extraction for the training data (Press any key to continue)');
pause;
testing_features1=melcepst(testing_data1,Fs);
testing_features2=melcepst(testing_data2,Fs);
testing_features3=melcepst(testing_data3,Fs);
% testing_features4=melcepst(testing_data4,Fs);
% testing_features5=melcepst(testing_data5,Fs);
disp('Completed feature extraction for the testing data (Press any key to continue)');
pause;

%-------------training the input data using GMM-------------------------


%training input data, and creating the models required
disp('Training models with the input data (Press any key to continue)');

[mu_train1,sigma_train1,c_train1]=gmm_estimate(training_features1(:,no_coeff)',No_of_Gaus
sians,20);
disp('Completed Training Speaker 1 model (Press any key to continue)');
pause;

[mu_train2,sigma_train2,c_train2]=gmm_estimate(training_features2(:,no_coeff)',No_of_Gaus
sians,20);
disp('Completed Training Speaker 2 model (Press any key to continue)');

[mu_train3,sigma_train3,c_train3]=gmm_estimate(training_features3(:,no_coeff)',No_of_Gaus
sians,20);
disp('Completed Training Speaker 3 model (Press any key to continue)');
pause;

%
[mu_train4,sigma_train4,c_train4]=gmm_estimate(training_features4(:,no_coeff)',No_of_Gaus
sians,20);
% disp('Completed Training Speaker 4 model (Press any key to continue)');
%
%
%
%
[mu_train1,sigma_train5,c_train5]=gmm_estimate(training_features5(:,no_coeff)',No_of_Gaus
sians,20);
% disp('Completed Training Speaker 5 model (Press any key to continue)');
% pause;

disp('Completed Training ALL Models (Press any key to continue)');

pause;
%-------------------------testing against the input data--------------

close all;
%against the first model
disp('Comparing the test features of speaker one and two against model one');
[lYM,lY]=lmultigauss(testing_features1(:,no_coeff)', mu_train1,sigma_train1,c_train1);
graph_gmm(testing_features1(:,no_coeff)', mu_train1,sigma_train1,c_train1);
A(1,1)=mean(lY);
disp('Test features of speaker 1 against model of speaker 1. Press any key to
continue');pause;

[lYM,lY]=lmultigauss(testing_features2(:,no_coeff)', mu_train1,sigma_train1,c_train1);
graph_gmm(testing_features2(:,no_coeff)', mu_train1,sigma_train1,c_train1);
A(1,2)=mean(lY);
disp('Test features of speaker 2 against model of speaker 1. Press any key to
continue');pause;

disp('Comparing the test features of speaker one and two against model one');
[lYM,lY]=lmultigauss(testing_features3(:,no_coeff)', mu_train1,sigma_train1,c_train1);
graph_gmm(testing_features3(:,no_coeff)', mu_train1,sigma_train1,c_train1);
A(1,3)=mean(lY);
disp('Test features of speaker 3 against model of speaker 1. Press any key to
continue');pause;

%against the second model


[lYM,lY]=lmultigauss(testing_features4(:,no_coeff)', mu_train1,sigma_train1,c_train1);
graph_gmm(testing_features4(:,no_coeff)', mu_train1,sigma_train1,c_train1);
A(1,4)=mean(lY);
disp('Test features of speaker 4 against model of speaker 1. Press any key to
continue');pause;

[lYM,lY]=lmultigauss(testing_features5(:,no_coeff)', mu_train1,sigma_train1,c_train1);
graph_gmm(testing_features5(:,no_coeff)', mu_train1,sigma_train1,c_train1);
A(1,5)=mean(lY);
disp('Test features of speaker 5 against model of speaker 1. Press any key to
continue');pause;

pause;

disp('Results in tabular form of the comparisons');


disp('Note:');
disp('Each column i represents the test recording of Speaker i');
disp('Each row i represents the training recording of Speaker i');
disp('The diagonal elements (corresponding to same speaker comparisons');
disp('-------------------------------------------------------------------');
A
disp('-------------------------------------------------------------------');

You might also like