Я очень новичок в обработке речи. Я на самом деле пытаюсь сделать шумоподавление. Я использую метод спектрального вычитания. При этом во многих теоретических работах и алгоритмах говорится, что нужно брать кадры аудиосигнала.
Для этого я взял 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 мс.
Любая помощь?