MATLAB - проблема преобразования тренировочных данных в спектрограмму - PullRequest
0 голосов
/ 19 сентября 2011

Я студент и новичок в обработке сигналов всего несколько месяцев назад.Я выбрал «Новый нечеткий подход к распознаванию речи» для своего проекта (вы можете найти Google для загружаемой версии).

Я немного застрял в преобразовании обучающих данных в спектрограмму, которая прошла через мел-filter.

Я использую это для моего банка mel-filter, с небольшой модификацией курса.

Затем я написал этот простой код, чтобы сделать спектрограмму моего обученияданные:

p   =25;
fl  =0.0;
fh  =0.5;
w   ='hty';
[a,fs]=wavread('a.wav'); %you can simply record a sound and name it a.wav, other param will follows
n=length(a)+1;
fa=rfft(a);
xa=melbank_me(p,n,fs); %the mel-filterbank function
za=log(xa*abs(fa).^2);
ca=dct(za);
spectrogram(ca(:,1))

Все, что я получил, это так же, как это написано в статье: *

enter image description here

Пожалуйста, дайте мне знать, что либо мой кодили спектрограмма у меня была права.если так, что я должен сделать, чтобы моя спектрограмма стала такой же, как в газете?и если нет, скажите, пожалуйста, в чем дело

И еще один вопрос, нормально ли иметь такую ​​большую длину БПФ?Потому что, когда я пытаюсь снизить его, мой код выдает ошибки.

1 Ответ

1 голос
/ 19 сентября 2011

Вы не должны делать БПФ для всего файла - который будет содержать слишком много информации, изменяющейся во времени - вы должны выбрать размер окна, в котором звук относительно неподвижен, например, 10 мс при 44,1 кГц = 441 выборок,так что, возможно, N = 512 может быть хорошей отправной точкой.Затем вы можете сгенерировать спектрограмму через последовательные окна, если необходимо, для отображения изменяющегося во времени частотного содержимого.

...