Cómo detectar la frecuencia fundamental de una señal de voz de canto humano

0

Quiero hacer un chip de hardware digital que pueda ingresar una voz humana (cantando simples notas largas sin palabras) y emitir una onda cuadrada que es la misma frecuencia que la frecuencia fundamental de la voz. Quiero que funcione en tiempo real.

Me gustaría poner el chip en mi propia PCB eventualmente. Pero podría comenzar probando el concepto en algún tipo de entorno de desarrollo que tenga el mismo chip que usaría.

¿Puede alguien decirme la mejor manera de abordar este problema? Por ejemplo, qué tipo de algoritmo sería mejor y qué chip sería bueno utilizar.

Leí que tanto la autocorrelación como la FFT se usan para este tipo de cosas, pero no sé cuál sería la mejor.

Estaba pensando en usar el STM32F427, porque parece ser muy popular y está disponible en todo tipo de entornos de desarrollo relacionados con pasatiempos.

No espero que nadie me diga exactamente cómo hacerlo en cada detalle. Solo necesito apuntar en la dirección correcta.

    
pregunta Nick Collier

3 respuestas

1

Esto podría encajar mucho mejor en signal.stackexchange.com, si lo reformulas como una pregunta de procesamiento de señales

De todos modos, no empieces con "Quiero hacer un chip dedicado". Para empezar, quiero entender cómo se puede hacer algo así, y luego elegiré las herramientas y las implementaciones.

Sin embargo, la pregunta "cómo detectar mejor el tono del canto humano es muy complicada y está lejos de ser fácil de responder; incluso desde un punto de vista puramente teórico-musical, la voz no tiene una frecuencia fundamental, a menos que sea cantada por el efecto de producir el tono perfecto.

Por supuesto, puedes intentar detectar el tono dominante en una canción, y esa es una pregunta bastante común en signal.stackexchange.com, por lo que solo puedo animarte a buscarla, pero sigue siendo una buena pregunta si lo que tu algoritmo detecta como dominante representa lo que un humano podría percibir como el tono de canto: los humanos están lejos de ser uniformes, y eso no se detiene en la percepción de la música.

Un pequeño Cortex-M4F como el microcontrolador STM que mencionas podría ser adecuado para muchos de los algoritmos que deberás tener en cuenta, pero muchos otros no funcionarán.

Por lo tanto, se aplica una de las reglas importantes de la ingeniería: primero, comprenda su problema y luego elija las herramientas. Eso se aplica a cosas como la FFT tanto como a la plataforma informática en la que se ejecutará esto.

Cualquier enfoque razonable para esto consistirá en diseñar primero el DSP en una computadora estilo PC, probarlo contra señales digitales grabadas (por lo tanto, archivos de audio), refinarlo y luego trasladarlo a cualquier plataforma que elija colocar. su PCB.

Esa es una de las fortalezas de DSP: en realidad es solo matemáticas. Puede hacerlo en una PC tan bien como puede hacerlo en un microcontrolador, siempre y cuando la matemática que haga sea la misma.

    
respondido por el Marcus Müller
1

"Cepstrum" es lo que estás buscando. Es la FFT de una FFT.

Calcule el Cepstrum de su señal, encuentre el pico, genere una onda cuadrada de la frecuencia calculada.

Wikipedia Cepstrum

    
respondido por el JRE
1

Le sugiero que comience con algo realmente sencillo como this en una tarjeta de sonido de PC para evaluar sus necesidades.

Desde allí puede comenzar a diseñar su software antes de comprometerse con cualquier plataforma de hardware determinada.

Hay muchas soluciones de codificador / decodificador de audio muy buenas que caben en cualquier plataforma de microprocesador que seleccione.
Puede probar Estos módulos de desarrollo de VLSI que le brindan un excelente DSP que podría ser adecuado para una simple conexión USB a algo como la Raspberry Pi.
Fácil desarrollo abierto.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas