Referencia del Archivo xfft4.c

Cálculo de potencia por bandas. Más...

#include "_xfft.h"

Dependencia gráfica adjunta para xfft4.c:

Ir al código fuente de este archivo.

Funciones

SPL_FLOAT Hz2Log (SPL_FLOAT f)
SPL_FLOAT Log2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Log10 (SPL_FLOAT f)
SPL_FLOAT Log102Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Mel (SPL_FLOAT f)
SPL_FLOAT Mel2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Bark (SPL_FLOAT f)
SPL_FLOAT Bark2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Bin (SPL_FLOAT f, SPL_FLOAT fres)
SPL_FLOAT Bin2Hz (SPL_FLOAT f, SPL_FLOAT fres)
SPL_FLOAT FbandScaleConvert (SPL_FLOAT f, XFBAND_SCALE from, XFBAND_SCALE to, SPL_FLOAT Fres)
 Conversión de escalas de frecuencia.
PRIVATE SPL_BOOL fband_calcfilters (pFBAND r)
 uso interno
PUBLIC pFBAND XAPI fband_construct (SPL_INT np, SPL_INT nband, XFBAND_FILTER filter, XFBAND_SCALE scale, SPL_FLOAT minfreq, SPL_FLOAT maxfreq, SPL_FLOAT fs, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Inicialización de _FBAND.
PUBLIC SPL_VOID XAPI fband_destruct (pFBAND r)
 Destructor para una estructura _FBAND.
PUBLIC SPL_BOOL XAPI fband_setwin (pFBAND r, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Modifica el tipo de enventanado.
PUBLIC SPL_BOOL XAPI fband_setnp (pFBAND r, SPL_INT np)
 Fija la longitud de los vectores de entrada.
PUBLIC SPL_BOOL XAPI fband_setnband (pFBAND r, SPL_INT nband)
 Fija el número de bandas.
PUBLIC SPL_BOOL XAPI fband_setfilters (pFBAND r, XFBAND_FILTER filter, XFBAND_SCALE scale)
 Cambia el tipo de filtrado.
PUBLIC SPL_BOOL XAPI fband_setfreqlimits (pFBAND r, SPL_FLOAT minfreq, SPL_FLOAT maxfreq)
 Cambia los límites de frecuencia.
PUBLIC SPL_BOOL XAPI fband_setminfreq (pFBAND r, SPL_FLOAT minfreq)
 Cambia el límite inferior de frecuencia.
PUBLIC SPL_BOOL XAPI fband_setmaxfreq (pFBAND r, SPL_FLOAT maxfreq)
 Cambia el límite superior de frecuencia.
PUBLIC SPL_BOOL XAPI fband_setsrate (pFBAND r, SPL_FLOAT srate)
 Cambia la frecuencia de muestreo de las tramas.
PUBLIC SPL_INT XAPI fband_getnp (pFBAND r)
 Devuelve el número de puntos de los vectores de entrada.
PUBLIC SPL_INT XAPI fband_getnband (pFBAND r)
 Devuelve el número de bandas.
PUBLIC XFFT_WIN XAPI fband_getwin (pFBAND r)
 Devuelve el tipo de enventanado utilizado.
PUBLIC SPL_pFLOAT XAPI fband_getwinvec (pFBAND r)
 Devuelve el vector que contiene la ventana.
PUBLIC XFFT_WIN_FUNC XAPI fband_getwinfunc (pFBAND r)
 Devuelve el puntero a la función de enventanado suministrada por el usuario.
PUBLIC SPL_pFLOAT XAPI fband_getpband (pFBAND r)
 Acceso al vector de salida.
PUBLIC SPL_FLOAT XAPI fband_getminfreq (pFBAND r)
 Acceso al límite inferior de frecuencia.
PUBLIC SPL_FLOAT XAPI fband_getmaxfreq (pFBAND r)
 Acceso al límite superior de frecuencia.
PUBLIC SPL_FLOAT XAPI fband_getsrate (pFBAND r)
 Acceso a la frecuencia de muestreo de las secuencias.
PUBLIC SPL_VOID XAPI fband_dofband (pFBAND r)
 uso interno
PUBLIC SPL_VOID XAPI fband_fband (pFBAND r, SPL_pFLOAT invec)
 Calcula la potencia por bandas de una secuencia.
PUBLIC SPL_VOID XAPI fband_fband_i (pFBAND r, SPL_pINT invec)
 Calcula la potencia por bandas de una secuencia real de valores enteros.
PUBLIC SPL_VOID XAPI fband_fband_i16 (pFBAND r, pINT16 invec)
 Calcula la potencia por bandas de una secuencia real de valores INT16.
PUBLIC SPL_VOID XAPI fband_fband_i32 (pFBAND r, pINT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores INT32.
PUBLIC SPL_VOID XAPI fband_fband_u32 (pFBAND r, pUINT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores UINT32.
PUBLIC SPL_VOID XAPI fband_fband_f32 (pFBAND r, pFLOAT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores FLOAT32.
PUBLIC SPL_VOID API fband2mfcc (pFBAND r, SPL_pFLOAT mfcc, SPL_INT nceps, SPL_INT lift)
 Función para el cálculo de coeficientes MFCC a partir de FBAND.


Descripción detallada

Copyright: 2010 - Grupo de Voz (DAET) ETSII/IT-Bilbao
Autor:
Iker Luengo
Versión:
1.0.0
Fecha:
19/02/10
Funciones para el calculo eficiente y reiterado de potencia por bandas.

Los coeficientes por bandas se definen como la potencia de señal que cae dentro de un banco de filtros. La forma y escala de estos filtros viene determinada por valores tipo XFBAND_FILTER y XFBAND_SCALE respectivamente.

La potencia de cada banda se estima mediante el cálculo de la FFT de la secuencia y un posterior filtrado en frecuencia.

Definición en el archivo xfft4.c.


Documentación de las funciones

SPL_FLOAT Hz2Log ( SPL_FLOAT  f  ) 

Definición en la línea 33 del archivo xfft4.c.

SPL_FLOAT Log2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 36 del archivo xfft4.c.

SPL_FLOAT Hz2Log10 ( SPL_FLOAT  f  ) 

Definición en la línea 39 del archivo xfft4.c.

SPL_FLOAT Log102Hz ( SPL_FLOAT  f  ) 

Definición en la línea 42 del archivo xfft4.c.

SPL_FLOAT Hz2Mel ( SPL_FLOAT  f  ) 

Definición en la línea 45 del archivo xfft4.c.

SPL_FLOAT Mel2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 48 del archivo xfft4.c.

SPL_FLOAT Hz2Bark ( SPL_FLOAT  f  ) 

Definición en la línea 51 del archivo xfft4.c.

SPL_FLOAT Bark2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 59 del archivo xfft4.c.

SPL_FLOAT Hz2Bin ( SPL_FLOAT  f,
SPL_FLOAT  fres 
)

Definición en la línea 66 del archivo xfft4.c.

SPL_FLOAT Bin2Hz ( SPL_FLOAT  f,
SPL_FLOAT  fres 
)

Definición en la línea 69 del archivo xfft4.c.

SPL_FLOAT FbandScaleConvert ( SPL_FLOAT  f,
XFBAND_SCALE  from,
XFBAND_SCALE  to,
SPL_FLOAT  Fres 
)

Permite convertir de forma sencilla entre las diferentes escalas de frecuencia definidas por XFBAND_SCALE: Frecuencias lineales, en escala logarítmica, escala Mel, bins de un análisis FFT...

Parámetros:
f Valor a convertir
from Escala a la que está el valor f
to Escala a la que se quiere convertir
Fres Resolución frecuencial del análisis FFT (sólo para los casos en los que from o to sean XFBAND_SCALE_BIN. Para cualquier otro caso, poner a 0)
Devuelve:
El valor f convertido a la escala to

Definición en la línea 85 del archivo xfft4.c.

PRIVATE SPL_BOOL fband_calcfilters ( pFBAND  r  ) 

Definición en la línea 143 del archivo xfft4.c.

PUBLIC pFBAND XAPI fband_construct ( SPL_INT  np,
SPL_INT  nband,
XFBAND_FILTER  filter,
XFBAND_SCALE  scale,
SPL_FLOAT  minfreq,
SPL_FLOAT  maxfreq,
SPL_FLOAT  fs,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Inicializa una estructura _FBAND para el cálculo de potencia por bandas

Parámetros:
np Número de puntos del vector de entrada (del que se quiere calcular la potencia por bandas). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena automáticamente con ceros
nband Número de bandas. Ha de ser mayor acero
filter Forma del filtro de frecuencia a aplicar
scale Escala en la que se deben distribuir las bandas. En escala lineal (XFBAND_SCALE_LIN) todos los filtros tienen el mismo ancho de banda y están equiespaciados. En otras escalas los filtros tienen el mismo ancho de banda y están equiespaciados si las frecuencias se miden en la escala indicada. Esto significa que, vistos en Herzios, su ancho de banda y su posición varía con la frecuencia.
minfreq Frecuencia mínima a considerar (eh Hz). Los nband filtros se distribuyen entre minfreq y maxfreq.
maxfreq Frecuencia máxima a considerar (eh Hz). Los nband filtros se distribuyen entre minfreq y maxfreq. Si se deja a 0 se considera la frecuencia de Nyquist=fs/2
fs Frecuencia de muestreo de la señal de entrada. Necesario para poder calcular a qué frecuencia corresponde cada bin FFT.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FBAND. Este puntero deberá utilizarse como parámetro para el resto de las funciones fband_???(). Devuelve NULL si la inicialización falla

Definición en la línea 282 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_destruct ( pFBAND  r  ) 

Destruye una estructura _FBAND. Es necesario llamar a esta función después de haber llamado a fband_construct(), una vez se ha terminado de calcular las potencias por banda

Parámetros:
r puntero a la estructura que se quiere destruir
Devuelve:
-

Definición en la línea 346 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setwin ( pFBAND  r,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Modifica el tipo de enventanado a utilizar. Los tipos de ventanas están definidos en xfft.h (XFFT_WIN). Si se indica ventana XFFT_WIN_NONE o XFFT_WIN_RECT, se usa ventana rectangular. Si se indica XFFT_WIN_USER, entonces se utilizara la ventana obtenida a traves de la funcion que el usuario suministra. En xfft.h se explica el prototipo que debe seguir esta funcion.

La ventana se maneja de forma optimizada: aunque se active y desactive sucesivamente no se hace ni una cuenta mientras no se cambie su longitud o se cambie de tipo de ventana.

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
SPL_TRUE si todo ha ido bien. SPLA_FALSE si se ha producido un error, en cuyo caso, la ventana se desconecta y se utiliza ventana rectangular.

Definición en la línea 388 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setnp ( pFBAND  r,
SPL_INT  np 
)

Permite modificar el número de puntos de los vectores de entrada (aquellos cuya potencia por bandas se quiere calcular).

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
np Número de puntos de los vectores de entrada. Ha de ser mayor que cero, pero no forzosamente potencia de dos.
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 410 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setnband ( pFBAND  r,
SPL_INT  nband 
)

Permite modificar el número de bandas de frecuencia

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
nband Número de bandas. Ha de ser mayor que cero.
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 440 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setfilters ( pFBAND  r,
XFBAND_FILTER  filter,
XFBAND_SCALE  scale 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
filter Forma del filtro que se quiere aplicar
scale Escala en la que calcular los filtros
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 464 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setfreqlimits ( pFBAND  r,
SPL_FLOAT  minfreq,
SPL_FLOAT  maxfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
minfreq Frecuencia mínima a considerar (eh Hz).
maxfreq Frecuencia máxima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 486 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setminfreq ( pFBAND  r,
SPL_FLOAT  minfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
minfreq Frecuencia mínima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 524 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setmaxfreq ( pFBAND  r,
SPL_FLOAT  maxfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
maxfreq Frecuencia máxima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 542 del archivo xfft4.c.

PUBLIC SPL_BOOL XAPI fband_setsrate ( pFBAND  r,
SPL_FLOAT  srate 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
maxfreq Frecuencia de muestreo (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 561 del archivo xfft4.c.

PUBLIC SPL_INT XAPI fband_getnp ( pFBAND  r  ) 

Permite conocer el número mínimo de puntos que han de tener los vectores de entrada (aquellos cuya potencia por bandas se quiere calcular).

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Número de puntos de los vectores de entrada

Definición en la línea 585 del archivo xfft4.c.

PUBLIC SPL_INT XAPI fband_getnband ( pFBAND  r  ) 

Permite conocer el número de bandas que se están utilizando. Esto coincide con el número de puntos del vector de salida

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Número de bandas

Definición en la línea 602 del archivo xfft4.c.

PUBLIC XFFT_WIN XAPI fband_getwin ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Tipo de ventana (los tipos están definidos en xfft.h)

Definición en la línea 617 del archivo xfft4.c.

PUBLIC SPL_pFLOAT XAPI fband_getwinvec ( pFBAND  r  ) 

Permite acceder al vector que contiene la ventana utilizada. La longitud de esta ventana viene dada por fband_getnp().

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero al vector que contiene la ventana. En caso de que no se utilice ventana, se devuelve NULL.

Definición en la línea 635 del archivo xfft4.c.

PUBLIC XFFT_WIN_FUNC XAPI fband_getwinfunc ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero a la función de enventanado suministrada por el usuario

Definición en la línea 649 del archivo xfft4.c.

PUBLIC SPL_pFLOAT XAPI fband_getpband ( pFBAND  r  ) 

Permite acceder al vector de la potencia por bandas calculada. El usuario debe haber calculado una potencia por bandas previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

El vector devuelto tiene fband_getvecnp() puntos

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero al vector de potencias por banda

Definición en la línea 670 del archivo xfft4.c.

PUBLIC SPL_FLOAT XAPI fband_getminfreq ( pFBAND  r  ) 

Permite conocer el límite inferior de frecuencia. La potencia por bandas se está calculando con fband_getvecnp() bandas situadas entre fband_getminfreq() y fband_getmaxfreq().

Devuelve la verdadera frecuencia inferior, que puede verse modificada con respecto a la indicada en fband_construct() o fband_setfreqlimits() debido a la resolución frecuencial de la FFT.

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Límite inferior de la frecuencia

Definición en la línea 692 del archivo xfft4.c.

PUBLIC SPL_FLOAT XAPI fband_getmaxfreq ( pFBAND  r  ) 

Permite conocer el límite superior de frecuencia. La potencia por bandas se está calculando con fband_getvecnp() bandas situadas entre fband_getminfreq() y fband_getmaxfreq().

Devuelve la verdadera frecuencia superior, que puede verse modificada con respecto a la indicada en fband_construct() o fband_setfreqlimits() debido a la resolución frecuencial de la FFT.

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Límite superior de la frecuencia

Definición en la línea 714 del archivo xfft4.c.

PUBLIC SPL_FLOAT XAPI fband_getsrate ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Frecuencia de muestreo en Hz

Definición en la línea 729 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_dofband ( pFBAND  r  ) 

Definición en la línea 743 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband ( pFBAND  r,
SPL_pFLOAT  invec 
)

Calcula la potencia por bandas de una secuencia real de valores flotantes. Esta potencia por bandas puede recuperarse mediante fband_getpband()

Previamente se ha tenido que construir la estructura FBAND mediante fband_construct().

Parámetros:
r Puntero a la estructura _FBAND.
invec Vector que contiene la secuencia de valores flotantes cuya potencia por bandas se quiere calcular. Debe tener fband_getnp() puntos.
Devuelve:
-

Definición en la línea 792 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband_i ( pFBAND  r,
SPL_pINT  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 814 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband_i16 ( pFBAND  r,
pINT16  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 835 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband_i32 ( pFBAND  r,
pINT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 857 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband_u32 ( pFBAND  r,
pUINT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 878 del archivo xfft4.c.

PUBLIC SPL_VOID XAPI fband_fband_f32 ( pFBAND  r,
pFLOAT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 899 del archivo xfft4.c.

PUBLIC SPL_VOID API fband2mfcc ( pFBAND  r,
SPL_pFLOAT  mfcc,
SPL_INT  nceps,
SPL_INT  lift 
)

Esta función aplica una DCT discreta de nceps puntos al vector de potencia por bandas contenido en r, lo que proporciona coeficientes mel cepstrum.

Parámetros:
r Puntero a la estructura _FBAND con la potencia por bandas. La potencia por bandas ya debe estar calculada (se debe haber llamado a fband_fband).
mfcc Puntero al buffer que va a recoger los coeficientes MFCC. Debe tener nceps puntos
nceps Número de coeficientes a calcular. Es igual al orden de la DCT a aplicar.
lift Coeficiente de liftering. 0 para no aplicar liftering

Definición en la línea 930 del archivo xfft4.c.


Generado el Thu Mar 11 18:59:27 2010 para AhoLib por  doxygen 1.5.6