Очистка шумных результатов Cepstrum - PullRequest
8 голосов
/ 12 марта 2011

Я работал над простой настройкой определения частоты на iphone. Анализ в частотной области с использованием результатов БПФ был несколько ненадежным при наличии гармоник. Я надеялся использовать результаты Cepstrum, чтобы решить, какая основная частота играет.

Я работаю с AudioQueues в платформе AudioToolbox и выполняю преобразования Фурье с использованием инфраструктуры Accelerate.

Мой процесс в точности соответствовал тому, что перечислено в статье Cepstrum Википедии для кепстра Real Power, а именно: сигнал → FT → abs () → квадрат → log → FT → abs () → квадрат → power cepstrum.

Проблема в том, что результаты Cepstrum чрезвычайно шумные. Я должен отбросить первые и последние 20 значений, поскольку они астрономические по сравнению с другими значениями. Даже после «очистки» данных все еще существует огромное количество вариаций - гораздо больше, чем я ожидал, учитывая первый график. См. Рисунки ниже для визуализаций частотной области и доменной области. FFT FFT Cepstrum Кепстр

Когда я вижу такого явного победителя в частотной области, как на этом графике, я ожидаю увидеть такой же ясный результат в области Quefrency. Я играл на A440 и ожидал, что бен 82 или около того будет иметь наибольшую величину. Третий пик на графике представляет мусорное ведро 79, которое достаточно близко. Как я уже сказал, первые 20 или около того бункеров настолько астрономические по величине, что их невозможно использовать, и мне пришлось удалить их из набора данных, чтобы что-то увидеть. Другое странное качество данных кепстра состоит в том, что четные ячейки кажутся намного выше, чем нечетные ячейки. Вот частотные бины от 77-86:

77: 151150.0313
78:  22385.92773
79: 298753.1875
80:  56532.72656
81: 114177.4766
82:  31222.88281
83:   4620.785156
84:  13382.5332
85:     83.668259
86: 1205.023193

Мой вопрос заключается в том, как очистить частотную область, чтобы результаты моего домена Cepstrum были не такими уж дикими. Кроме того, помогите мне лучше понять, как интерпретировать эти результаты, если они соответствуют ожиданиям в анализе Cepstrum. Я могу опубликовать примеры кода, который я использую, но в основном он использует вызовы vDSP, и я не знаю, насколько это было бы полезно.

Ответы [ 3 ]

3 голосов
/ 12 марта 2011

Кепстр, или кепстральный анализ, - это метод, используемый для разделения сигнала с высоким содержанием обертонов на две части. Часть около DC представляет спектральную огибающую всех обертонов, или речевой формат, который может быть полезен для распознавания динамика или инструмента. Более поздние пики в результате кепстра представляют частоту или частоты возбудителя, если эта частота генерирует достаточное количество гармонических обертонов.

Поскольку кепстр обычно делается без какого-либо (непрямоугольного) окна, он может давать ответ Sinc даже на чистую последовательность обертонов, при этом ширина ответа обратно приблизительно пропорциональна длине последовательности обертонов или числу обертонов. И, конечно, любые слегка негармоничные обертоны (как в реальных музыкальных инструментах) сделают результаты кепстра еще более грязными. Таким образом, пик кепстра может быть хорошим только для определения приблизительного местоположения основной частоты, что может быть полезным результатом отклонения других кандидатов частоты при оценке частоты.

«Чисто выглядящий» кепстр может быть результатом очень длинной последовательности точно гармонических обертонов с почти плоской частотной характеристикой, что, возможно, не то, что можно найти в реальных сигналах.

2 голосов
/ 13 февраля 2013

Следующий анализ иллюстрирует работу Cepstrum на синтетических и реальных сигналах.

Сначала мы рассмотрим синтетический сигнал.

График ниже показывает синтетическую стационарную ноту E2, синтезированную с использованием типичного компонента, близкого к постоянному току, основного тона при 82,4 Гц и в общей сложности 8 гармоник с целыми кратными 82,4 Гц. Синтетическая синусоида была запрограммирована для генерации 4096 образцов.

Synthetic E2 note spectrum

График ниже показывает крупный план ввода, который использовался для расчета Cepstrum синтетической ноты E2. Это лог (| FFT | ^ 2), выводимый из синтетической ноты E2.

Cepstrum input: synthetic E2 note's spectrum

На графике ниже показан Cepstrum синтетической ноты E2. Соблюдайте заметный пик без постоянного тока на 12,36. Ширина Cepstrum равна 1024 (выход второго БПФ), поэтому пик соответствует 1024 / 12,36 = 82,8 Гц, что очень близко к фактическим 82,4 Гц основной частоты.

Synthetic E2 note cepstrum closeup

Теперь мы исследуем сигнал реального мира.

График ниже показывает спектр ноты E2 от настоящей акустической гитары.

Guitar E2 note spectrum closeup

График ниже показывает крупный план ввода, который был использован для расчета Cepstrum ноты E2 акустической гитары. Это запись журнала (| FFT | ^ 2) из ​​ноты E2 акустической гитары.

enter image description here

На графике ниже показан Cepstrum ноты E2 акустической гитары. Соблюдайте заметный пик без постоянного тока на 542,8. Ширина Cepstrum равна 32768 (выход второго БПФ), поэтому пик соответствует 32768 / 542,8 = 60,4 Гц, что довольно далеко от фактических 82,4 Гц основной частоты.

Guitar E2 note cepstrum closeup

Запись гитарной ноты E2, использованной для этого анализа, была сэмплирована на частоте 44,1 кГц с высококачественным микрофоном в студийных условиях, она практически не содержит фонового шума и не содержит никаких других инструментов или голосов.

Это иллюстрирует значительную проблему использования Cepstral анализа для определения высоты звука в реальных аудиосигналах.

Ссылки:

Реальные данные аудиосигнала, генерация синтетического сигнала, графики, БПФ и анализ Cepstral были выполнены здесь: Кепстр музыкального инструмента

1 голос
/ 12 февраля 2013

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

Конечно, вы имеете в виду самую сильную частоту в спектре, поэтому я предлагаю использовать эту превосходную библиотеку http://www.schmittmachine.com/dywapitchtrack.html

«Сердцем алгоритма является очень мощный вейвлет-алгоритм, описанный в статье Эрика Ларсона и Росса Мэддокса:« Отслеживание основного тона во временной области с использованием вейвлетов »из Физики UIUC.»

Надеюсь, что это поможет

...