Hello friends, hope you all are fine and having fun with your lives. Today, I am going to share a tutorial on Speech Recognition in MATLAB using Correlation. Speech recognition is used in almost every security project where you need to speak and tell your password to a computer and is also used for automation. For example, I want to turn my AC on or off using voice commands then I have to use Speech Recognition. I have to make the system recognize that whether I am saying ON or OFF. In short, speech recognition plays a vital role in voice control projects. In today's post, I am gonna show you How to do Speech Recognition in Matlab and the technique I have used in this project is known as cross correlation. You should also have a look at Eye Ball Detection in MATLAB.
Correlation is normally used in signal processing, where you need to compare two signals and need to find the similarity between them. It is also known as the dot product of those two signals. Correlation has many uses and you can read more about it on its Wiki Page. Correlation is also used for pattern recognition like you want to find some pattern in the signal then you can use Correlation. Anyways, in our project, we are using correlation to find similarities between our stored signals and the testing signal. So, let's get started with Speech Recognition in MATLAB using Correlation.
Speech Recognition in MATLAB using Correlation
- First of all, download this complete project by clicking the below button:
- Now in this package, you will find nine audio wav files.
- Five of them are the recorded sounds that are already feed in MATLAB.
- Two are test files that will be recognized by the code.
- The remaining two are success and failure files which will run if you got the recognition or not.
- Let me explain the code a bit. First of all, what we need to do is to upload the first five training audio files in the software so and then we need to test these fives files with the test files and we need to check which one is a maximum match.
- Here's the complete code:
function speechrecognition(filename) voice=wavread(filename); x=voice; x=x'; x=x(1,:); x=x'; y1=wavread('one.wav'); y1=y1'; y1=y1(1,:); y1=y1'; z1=xcorr(x,y1); m1=max(z1); l1=length(z1); t1=-((l1-1)/2):1:((l1-1)/2); t1=t1'; %subplot(3,2,1); plot(t1,z1); y2=wavread('two.wav'); y2=y2'; y2=y2(1,:); y2=y2'; z2=xcorr(x,y2); m2=max(z2); l2=length(z2); t2=-((l2-1)/2):1:((l2-1)/2); t2=t2'; %subplot(3,2,2); figure plot(t2,z2); y3=wavread('three.wav'); y3=y3'; y3=y3(1,:); y3=y3'; z3=xcorr(x,y3); m3=max(z3); l3=length(z3); t3=-((l3-1)/2):1:((l3-1)/2); t3=t3'; %subplot(3,2,3); figure plot(t3,z3); y4=wavread('four.wav'); y4=y4'; y4=y4(1,:); y4=y4'; z4=xcorr(x,y4); m4=max(z4); l4=length(z4); t4=-((l4-1)/2):1:((l4-1)/2); t4=t4'; %subplot(3,2,4); figure plot(t4,z4); y5=wavread('five.wav'); y5=y5'; y5=y5(1,:); y5=y5'; z5=xcorr(x,y5); m5=max(z5); l5=length(z5); t5=-((l5-1)/2):1:((l5-1)/2); t5=t5'; %subplot(3,2,5); figure plot(t5,z5); m6=300; a=[m1 m2 m3 m4 m5 m6]; m=max(a); h=wavread('allow.wav'); if m<=m1 soundsc(wavread('one.wav'),50000) soundsc(h,50000) elseif m<=m2 soundsc(wavread('two.wav'),50000) soundsc(h,50000) elseif m<=m3 soundsc(wavread('three.wav'),50000) soundsc(h,50000) elseif m<=m4 soundsc(wavread('four.wav'),50000) soundsc(h,50000) elseif m<m5 soundsc(wavread('five.wav'),50000) soundsc(h,50000) else {soundsc(wavread('denied.wav'),50000)} end
- Now if you read the code from start then you can see, first of all, I uploaded the test file which I want to compare with my samples.
- After that, I uploaded all 5 samples and also get their correlation with the test sample.
- Finally, in the end, I compared the results and on the basis of it I figured out which one is the correct speech file.
- You will also get spectrum graphs of your sound files as shown in the below figure:
- It was quite an easy project and I have done it within half an hour and I hope you guys will understand.
- If you got any problems then ask in the comments and I will resolve them.
- Here's the complete video demonstration for this project and I hope it's going to help you out in understanding it.