Это продолжение обсуждения здесь . Я бы прокомментировал там, но у меня нет 50 представителей, поэтому я задаю новый вопрос.
Вот как я понимаю шаг DCT в процессе расчета MFCC: обоснование этого состоит в том, чтобы отделить корреляцию в лог-спектральных величинах (от набора фильтров) из-за перекрытия фильтров. По существу, DCT сглаживает представление спектра, заданное этими лог-спектральными величинами.
Было бы правильно сказать, что синяя линия на изображении ниже представляет спектр, представленный вектором логарифмических спектральных величин, а красная линия - это тот вектор, когда он был DCT-ified?
Ответы:
Позвольте мне начать с самого начала. Стандартный способ расчета кепстра заключается в следующем:
В случае коэффициентов MFCC случай немного отличается, но все же похож.
После предварительного выделения и оконного режима вы вычисляете ДПФ вашего сигнала и применяете банк фильтров из перекрывающихся треугольных фильтров, разделенных по шкале плавности (хотя в некоторых случаях линейная шкала лучше, чем плавность):
Что касается определения кепстра, вы теперь представили огибающую спектра (уменьшенный спектр) в мелкочастотной шкале. Если вы представите это, то увидите, что это своего рода напоминает ваш исходный спектр сигналов.
Следующим шагом является вычисление логарифма коэффициентов, полученных выше. Это связано с тем, что кепстр считается гомоморфным преобразованием, отделяющим сигнал от импульсного отклика голосового тракта и т. Д. Как?
Исходный речевой сигнал в основном свернут с импульсным откликом голосового тракта:s(t) h(t)
В частотной области свертка представляет собой умножение спектров:
Это можно разложить на две части, основываясь на следующем свойстве: .log(a⋅b)=log(a)+log(b)
Мы также ожидаем, что импульсный отклик не меняется со временем, поэтому его можно легко удалить, вычтя среднее значение. Теперь вы понимаете, почему мы берем логарифмы энергий нашей группы.
Последним шагом в определении кепстра будет обратное преобразование Фурье . Проблема в том, что у нас есть только наши логарифмические энергии, а не фазовая информация, поэтому после применения мы получаем комплексные коэффициенты - не очень элегантно для всех этих усилий быть компактным представлением. Хотя мы можем взять дискретное косинусное преобразование, которое является «упрощенной» версией FT, и получить действительные коэффициенты! Эта процедура может быть визуализирована как сопоставление косинусоидов с нашими логарифмическими коэффициентами. Возможно, вы помните, что кепстр также называется «спектр спектра»? Это самый шаг - мы ищем любую периодичность в наших коэффициентах огибающей логарифмической энергии.F−1
ifft
Итак, теперь вы видите, что сейчас довольно сложно понять, как выглядел оригинальный спектр. Кроме того, мы обычно принимаем только первые 12 MFCC, поскольку более высокие описывают быстрые изменения логарифмов, что обычно ухудшает скорость распознавания. Итак, причины для проведения DCT были следующие:
Первоначально вы должны выполнить IFFT, но проще получить действительные коэффициенты из DCT. Кроме того, у нас больше нет полного спектра (все частотные интервалы), но есть энергетические коэффициенты в мелких фильтрах, поэтому использование IFFT немного избыточно.
На первом рисунке видно, что банки фильтров перекрываются, поэтому энергия соседних друг с другом распределена между двумя - DCT позволяет их декоррелировать. Помните, что это хорошее свойство, например, в случае гауссовых моделей смесей, где вы можете использовать диагональные ковариационные матрицы (без корреляции между другими коэффициентами) вместо полных (все коэффициенты коррелированы) - это сильно упрощает ситуацию.
Другим способом декорреляции коэффициентов частоты плавления может быть PCA (анализ основных компонентов), метод, используемый исключительно для этой цели. К счастью, было доказано, что DCT является очень хорошим приближением к PCA, когда речь идет о декорреляционных сигналах, что является еще одним преимуществом использования дискретного косинусного преобразования.
Немного литературы:
источник
Больше чем сглаживание DCT уменьшает количество измерений, необходимых для представления спектра. DCT хорош для уменьшения размерности, потому что он имеет тенденцию уплотнять большую часть энергии спектра в первые несколько коэффициентов.
источник
Это неверно Существует корреляция между логарифмическими спектральными величинами не только потому, что они перекрываются, но также и потому, что ни одна последовательность чисел не представляет «значащую» (как, например, встречающуюся в естественной речи и звуке) серию логрально-спектральных величин. «значимые» лог-спектральные величины имеют тенденцию быть довольно плавными, с общим уменьшением энергии на более высоких частотах и т. д. Можно сказать, что размерность пространства всех «значимых» лог-спектральных амплитудных векторов меньше 40 или какое количество полос вы используете; и DCT можно рассматривать как уменьшение размерности для отображения 40-канальных данных на это меньшее пространство.
DCT не делает никакого сглаживания. Вы видите сглаживание при восстановлении по данным DCT - сглаживание происходит из-за потери информации DCT и усечения коэффициента, который следует.
Но коэффициенты MFCC не хранят сглаженный спектр - он хранит последовательность некоррелированных коэффициентов DCT.
источник