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.

 採用された回答

Pedro Villena
Pedro Villena 2013 年 11 月 18 日
編集済み: Pedro Villena 2013 年 11 月 19 日

0 投票

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 件のコメント

ana
ana 2013 年 11 月 19 日
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 ?
Pedro Villena
Pedro Villena 2013 年 11 月 19 日
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;

サインインしてコメントする。

その他の回答 (1 件)

ana
ana 2013 年 11 月 22 日

0 投票

Thanx for your answer..

カテゴリ

ヘルプ センター および File ExchangeSimulation, Tuning, and Visualization についてさらに検索

質問済み:

ana
2013 年 11 月 18 日

回答済み:

ana
2013 年 11 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by