¿Qué metodología utilizar para la discriminación de diferentes tonos (musicales)?

12

Estoy tratando de investigar y descubrir la mejor manera de atacar este problema. Se extiende entre el procesamiento de música, el procesamiento de imágenes y el procesamiento de señales, por lo que hay una infinidad de formas de verlo. Quería preguntar sobre las mejores formas de abordarlo, ya que lo que podría parecer complejo en el dominio sig-proc puro podría ser simple (y ya resuelto) por personas que procesan imágenes o música. De todos modos, el problema es el siguiente:ingrese la descripción de la imagen aquí

Si perdonas mi dibujo del problema a mano, podemos ver lo siguiente:

De la figura anterior, tengo 3 'tipos' diferentes de señales. El primero es un pulso que aumenta la frecuencia de a , y luego se repite. Tiene una duración de pulso específica y un tiempo de repetición de pulso específico.f 4f1f4

El segundo solo existe en , pero tiene una duración de pulso más corta y una frecuencia de repetición de pulso más rápida.f1

Finalmente, el tercero es simplemente un tono en .f1

El problema es, de qué manera abordo este problema, de modo que pueda escribir un clasificador que pueda discriminar entre señal-1, señal-2 y señal-3. Es decir, si alimenta una de las señales, debería poder decirle que esta señal es regular. ¿Qué mejor clasificador me daría una matriz de confusión diagonal?

Algún contexto adicional y lo que he estado pensando hasta ahora:

Como dije, esto se extiende a varios campos. Quería preguntar qué metodologías podrían existir antes de sentarme e ir a la guerra con esto. No quiero reinventar inadvertidamente la rueda. Aquí hay algunos pensamientos que he tenido mirando desde diferentes puntos de vista.

Punto de vista del procesamiento de la señal: Una cosa que he visto fue hacer un análisis cepstral y luego posiblemente usar el ancho de banda de Gabor del cepstrum en la señal discriminante-3 de los otros 2, y luego medir el pico más alto del cepstrum en la señal discriminante- 1 de la señal-2. Esa es mi solución de trabajo actual de procesamiento de señales.

Punto de vista del procesamiento de imágenes: Aquí estoy pensando que, de hecho, PUEDO crear imágenes frente a los espectrogramas, ¿tal vez pueda aprovechar algo de ese campo? No estoy íntimamente familiarizado con esta parte, pero ¿qué pasa con la detección de una 'línea' usando la Transformación de Hough , y luego de alguna manera 'contando' las líneas (¿y si no son líneas y gotas?) Y yendo desde allí? Por supuesto, en cualquier momento cuando tomo un espectrograma, todos los pulsos que ves pueden desplazarse a lo largo del eje del tiempo, entonces, ¿importaría esto? No estoy seguro...

Punto de vista del procesamiento de música: un subconjunto de procesamiento de señal para estar seguro, pero se me ocurre que la señal-1 tiene una cierta calidad, tal vez repetitiva (¿musical?) Que las personas en el proceso de música ven todo el tiempo y ya han resuelto tal vez instrumentos discriminatorios? No estoy seguro, pero la idea se me ocurrió. ¿Quizás este punto de vista es la mejor manera de verlo, tomando una parte del dominio del tiempo y sacando esos pasos? Una vez más, este no es mi campo, pero sospecho que esto es algo que se ha visto antes ... ¿podemos ver las 3 señales como diferentes tipos de instrumentos musicales?

También debería agregar que tengo una cantidad decente de datos de entrenamiento, por lo que tal vez usar algunos de esos métodos podría permitirme hacer una extracción de características con la que luego pueda utilizar K-Nearest Neighbour , pero eso es solo un pensamiento.

De todos modos, aquí es donde estoy parado ahora, cualquier ayuda es apreciada.

¡Gracias!

EDICIONES BASADAS EN COMENTARIOS:

  • Sí, , , , son todos conocidos de antemano. (Alguna variación pero muy poca. Por ejemplo, supongamos que sabemos que = 400 Khz, pero podría llegar a 401.32 Khz. Sin embargo, la distancia a es alta, por lo que podría estar a 500 Khz en comparación.) Señal-1 SIEMPRE pisará esas 4 frecuencias conocidas. La señal 2 SIEMPRE tendrá 1 frecuencia.f 2 f 3 f 4 f 1 f 2 f 2f1f2f3f4f1f2f2

  • Las tasas de repetición de pulso y las longitudes de pulso de las tres clases de señales también se conocen de antemano. (De nuevo alguna variación pero muy poca). Sin embargo, algunas advertencias, las tasas de repetición de pulso y las longitudes de pulso de las señales 1 y 2 siempre se conocen, pero son un rango. Afortunadamente, esos rangos no se superponen en absoluto.

  • La entrada es una serie temporal continua que llega en tiempo real, pero podemos suponer que las señales 1, 2 y 3 son mutuamente excluyentes, ya que solo existe una de ellas en cualquier momento. También tenemos mucha flexibilidad sobre la cantidad de tiempo que lleva procesar en cualquier momento.

  • Los datos pueden ser ruidosos, sí, y no podría ser tonos espurios, etc, en las bandas no en nuestra conocida , , , . Esto es muy posible. Sin embargo, podemos suponer una SNR media alta solo para 'comenzar' el problema.f 2 f 3 f 4f1f2f3f4

