how to create speech waves with equal loudness in matlab

hi frnds i want matlab command or code for making speech waves with equal loudness in matlab i.e speech waves with same intensity and frequency.

 Accepted Answer

I suggest you to use Microsoft Anna (Text to Speech) and save the sound in a *.wav file or *.mp3 file.
Then import the sound file to MATLAB.
To equalize the loudness you could try this options:
  • Use the soundsc command:
[y1,Fs1] = audioread('myRecord1.wav');
[y2,Fs2] = audioread('myRecord2.wav');
y1n = soundsc(y1,Fs1);
y2n = soundsc(y2,Fs2);
  • Use FFT to equalize the median dB:
Pxx1 = abs(fft(y1));
Pxx2 = abs(fft(y2));
dB1 = median(10*log10(Pxx1(1:(end/2)).^2));
dB2 = median(10*log10(Pxx2(1:(end/2)).^2));
dB = [dB1 dB2];
k = sqrt(10.^((max(dB)-dB)/10));
y1n = k(1)*y1;
y2n = k(2)*y2;

2 Comments

Hey thnx for this idea. But already i have some speech waves that i want to make with equal loudness, so is there any another way to do this ?
Sorry, I forget to tell you how to equalize the loudness.
Options:
  • Use the soundsc command:
Examples:
[y1,Fs1] = audioread('myRecord1.wav');
[y2,Fs2] = audioread('myRecord2.wav');
y1n = soundsc(y1,Fs1);
y2n = soundsc(y2,Fs2);
  • Use FFT to equalize the median dB:
Pxx1 = abs(fft(y1));
Pxx2 = abs(fft(y2));
dB1 = median(10*log10(Pxx1(1:(end/2)).^2));
dB2 = median(10*log10(Pxx2(1:(end/2)).^2));
dB = [dB1 dB2];
k = sqrt(10.^((max(dB)-dB)/10));
y1n = k(1)*y1;
y2n = k(2)*y2;

Sign in to comment.

More Answers (1)

Categories

Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange

Asked:

ana
on 18 Nov 2013

Answered:

ana
on 22 Nov 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!