Это правильная интерпретация шага DCT в расчете MFCC?


9

Это продолжение обсуждения здесь . Я бы прокомментировал там, но у меня нет 50 представителей, поэтому я задаю новый вопрос.

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

Было бы правильно сказать, что синяя линия на изображении ниже представляет спектр, представленный вектором логарифмических спектральных величин, а красная линия - это тот вектор, когда он был DCT-ified?

Лог-спектральные величины, полученные с помощью DCT (т. Е. MFCC), в сравнении с логарифмическими спектральными величинами ???


где я могу скачать ваш код для тестирования?
Авраам

Изображение ниже? Нет изображения в посте.
Эрик Платон

Ответы:


16

Позвольте мне начать с самого начала. Стандартный способ расчета кепстра заключается в следующем:

C(x(t))=F1[log(F[x(t)])]

В случае коэффициентов MFCC случай немного отличается, но все же похож.

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

введите описание изображения здесь

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

Следующим шагом является вычисление логарифма коэффициентов, полученных выше. Это связано с тем, что кепстр считается гомоморфным преобразованием, отделяющим сигнал от импульсного отклика голосового тракта и т. Д. Как?

Исходный речевой сигнал в основном свернут с импульсным откликом голосового тракта:s(t)h(t)

s^(t)=s(t)h(t)

В частотной области свертка представляет собой умножение спектров:

S^(f)=S(f)H(f)

Это можно разложить на две части, основываясь на следующем свойстве: .log(ab)=log(a)+log(b)

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

Последним шагом в определении кепстра будет обратное преобразование Фурье . Проблема в том, что у нас есть только наши логарифмические энергии, а не фазовая информация, поэтому после применения мы получаем комплексные коэффициенты - не очень элегантно для всех этих усилий быть компактным представлением. Хотя мы можем взять дискретное косинусное преобразование, которое является «упрощенной» версией FT, и получить действительные коэффициенты! Эта процедура может быть визуализирована как сопоставление косинусоидов с нашими логарифмическими коэффициентами. Возможно, вы помните, что кепстр также называется «спектр спектра»? Это самый шаг - мы ищем любую периодичность в наших коэффициентах огибающей логарифмической энергии.F1ifft

введите описание изображения здесь

Итак, теперь вы видите, что сейчас довольно сложно понять, как выглядел оригинальный спектр. Кроме того, мы обычно принимаем только первые 12 MFCC, поскольку более высокие описывают быстрые изменения логарифмов, что обычно ухудшает скорость распознавания. Итак, причины для проведения DCT были следующие:

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

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

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


Немного литературы:

Хёнг Гук Ким, Николас Моро, Томас Сикора - Аудио MPEG-7 и не только: индексация и поиск аудиоконтента


1
Почему мы не можем взять абсолютное значение комплексных чисел из IFFT? Если с комплексными числами гораздо сложнее иметь дело, почему мы когда-либо принимаем IFFT при расчете кепстра, а не просто делаем DCT? Спасибо за объяснение. Эта цифра была особенно полезна.
acannon828

1
@ acannon828: Пожалуйста, посмотрите последние 3 пункта моего отредактированного ответа. Я надеюсь, что теперь это все объясняет.
jojek

Отличный ответ .. Любая литература, которую вы можете приложить к этому.
Боб Берт

1
@BobBurt: Вот, пожалуйста!
jojek

Спасибо за книгу. Большинство вещей, кажется, объяснили в этом. Охватывает ли книга также теорию о голосовом тракте - я, кажется, не могу найти что-либо связанное с этим.
Боб Берт,

3

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


Спасибо. Это помогло мне понять, что означает @pichenettes под уменьшением размерности.
acannon828

3

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

Это неверно Существует корреляция между логарифмическими спектральными величинами не только потому, что они перекрываются, но также и потому, что ни одна последовательность чисел не представляет «значащую» (как, например, встречающуюся в естественной речи и звуке) серию логрально-спектральных величин. «значимые» лог-спектральные величины имеют тенденцию быть довольно плавными, с общим уменьшением энергии на более высоких частотах и ​​т. д. Можно сказать, что размерность пространства всех «значимых» лог-спектральных амплитудных векторов меньше 40 или какое количество полос вы используете; и DCT можно рассматривать как уменьшение размерности для отображения 40-канальных данных на это меньшее пространство.

По существу, DCT сглаживает представление спектра, заданное этими лог-спектральными величинами.

DCT не делает никакого сглаживания. Вы видите сглаживание при восстановлении по данным DCT - сглаживание происходит из-за потери информации DCT и усечения коэффициента, который следует.

Но коэффициенты MFCC не хранят сглаженный спектр - он хранит последовательность некоррелированных коэффициентов DCT.

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