Spacey
fuente
¿Cuál será tu aportación? 1 / ¿Una secuencia continua en la que desea segregar las ocurrencias de la señal 1/2/3 (segmentación + problema de clasificación) o 2 / muestras individuales con un solo tipo de señal que necesita clasificar en las categorías 1/2/3? Describe varias características de las señales: PRT de la señal 1; frecuencia de repetición de la señal 2; frecuencia de señal 3; valores de f1 / f2 / f3 / f4. ¿Son estos parámetros conocidos de antemano o variables? Finalmente, en caso de que su entrada tenga varias ocurrencias de esas señales para segmentar, ¿cuál es la duración típica de un segmento?
pichenettes
Otra pregunta: de sus dibujos parece que se trata de tonos puros (sin armónicos y sin ruido). ¿Es ese el caso, o los datos son mucho más sucios que sus dibujos?
pichenettes
@pichenettes Gracias, agregué la información que necesitas en una edición.
Spacey
Se agradecería un seguimiento de su progreso y soluciones a esta pregunta. El análisis depende principalmente de la variabilidad temporal de los sonidos estudiados. si son más rápidos que una ventana fft, digamos que bajo 256 muestras necesitará espectrogramas de alta resolución. Cuanto más preciso sea el espectrograma, más podrá ver información detallada en sus sonidos. FFT probablemente esté bien. Después de eso, la pregunta es simplemente un caso de agregar operadores lógicos para clasificar los sonidos usando rutinas simples de análisis de patrones. analizar la duración de los pulsos, la distancia entre ellos, la naturaleza cordal del conjunto, etc.
com.prehensible
es simple encontrar el armónico principal simplemente verificando el valor máximo de cada línea x, y luego termina con un gráfico para analizar usando la programación de análisis de firma de patrón, que progresa de la misma manera que si los estuviera analizando en retórica, solo dibuje reglas de los mejores diferenciadores que utilice conscientemente al comparar y clasificar progresiones numéricas.
com.prehensible

Respuestas:

7

Paso 1

Calcule el STFT de la señal usando un tamaño de trama menor que la duración del pulso. Supongo que este tamaño de trama seguirá ofreciendo una discriminación de frecuencia suficiente entre f1, f2, f3 y f4. es el índice de cuadro, es el índice del contenedor FFT.S(m,k)mk

Paso 2

Para cada cuadro STFT, calcule la frecuencia fundamental dominante utilizando algo como YIN, junto con un indicador de "confianza de tono", como la profundidad de la "caída" de DMF calculada por YIN.

Llamemos del f0 dominante estimado en el marco y la confianza de tono detectado en el marco .f(m)mv(m)m

Tenga en cuenta que si sus datos no son tan ruidosos, puede escapar utilizando la autocorrelación como estimador de tono y la relación del pico secundario más grande de la autocorrelación a como indicador de confianza de tono. Sin embargo, YIN es barato de implementar.r0

También puede calcular la energía de señal total de la trama FFT .e(m)m

Paso 3

Considere una ventana deslizante de marcos STFT. se elige para que sea más grande que el tiempo de repetición de pulso y de 5 a 10 veces más pequeño que la longitud típica de un segmento de señal (por ejemplo, si la aparición de una señal dura aproximadamente 10 segundos y el tamaño de su trama STFT es de 20 ms, puede elegir ).MMM=50

Extraiga las siguientes características:

  • σf(k) es la desviación estándar de la secuencia(f(m))m[kM,k+M],v(m)>τ
  • σv(k) es la desviación estándar de la secuencia(v(m))m[kM,k+M]
  • σe(k) es la desviación estándar de la secuencia(e(m))m[kM,k+M]

Intuitivamente, mide la estabilidad de frecuencia del componente de tono principal de la señal, mide la variabilidad del "tono" de la señal y la variabilidad de la amplitud de la señal.σfσvσe

Estas serán las características para basar su detección. Las señales de tipo 1 tendrán un alto (tono variable) y un moderado y (intensidad de señal de tono constante). Las señales de tipo 2 tendrán una baja (tono constante) y una alta y (fuerza variable). Las señales de tipo 3 tendrán una baja (tono constante) y una baja y (fuerza constante).σfσvσeσfσvσeσfσvσe

Calcule estas 3 características en sus datos de entrenamiento y entrene a un ingenuo clasificador bayesiano (solo un montón de distribuciones gaussianas). Dependiendo de qué tan buenos sean sus datos, incluso podría salirse con la suya con clasificadores y usar umbrales definidos a mano en las características, aunque no lo recomiendo.

Etapa 4

Para procesar un flujo de datos entrante, calcule el STFT, calcule las características y clasifique cada ventana de cuadros STFT.M

Si sus datos y clasificador son buenos, verá algo como esto:

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Esto delimita bastante bien el tiempo de inicio y finalización, y el tipo de cada señal.

