¿Cuál es la diferencia entre una transformada de Fourier y una transformada de coseno?


75

En el reconocimiento de voz, el front end generalmente procesa la señal para permitir la extracción de características del flujo de audio. Una transformada discreta de Fourier (DFT) se aplica dos veces en este proceso. La primera vez es después de la ventana; después de esto se aplica Mel binning y luego otra transformada de Fourier.

Sin embargo, he notado que es común en los reconocedores de voz (el front-end predeterminado en CMU Sphinx , por ejemplo) usar una transformada discreta de coseno (DCT) en lugar de un DFT para la segunda operación. ¿Cuál es la diferencia entre estas dos operaciones? ¿Por qué harías DFT la primera vez y luego un DCT la segunda vez?


Varios han explicado la diferencia entre los dos procesos. ¿Alguien sabe por qué el dft y el dct se utilizan en diferentes momentos en el reconocimiento de voz? ¿La salida del primer dft se considera simétrica? ¿O la compresión del dct es adecuada para empaquetar más información en los primeros 13 puntos (el procesamiento de voz generalmente solo usa esos)?
Nate Glenn

¿Su pregunta está relacionada con el cepstrum de frecuencia Mel , que se hizo en otra pregunta ?
rwong

Mi pregunta fue de 2 partes: la diferencia entre DCT y DFT, y por qué DCT se usa a menudo para el procesamiento de señales después de aplicar DFT y Mel Binning, en lugar de otro DFT.
Nate Glenn

¿Por qué en el procesamiento de imágenes, no usamos transformada senoidal discreta en lugar de transformada coseno discreta?

Hola, Rimondo, esta es una buena pregunta, pero la publicaste como respuesta. Debe crear una nueva pregunta para formularla.
Nate Glenn

Respuestas:


48

La Transformada discreta de Fourier (DFT) y la Transformada discreta de coseno (DCT) realizan funciones similares: ambas descomponen un vector de tiempo discreto de longitud finita en una suma de funciones básicas escaladas y desplazadas. La diferencia entre los dos es el tipo de función base utilizada por cada transformación; el DFT usa un conjunto de funciones exponenciales complejas relacionadas armónicamente, mientras que el DCT usa solo funciones de coseno (de valor real).

El DFT se usa ampliamente para aplicaciones de análisis espectral general que se abren camino en una variedad de campos. También se usa como un bloque de construcción para técnicas que aprovechan las propiedades de la representación del dominio de frecuencia de las señales, como los algoritmos de convolución rápida de superposición-guardado y superposición-adición.

El DCT se usa con frecuencia en aplicaciones de compresión de datos con pérdida, como el formato de imagen JPEG. La propiedad del DCT que lo hace bastante adecuado para la compresión es su alto grado de "compactación espectral"; a nivel cualitativo, la representación DCT de una señal tiende a concentrar más su energía en un pequeño número de coeficientes en comparación con otras transformaciones como el DFT. Esto es deseable para un algoritmo de compresión; Si puede representar aproximadamente la señal original (tiempo o dominio espacial) utilizando un conjunto relativamente pequeño de coeficientes DCT, entonces puede reducir su requisito de almacenamiento de datos almacenando solo las salidas DCT que contienen cantidades significativas de energía.


44
@JasonR "a nivel cualitativo, la representación DCT de una señal tiende a concentrar más su energía en una pequeña cantidad de coeficientes en comparación con otras transformaciones como el DFT". Hmmmm ... No estoy seguro de estar completamente de acuerdo con usted en esto, aunque solo sea porque el DFT ya incluye un coseno sobre el que se proyectará una señal, ¿cómo puede un DFT no mostrar tanta fuerza de esa proyección? y una lata DCT? Gracias.
Spacey

3
Esta es una característica muy conocida de DCT, que explica su uso en tantos algoritmos de compresión. Creo que tiene que ver con las condiciones de contorno asumidas por el DCT en los bordes de la señal, que son diferentes de las DFT.
Jason R

23

Descubrí que algunos de los detalles en el wiki de DCT (también compartido por Pearsonartphoto) señalan que el DCT es muy adecuado para aplicaciones de compresión. El final de la sección Descripción general informal es útil (la negrita es mía).

En particular, es bien sabido que cualquier discontinuidad en una función reduce la tasa de convergencia de la serie de Fourier ... cuanto más suave es la función, menos términos en su DFT o DCT se requieren para representarla con precisión, y más se puede comprimir ... Sin embargo, la periodicidad implícita de la DFT significa que las discontinuidades generalmente ocurren en los límites ... En contraste, un DCT donde ambos límites incluso siempre producen una extensión continua en los límites. Esta es la razón por la cual los DCT ... generalmente funcionan mejor para la compresión de señal que los DFT y DST. En la práctica, generalmente se prefiere un DCT tipo II para tales aplicaciones, en parte por razones de conveniencia computacional.

