Comments 6
Если в cepstrum оставить только низкие значения quefrency (обрезать всё остальное), а затем применить обратное преобразование, мы получим гладкую огибающую спектра. Это похоже на сглаживание: мы убираем детали и оставляем основную форму.
Если исходить из модели , которая описана ранее, то получаем АЧХ голосового тракта.
Но вот далее непонятно. Почему кепстр применяется для определения жанра. Голоса нет, голосового тракта нет. Есть лишь инструменты. И как привязать кепстр к этому?
Среди источников есть ссылка на плейлист по аудио-обработке. Cсылка с тайм-кодом на ролик с MFCC. Идея всего алгоритма - разделить спектры вокального тракта от гортанного пульса. Т.е., произвели первое преобразование FTT, взяли логарифм. После этого работаем с суммированием логарифмических спектров. Каждая логарифмическая составляющая также является в той или иной мере периодической. Затем применяется mel-фильтрация. Второе преобразование (как правило DCT) позволяет выразить эту периодику математически, при этом как бы в изначальном физическом виде. Лучше посмотрите ролик, автор неплохо все расставляет поп полкам.

Скажите, отчего Вы взяли ESP32-C3, а не двухядерный нативный ESP32? На двух ядрах можно было бы считать с перекрытием окон, жанры определялись бы , кмк, лучше. Ну или взвешивать окно/буфер. Не могу объяснить, но сдается мне, что лучшее определение металл-соло получается от эффекта "разрыва" на краю буфера.
С данной моделью скорее всего жанры вряд ли будут лучше определяться. Я делал тестовый python-скрипт, где на вход подавал различные аудио файлы с выраженными жанрами. Модель не всегда справлялась даже с файлами из тестовой выборки. Композицию часто не легко однозначно отнести к определенному жанру. Например, я включил Nirvana Smells Like Teen Spirit. В запеве, алгоритм метался между жанрами, а вот в припеве он более-менее определил жанр как rock. ESP32-C3 взял потому что он у меня был, и на нем есть дисплей). Насчёт улучшения согласен, можно попробовать доработать алгоритм, выбрать другое железо. Я изначально решил портировать существующий алгоритм и модель, точнее модель обучил сам, но исходники уже готовые, Я только расширил список жанров.
Понятно, спасибо, я тоже предпочитаю использовать то, что "есть в ящике" )) Если будете еще заниматься этим проектом, то держите в голове, что преобразования Фурье для обработки звука/речи хорошо бы делать с перекрытием входных буферов хотя бы наполовину, и все равно взвешивать с подходящим окном. (когда-то давно мой тогдашний шеф вообще стремился к "скользящему" преобразованию, но это в рилтайме и по сей день химера) Просто по той причине, что в преобразовании Фурье края собранного буфера данных создают паразитные гармоники в спектре.
Обработка аудио на ESP32