Наиболее эффективный способ извлечения частотных компонентов аудиосигнала с почти человеческой точностью в режиме реального времени


14

Я пытаюсь выяснить, как (если это возможно) извлечь частотные компоненты произвольного аудиосэмпла (обычно музыки), как FFT, но в моем исследовании алгоритма FFT я узнаю, что он страдает некоторыми жесткие ограничения для этой цели.

Есть 3 проблемы, которые представляет БПФ:

  1. Поскольку разрешение бункера FFT эквивалентно размеру вашего окна, для достижения довольно разумной точности (скажем, 1 Гц) вам необходимо неоправданно длинное окно (скажем, 1 секунда). Это означает, что вы не можете быстро обнаружить переходные процессы или новые частоты. Это также означает, что проблема не может быть решена с более быстрым ЦП и более высокой частотой дискретизации - ограничение неразрывно связано со временем.

  2. Люди воспринимают частоту логарифмически, но ячейки БПФ расположены линейно. Например, разница в 20 Гц на низком уровне нашего слуха огромна , тогда как разница в 20 Гц на верхнем уровне незаметна. Таким образом, чтобы получить точность, которая нам нужна на низких частотах, мы должны вычислить гораздо больше, чем нам требуется на высоких частотах.

  3. Некоторые из этих проблем могут быть решены путем интерполяции между бинами FFT. Это может работать для большого количества музыкального звука, потому что частоты часто будут располагаться довольно далеко друг от друга, и поэтому не более 1 частоты попадет в пару бинов. Но это не всегда так, особенно для негармоничных звуков, таких как ударные инструменты. Так что интерполяция - это просто догадки.

Из того, что я понимаю в алгоритме DFT / FFT, выходные данные (амплитуды бина) фактически являются корреляцией синуса / косинуса на частоте каждого бина. Меня поражает, что если бы алгоритм мог быть перепроектирован так, чтобы частоты бина располагались нелинейно (т.е. мы коррелировали другой набор синусов / косинусов), то мы могли бы достичь психоакустически равного разрешения на всех частотах. Возможно ли это, или это несбыточная мечта, основанная на моем неполном понимании математики?

Я думаю, что я мог бы также решить проблему с помощью грубой силы, сопоставляя синусы / косинусы на каждой частоте, которая меня интересует. Я не слишком разбираюсь в математике здесь. Это возможно? Какого рода эффективность? Решит ли это мою проблему?

Есть ли другой способ добиться более точного частотного разложения сигнала в реальном времени? Эффективность процессора - это проблема, но не главная проблема - меня частично интересует, можно ли вообще это сделать теоретически. Однако то, что возможно в реальном времени на современном настольном компьютере, было бы идеальным.


3
Какую проблему вы пытаетесь решить? Обнаружение f0, обнаружение множественного f0 (для транскрипции), распознавание аккордов, моделирование тембра ...? Существуют специальные решения для некоторых из этих проблем. Вы заботитесь об обратимости (которая будет использоваться в рамках анализа-> преобразования-> ресинтеза)?
pichenettes

Проблема, которую я пытаюсь решить, по общему признанию, довольно открыта. У меня есть общий интерес к цифровой музыке, охватывающий большую часть вашего списка. Но моя расплывчатость отчасти из - за моего отсутствия знаний о том , что может быть сделано и каковы конкретные отрасли стандарт или лучшие способы решения каждой проблемы вы упоминаете (до Я задал этот вопрос, я всегда предполагается FFT был его ). Но предмет из вашего списка, который представляет для меня наибольший интерес, - это тембровое моделирование. Я также хотел бы найти способы извлечения сложных тембров, звучащих одновременно в записи. Ресинтез захватывающий. AI алгоритмы представляют интерес.
Bryhoyt

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

«Алгоритм может быть изменен таким образом, чтобы частоты бина располагались нелинейно, тогда мы могли бы достичь психоакустически равного разрешения на всех частотах». Звучит как непрерывное вейвлет-преобразование Морле
эндолит

Ответы:


5

Как я прокомментировал в предыдущем посте, метод частотно-временного анализа, известный как «кратковременное преобразование Фурье» , эквивалентен банке фильтров, анализирующих ваш сигнал x . Для данного окна анализа w n размера N фильтр на частоте k / N имеет вид: h n = w - n e j 2 π n kXxwnNk/N

hn=wnej2πnkN

1/Nk

fkfk+1=21/12fk21/1212fk

Здесь и там вы можете найти реализации CQT, недавнюю, сделанную профессором Клапури, с довольно приличным обращением, можно найти здесь . Аудио группа в Telecom ParisTech также имеет реализацию проф. Прадо, но я еще не пробовал.

[Brown91] Дж. Браун, "Расчет константы Q спектрального преобразования", Журнал Акустического общества Америки, 1991, 89, 425-434