Además, puede encontrar que esta respuesta también es útil (de math.stackexchange.com). Afirma:

Las transformaciones de coseno no son más que atajos para calcular la transformación de Fourier de una secuencia con simetría especial (por ejemplo, si la secuencia representa muestras de una función par).


19

La razón por la que ve la transformación de Fourier aplicada dos veces en el proceso de extracción de características es que las características se basan en un concepto llamado cepstrum. Cepstrum es un juego sobre el espectro de palabras: esencialmente, la idea es transformar una señal en un dominio de frecuencia mediante la transformación de Fourier y luego realizar otra transformación como si el espectro de frecuencia fuera una señal.

Mientras que el espectro de frecuencia describe la amplitud y la fase de cada banda de frecuencia, cepstrum caracteriza las variaciones entre las bandas de frecuencia. Se encuentra que las características derivadas del cepstrum describen mejor el habla que las características tomadas directamente del espectro de frecuencia.

Hay un par de definiciones ligeramente diferentes. Originalmente, la transformación cepstrum se definió como la transformación de Fourier -> logaritmo complejo -> transformación de Fourier [1]. Otra definición es la transformada de Fourier -> logaritmo complejo -> transformada inversa de Fourier [2]. La motivación para la última definición está en su capacidad de separar señales convolucionadas (el habla humana a menudo se modela como la convolución de una excitación y un tracto vocal).

Una opción popular que se ha demostrado que funciona bien en los sistemas de reconocimiento de voz es aplicar un banco de filtros no lineal en el dominio de la frecuencia (el binning de mel al que se refiere) [3]. El algoritmo particular se define como transformada de Fourier -> cuadrado de magnitud -> banco de filtros mel -> logaritmo real -> transformada discreta de coseno.

Aquí se puede seleccionar DCT como la segunda transformación, porque para la entrada de valor real, la parte real de la DFT es un tipo de DCT. La razón por la que se prefiere DCT es que la salida está aproximadamente relacionada con la decoración. Las características relacionadas con la decoración se pueden modelar eficientemente como una distribución gaussiana con una matriz de covarianza diagonal.

[1] Bogert, B., Healy, M. y Tukey, J. (1963). El análisis de quefrency alan de series temporales para ecos: cepstrum, pseudo-autocovarianza, cross-cepstrum y saphe cracking. En Actas del simposio sobre análisis de series temporales, p. 209-243.

[2] Oppenheim, A. y Schafer, R. (1968). Análisis homomórfico del habla. En IEEE Transactions on Audio and Electroacoustics 16, p. 221-226.

[3] Davis, S. y Mermelstein, P. (1980). Comparación de representaciones paramétricas para el reconocimiento de palabras monosilábicas en oraciones continuamente habladas. En IEEE Transactions on Acoustics, Speech and Signal Processing 28, p. 357-366.


Re. PCA en extracción de características: un PCA verdadero no tendría sentido aquí porque dependería de los datos. Si calcula el PCA de los coeficientes de registro de frecuencia de mel de un conjunto de datos, y luego de otro, encontrará una base diferente, lo que significaría que si se utilizara PCA en el proceso de extracción de características, las características extraídas en una señal no t "significa lo mismo" que las características extraídas en la otra señal. Ahora haga este experimento: calcule la PCA en un conjunto de log Mel coef. extraído de 10 horas del audio más diverso. La base que encontrará es asombrosamente similar a la base de DCT.
pichenettes

3
En otras palabras: para ser útil en la aplicación de reconocimiento, la transformación de descorrelación al final del proceso de extracción de características debe ser una especie de compromiso adecuado para el "audio" en general, en lugar de los datos específicos. ¡Resulta que la base DCT está muy cerca de lo que obtienes cuando ejecutas una PCA en un gran conjunto de audio!
pichenettes

Recientemente vi que se usaba PCA al final del proceso de extracción de características en un sistema de voz experimental. Ese sistema calculó la proyección de PCA a partir de los datos de entrenamiento y utilizó la misma base después.
Seppo Enarvi

8

La diferencia entre una transformación discreta de Fourier y una transformación discreta de coseno es que el DCT usa solo números reales, mientras que una transformación de Fourier puede usar números complejos. El uso más común de un DCT es la compresión. Es equivalente a una FFT de dos veces la longitud.


1
Sin embargo, es posible concebir el DCT / DST de una secuencia compleja, donde uno toma por separado el DCT / DST de las partes real e imaginaria.

Entonces, ¿podemos decir que si calculo DFT obtengo DCT gratis, todo lo que necesito hacer es eliminar las partes imaginarias del vector? Por favor corrígeme si estoy equivocado.
Marek

1
Es un poco más complejo que eso, pero es posible convertir entre una FFT y DCT con bastante facilidad.
PearsonArtPhoto