Si sus datos son ruidosos, debe haber tramas falsas mal clasificadas:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

Si ve mucha basura como en el segundo caso, use un filtro de modo en los datos sobre vecindarios de 3 o 5 detecciones; o usar HMMs.

Llevar el mensaje a casa

En lo que desea basar su detección no es en una característica espectral, sino en estadísticas temporales agregadas de características espectrales en ventanas que están en la misma escala que las duraciones de su señal. Este problema realmente requiere un procesamiento en dos escalas de tiempo: el marco STFT en el que calcula propiedades de señal muy locales (amplitud, tono dominante, intensidad de tono) y ventanas más grandes sobre las cuales puede observar la variabilidad temporal de esas propiedades de señal.

pichenettes
fuente
Tenga en cuenta que también podría hacerlo con el estilo de reconocimiento de voz si desea aprovechar HTK o similar ... Modelo acústico: 4 teléfonos P1, P2, P3, P4 (tono en f1, tono en f2, tono en f3, tono en f4 ) + 1 símbolo S para silencio. 1 o 2 gaussianos por teléfono. Modelo de palabra W1 para señal 1: (P1 S P2 S P3 S P4 S) +. Modelo de palabra W2 para señal 2: (P1 S) +. Modelo de palabra W3 para señal 3: (P1) +. Modelo de oración: (W1 | W2 | W3) *. La única advertencia es que si usa una caja de herramientas de reconocimiento de voz, tendrá que ajustar su interfaz de extracción de características ya que los MFCC son demasiado bajos en resolución y agnósticos de tono para distinguir f1 / f2 / f3 / f4.
pichenettes
@pichenettes Gracias pichenettes, esa es una muy buena respuesta. Sin embargo, tengo un par de seguimientos: 1) ¿Qué es 'YIN' que mencionas y qué es 'DMF'? No pude encontrar nada en ellos a través de google. 2) ¿Qué es exactamente la "confianza de tono" como medida? 3) Menciona que puede usar la autocorrelación para encontrar la confianza de tono: ¿autocorrelación de qué, el marco de dominio de tiempo o el STFT del marco? (No entiendo esto probablemente porque no sé lo que quieres decir con confianza en el lanzamiento). (continuación ...)
Spacey
@pichenettes (cont.) 4) Con respecto a las características que existen POR VENTANA solo ¿sí? ¿Entonces estás calculando tres stds por ventana, de, (en este caso) 101 cuadros? En este caso, cuando llega el momento de entrenar, mi 'punto' en 3-D fue hecho de 3 stds sobre 101 MARCOS, ¿correcto? 5) En su paso 4, cuando tiene el número 1,1,1,2,2, etc., cada número corresponde a cómo clasificó ESA ventana correcta? El primer '1' fue la clasificación de la ventana compuesta por los marcos -50 a 50, y el segundo '1' de una ventana compuesta por los marcos -49 a 51, ¿correcto? (La ventana se desliza 1 cuadro cada vez) ...
Spacey
@pichenettes 6) Finalmente, debería haber mencionado que esto se debe usar como una 'alarma', de modo que si están presentes la señal-1 o la señal-2, hago que suene una alarma, pero entonces nada debería sonar si no hay nada allí. ¿No debería haber algún umbral que igualar antes de que incluso comience a intentar clasificarse para que no obtenga falsos positivos sobre nada? (solo ruido de fondo, por ejemplo). (Ahora estoy aprendiendo sobre el clasificador Naive Bayes, así que no sé si es de varias clases). 7) ¡MUCHAS GRACIAS POR ADELANTADO Y GRACIAS POR ADELANTADO! MIL Y UNO LE GUSTA POR USTED! :-)
Spacey
1
1 / YIN es un algoritmo clásico de detección de tono para señales de voz y música. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF es la "función de magnitud de diferencia", la cantidad calculada por algoritmos como YIN para la estimación de tono. 2 / Un algoritmo de detección de tono como YIN generará la estimación de la frecuencia fundamental y un "puntaje de confianza" que indica la probabilidad de que el tono devuelto sea la respuesta correcta. En señales ruidosas o señales que exhiben varios tonos, esto será bajo, en una onda sinusoidal pura será muy alto.
pichenettes
3

Un enfoque alternativo podría ser cuatro detectores heterodinos: multiplique la señal de entrada con un oscilador local de 4 frecuencias y filtre paso bajo las salidas resultantes. Cada salida representa una línea vertical en su imagen. Obtiene la salida en cada una de las 4 frecuencias en función del tiempo. Con el filtro de paso bajo puede marcar cuánta desviación de frecuencia desea permitir y también qué tan rápido desea que cambien las salidas, es decir, qué tan afilados son los bordes.

Esto funcionará bien incluso si la señal es bastante ruidosa.

Hilmar
fuente
Estaba pensando en este método: ¿prevé alguna ventaja de este método (mezclar y combinar LPF) en lugar de trabajar directamente en el pass-pand usando espectrograma, etc.?
Spacey