РЕДАКТИРОВАТЬ 20121014: некоторые ответы и комментарии на ваши (bryhoyt) вопросы.

  1. Просто общие идеи о ваших собственных комментариях к основному вопросу: вы, кажется, интересуетесь многими приложениями, которые, на мой взгляд, не совсем тривиальные проблемы для решения. «Тембровое моделирование» звучит для меня в большей степени связанным с распознаванием речи или тому подобным, для которого высота или разрешение по частоте или точность не являются большой проблемой (рассмотрим, как обычно вычисляются MFCC).

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

    Тем не менее, все еще существует вероятность того, что каждый смотрит далеко за пределы того, что на самом деле происходит, и что вы можете разобраться в этом в простом, таким образом, элегантном решении! Не забудьте опубликовать об этом, как только это будет сделано! :-)

  2. выборки 0,1 с при 44 кГц достаточно, чтобы содержать широкий диапазон частот

    Fs/N=44100/4410=10Hz

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

    Краткий ответ: прочитайте мой тезис об оценке мелодии!

    Чтобы уточнить немного: многие алгоритмы оценки высоты тона выходят за пределы ограничений FT благодаря допущениям в отношении обрабатываемых звуков. Мы ожидаем, что ноты из естественных звуков (человеческий голос, гобой, саксофон, фортепиано ...) будут более сложными, чем отдельные синусоиды. Большинство тоновых звуков являются более или менее гармоничными, что означает, что они могут быть смоделированы как суммы синусоид, частота которых кратна основной частоте.

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

  4. Каковы компромиссы? В частности, какой уровень точности частоты я могу ожидать для достаточно короткого окна? (Я понимаю, что размер окна в CQT является переменным - насколько это так?) Даже более конкретно, насколько близко я смогу добраться до моего ок. цель 0,5% разности частот с окном 0,005 с?

    Как было сказано ранее, с окном 0,005 с, вы можете ожидать что-то вроде 200 Гц "утечки частоты". Это действительно проблема только тогда, когда у вас есть 2 синусоиды с частотами, которые ближе, чем 200 Гц, так что FT не сможет показать, что это 2 разных синусоиды. Что ж, мы далеки от ваших 0,5% (кстати, полутон на 6% частоты!), А 0,005 с - это немного мало для вашей цели. Однако если вы хотите предоставлять оценку каждые 0,005 с, вы все равно можете обрабатывать более длинные перекрывающиеся кадры, как это обычно делается при обработке речи / музыки. Это то, что вы на самом деле хотите?

    Nk=Fsfk(21/B1)
    BB=48fk=100Hzтребуются окна длиной около 0,7 с. Ничто не говорит о том, что мы затем теряем часть временного разрешения ... Но, как упоминалось ранее, это проблема, только если мы забываем структуру звука. Кроме того, психоакустика считает, что при частоте ниже 500 Гц люди не очень хорошо различают синусоиды: даже люди подвергаются сомнению. Конечно, мы можем надеяться, что наши компьютеры будут работать лучше нас, но здесь мы сталкиваемся с серьезной проблемой!

    Наконец, обратите внимание, что существуют другие способы вычисления частотно-временного представления звука, рассмотрим, например, гамма-фильтры. Преимущество CQT, о котором я упоминал ранее, состоит в том, что существует программное обеспечение как для преобразования, так и для его инвертирования. Лично я все еще придерживаюсь STFT, хотя, из-за его простоты и потому, что до сих пор мне никогда не требовалось лучшее разрешение на низких частотах, даже для разделения источников.

    [Schoerkhuber2010] Schoerkhuber, C. and Klapuri, A., «Инструменты преобразования Constant-Q для обработки музыки», 7-я Конференция по звуковым и музыкальным вычислениям, Барселона, Испания, 2010.


Небольшое замечание: CQT может помочь решить вопросы 1 и 2 из вас, но не пункт 3. Что касается пункта 3, всегда есть компромисс между разрешением по времени и частоте, и если вы хотите хорошее разрешение по частоте при низких Частотные компоненты, вы, скорее всего, должны принять, чтобы потерять временное разрешение. Теперь, для оценки основного тона, могут быть и другие решения, вы можете прочитать мое в моей докторской диссертации, если вам интересно: D
Жан-Луи Дюррио

Я не совсем понимаю. Я знаю, что вы ничего не получаете бесплатно - я не могу ожидать, что алгоритм точно обнаружит частоты, которые не были отобраны с хорошим разрешением, по крайней мере, в течение пары периодов самой низкой частоты. Но выборки 0,1 с на частоте 44 кГц достаточно для того, чтобы содержать широкий диапазон частот, которые человек может точно различить (в относительном выражении - «это 5-й», «есть плоский уменьшенный 4-й» и т. Д.), Подтверждая информацию где-то там БПФ не может обнаружить это для низких и высоких частот, но вы говорите, что другие алгоритмы могут: какой компромисс?
Bryhoyt

Из всех превосходных ответов, приведенных выше, CQT выглядит наиболее точно подходящим для вопроса, который я задавал. Каковы компромиссы? В частности, какой уровень точности частоты я могу ожидать для достаточно короткого окна? (Я понимаю, что размер окна в CQT является переменным - насколько это так?) Даже более конкретно, насколько близко я смогу добраться до моего ок. цель 0,5% разности частот с окном 0,005 с? (Это мое грубое предположение о том, когда человек может начать слышать что-то не в духе или не в ритме)
bryhoyt

