Что значит сказать, чтобы взять среднее/среднее из этих первых 3 кадров

Я очень новичок в обработке речи. Я на самом деле пытаюсь сделать шумоподавление. Я использую метод спектрального вычитания. При этом во многих теоретических работах и ​​алгоритмах говорится, что нужно брать кадры аудиосигнала.

Для этого я взял 20 мс для каждого кадра, то есть для частоты дискретизации = 16 кГц, я бы получил каждый кадр с 16 кГц * 20 мс = 320 выборок/кадр.

windowed_frame = frame .* hamming(length(frame));
complex_spec = fft(windowed_frame,512);        
mag_spec = abs(complex_spec);
phase_spec = angle(complex_spec);

Теперь для шумового сигнала он говорит:

Предположим, что начальные несколько неречевых кадров являются шумом.

Итак, чтобы получить оценку шума, он утверждает

Возьмите среднее значение первых трех или около того кадров.

И каждый кадр длиной 320 сэмплов. Теперь, что значит взять среднее/среднее из этих первых трех кадров?

3 кадра содержат всего 3 * 320 = 960 сэмплов. Указывает ли это на среднее значение этих 960 значений? Но это приведет только к одному значению. Но мне нужен оконный размер, то есть шум_оценки размером 20 мс.

Любая помощь?


person Sagaryal    schedule 20.07.2017    source источник
comment
есть родственный сайт, посвященный цифровой обработке сигналов... если здесь нет помощи, вы можете переместить свой вопрос... см. dsp.stackexchange.com/   -  person Scott Stensland    schedule 21.07.2017
comment
Я подозреваю, что это означает получение среднего значения спектра по элементам из каждого из первых трех кадров, что дает вам средний спектр мощности из первых 960 выборок.   -  person Tom Wyllie    schedule 23.07.2017


Ответы (1)


Вам нужна оценка спектра шума, поэтому вы усредняете mag_spec в первых 3 кадрах, а не значения сигнала.

 noise_spec = (mag_spec_1 + mag_spec_2 + mag_spec_3) / 3

Результатом будет 512 чисел, в основном энергия шума для каждого частотного бина.

person Nikolay Shmyrev    schedule 23.07.2017