Como mencionó Brian, hay algo que se llama FFT (transformada rápida de Fourier). Toma un fragmento de tiempo de la señal y devuelve la amplitud de los componentes de frecuencia en grupos de frecuencia y ancho de banda predeterminados. El algoritmo FFT es una transformación de Fourier general optimizada computacionalmente que opera con una potencia de dos grupos de frecuencias distribuidos linealmente desde 0 hasta el extremo superior del rango de frecuencia para el que está configurado.
Una FFT es computacionalmente costosa y solo se puede realizar en fragmentos fijos de la señal del dominio del tiempo. Si desea obtener un contenido de frecuencia general, entonces puede ser apropiado. Si solo desea detectar la presencia de un pequeño número de frecuencias específicas y conocidas, entonces probablemente no sea apropiado. Un ejemplo de esto último sería la decodificación DTMF (tono de toque) ya que solo hay 8 frecuencias específicas y generalmente desea realizar la decodificación de tonos de manera continua, y las frecuencias están bastante separadas entre sí.
Para detectar la amplitud de una frecuencia específica en una señal compuesta, multiplique esa señal por el seno y el coseno de la frecuencia deseada. Filtro de paso bajo cada una de estas dos señales de producto por separado. El ancho de banda de este filtro es la mitad del ancho de banda en el que se detectará la frecuencia de interés. Otra forma de decirlo es que este es el ancho de banda de la salida de amplitud resultante. Ahora cuadre las dos señales filtradas de paso bajo y súmelas. El resultado es el cuadrado de la amplitud de la señal de interés. Puede ver dónde lo he simulado con tres tonos DTMF adyacentes:
La señal de entrada fue de tres frecuencias DTMF adyacentes durante 50 ms cada una con 50 ms de separación. La frecuencia de detección se configuró para coincidir con la ráfaga central. La línea azul es la señal de amplitud al cuadrado resultante. Las constantes de tiempo del filtro de paso bajo se ajustaron para rechazar las frecuencias adyacentes, pero aún así responden lo suficientemente bien dentro de los 50 ms (la longitud de tono DTMF mínima válida).
Si necesita una amplitud verdadera, entonces tendría que tomar la raíz cuadrada del resultado que se muestra aquí. Para detectar simplemente la presencia de una frecuencia particular, la magnitud al cuadrado es lo suficientemente buena. Para otras aplicaciones, la verdadera magnitud puede ser necesaria.