5

Во-первых, с классическим подходом краткосрочного преобразования Фурье, есть альтернатива интерполяции - в частности, методы, использующие информацию о фазе для восстановления мгновенной частоты ( см. Этот вопрос ), которая может очень точно дать вам положение спектрального пика без увеличение размера БПФ. Недостаток, как вы правильно сказали, заключается в том, что вы не увеличиваете способность системы различать соседние пики - но это уже значительное улучшение по сравнению с использованием центральной частоты индекса бункера FFT.

srFFT_size

Есть еще один метод грубой силы, который работает: «исследуйте» ваши сигналы с помощью оконной комплексной экспоненты (вейвлеты Габора). Они характеризуются центральной частотой, центральным временем и шириной полосы (которая измеряет, как вейвлет распространяется во времени или по частоте). Вам нужно будет оценить много-много-много корреляций между вашим сигналом и этими вейвлетами с таким количеством временных смещений, частот и ширины полосы, которые вы хотите. Результат будет таким же, как очень гибкий «плиточный» STFT, в котором оптимальный размер окна выбирается для каждого временного диапазона и каждого частотного диапазона. Помимо вычислительных затрат, недостатком является то, что не существует ни эффективного алгоритма, ни причинно-следственного алгоритма (вам нужно заранее знать столько образцов, сколько самого длинного вейвлета в вашем словаре). Если вы хотите экспериментировать с этими методами,MPTK .

k

  • k
  • Они хорошо работают в присутствии белого шума - это требует, чтобы сигнал был побелен перед анализом; помогает анализ в отдельных каналах банка фильтров.

Это вычислительно дорого, но они могут работать в режиме онлайн, с короткими окнами, если заказы модели и / или шум низкие.


4

Частота или шаг? Уже есть тонны исследовательских работ и книг по восприятию человеческого тона. Но, IIRC, люди, как правило, плохо умеют «извлекать» частоты, если они не являются фундаментальными. А многочисленные частотные пики в «критической полосе» имеют тенденцию восприниматься как шум. Таким образом, любой метод с «почти человеческой точностью» может также включать некоторые ошибки оценки восприятия человеком.

БПФ - это просто набор фильтров, которые не оптимальны для многих целей, если только не требуются ортогональность и обратимость. Другие банки фильтров возможны, если вам не нужны эти два (а человеческое восприятие явно не требует), такие как банк частотных фильтров MEL. После того, как пик частоты определен банком частотных фильтров MEL, дальнейший анализ с использованием методов БПФ-интерполяции или фазового вокодера может быть полезен для уточнения оценки частоты любого изолированного спектрального пика частоты.

Обратите внимание, что никакая дополнительная информация фактически не собирается ни одним из этих методов фильтрации, используемых в том же диапазоне данных во временной области, по сравнению с БПФ. То, что происходит, может фактически быть потерей информации, чтобы лучше соответствовать "неточности" или аномалиям человеческой слуховой системы.

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

Последняя часть вашего вопроса о производительности может быть красная сельдь. В наши дни на процессоре сотового телефона можно делать десятки БПФ и десятки различных банков фильтров в режиме реального времени. Учитывая очень эффективные библиотеки FFT, доступные от поставщиков процессоров, FFT с 1000-ю «избыточными» ячейками может быть более эффективным, чем значительно меньший, но более наивно кодированный банк фильтров.


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

2

Есть много альтернатив, но это зависит от того, что вы делаете. Физически я бы сказал, что наши уши больше похожи на параллельный банк фильтров, чем на БПФ, который дает им хорошее разрешение по времени, а процесс, называемый «фокусировкой», дает им хорошее разрешение по частоте. Таким образом, в некоторых случаях вы можете теоретически использовать банк фильтров, но для этого требуется много обработки, что оставляет вам много данных для обработки.

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

Другой подход заключается в использовании перекрывающихся окон FFT. Вы можете увеличить разрешение по частоте БПФ, просматривая не только информацию о величине, но и информацию о фазе. Это позволяет вам использовать намного более короткие окна, чем вы могли бы использовать в противном случае, что приводит к лучшей производительности и лучшему разрешению по времени. Перекрывающиеся окна трудно правильно повторно синтезировать, и слишком много предположений относительно фазы также может быть опасным. Как бы то ни было, такого рода уловки, вероятно, являются основой решения сложных задач частотно-временного анализа.

Существует также ряд других инструментов для конкретных приложений.


1
ИксNИксКмвесN
Иксемзнак равноΣNИксN+мвесNе-J2πNКN
NИксNм
Иксемзнак равноΣпИкспвесп-ме-J2π(п-м)КNзнак равноΣпИкспчасм-п
где часNзнак равновес-NеJ2πNКNотсюда и интерпретация банка фильтров!
Жан-Луи Дюррио

1
STFT могут быть банком фильтров, но не все банки фильтров являются STFT.
Бьорн Рош
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.