Извлечение характеристик звука с использованием БПФ, PSD и STFT и поиск наиболее мощных частот

1) Предположим, у меня есть коэффициенты FFT и STFT, полученные с использованием F = fft(x) и S = spectrogram(x). Как эти коэффициенты можно использовать в качестве звуковых характеристик? (Здесь функция звука используется как в смысле распознавания образов).

2) Дает ли следующий код PSD и самую мощную частоту (в кГц) в сигнале?

Hs = spectrogram.periodogram;
p = psd(Hs, x, 'Fs', 22050);
[C, I] = max(p.data);
max_f = p.Frequencies(I);

3) Если (2) в порядке, как я могу найти самые мощные n частоты в сигнале с помощью PSD?

4) Как найти самые мощные частоты с помощью БПФ и/или STFT, аналогичного PSD?

Заранее спасибо.


person groove    schedule 20.01.2013    source источник
comment
См. также: title="какие дескрипторы fft следует использовать в качестве функции для реализации классификации или cl">stackoverflow.com/questions/27546476/   -  person DrKoch    schedule 22.12.2014


Ответы (2)


1) S = spectrogram(x) дает вам БПФ как функцию времени путем разделения сигнала x на несколько частей и вычисления PSD для каждой части. fft(X) дает вам FFT для всего сигнала за один раз. Первый с большей вероятностью отследит изменения в частотном содержании, тогда как второй более полезен для просмотра общего частотного содержимого. Я не слишком знаком с обработкой звука, но даже если два сигнала имеют одинаковые спектры мощности, незначительные изменения в комплексной фазе БПФ могут привести к совершенно разным сигналам во временной области.

2) Синтаксис немного отличается от того, к чему я привык в Matlab, но ответ ДА. Единицы частоты зависят от точного синтаксиса, который вы использовали.

3) Вы можете использовать функцию sort, чтобы получить n самых мощных интервалов частоты. Например, [B,IX] = sort(p.data) и freq_maxn = p.Frequencies(IX(1:n))

4) PSD = |БПФ|^2/N. Другими словами, PSD — это просто масштабированная версия квадрата величины БПФ. Однако для сигналов с действительными значениями используется только половина БПФ, поскольку другая половина представляет собой просто комплексно-сопряженное преобразование. Если у вас есть эта последовательность, расчет максимальной частоты и первых n частот остается таким же, как (2) и (3). См. [периодограмма] (http://www.mathworks.com/help/signal/ref/periodogram.html) для получения дополнительной информации.

person Karthik V    schedule 21.01.2013
comment
1) Я хотел знать, как эти преобразования используются в качестве звуковых функций, но ваше объяснение хорошо разъясняет концепции. 2) Я не уверен, содержит ли p.Frequencies точный частотный диапазон аудиофайла или требуется масштабирование. 4) БПФ дает массив, длина которого равна длине сигнала во временной области. Так что это явно не в частотной шкале. Таким образом, при построении графика вы можете определить ось и масштабировать ее; но при чтении этих значений требуется что-то другое (повторная выборка?). Кстати, спасибо. - person groove; 24.01.2013

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

Когда вы говорите о «самой мощной частоте», я предполагаю, что вы хотите использовать какую-то форму обнаружения высоты тона? Если это так, то пик PSD действительно будет давать наиболее доминирующую частоту, однако это не обязательно та высота, которую вы слышите. Например, инструмент может играть ноту на частоте 200 Гц, которая будет иметь спектральные пики на частотах 200, 400, 600, 800 и т. д., и не обязательно, что 200 Гц будет максимальной амплитудой. На самом деле, вы можете применить фильтр нижних частот, чтобы удалить компонент 200 Гц, и вы все равно будете воспринимать его как высоту тона (вы слышите этот эффект, если слышите музыку по телефону — он называется Виртуальная презентация).

Если вы хотите определить высоту тона, я бы посоветовал прочитать об алгоритмах оценки высоты тона.

РЕДАКТИРОВАТЬ: существует довольно много статей с исследованиями по классификации аудио, так что имейте ищите работы Эрика Шайрера, Джорджа Цанетакиса и Мартина МакКинни среди прочих. Я бы также подписался на список рассылки MIR, так как в этом списке много ключевых специалистов в этой области. а в архивах много полезного. Что касается вашего вопроса о «самой мощной частоте», я не совсем понимаю, что вы имеете в виду. При прослушивании музыки на нескольких инструментах, как правило, нет доминирующей частоты. Часто присутствует ощутимая мелодия, которая из-за микса часто выделяется, но я не уверен, что вы имеете в виду именно это.

person the_mandrill    schedule 21.01.2013
comment
Я хочу сделать классификацию песен. Предсказание исполнителя, классификация жанров, обнаружение эмоций, возможно, снятие отпечатков пальцев или что-то еще. Под признаками я подразумеваю векторы признаков, состоящие из таких значений, как MFCC. Что касается части обнаружения высоты тона, я понимаю, что самая мощная частота — это не всегда та высота звука, которую мы слышим. Но всегда ли самая мощная частота является основной частотой (200 Гц для вашего примера)? Так что же мы слышим - самую мощную, основную или гармоническую? Кстати, спасибо. - person groove; 24.01.2013