Python o Matlab: reproducción de audio sincronizada con visualización de datos (waveform/STFT-spectrogram etc.)

Quiero hacer un proyecto pitón o matlab que visualice los datos de audio mientras se sincroniza con la reproducción.

En detalles, significa en un GUI, tengo dos regiones principales, una para la visulización de datos y la otra para la reproducción de audio. La forma de visulización de datos se puede definir específicamente, por ejemplo, como forma de onda o como un espectrograma STFT. Cuando golpeo el botón de reproducción de audio, no sólo puedo escuchar la música, sino también tener un tiempo real cursor en el área de visulización de datos, que se sincroniza con la reproducción de audio e indica la posición del tiempo de reproducción. Y me gustaría señalar que no quiero que parezca un osciloscopio digital que refresca el espectro o forma de onda por cada tiempo de amortiguación. Quiero la visualización de datos como se muestra para toda la gama de tiempo de audio, sólo la cursor a sincronizado/movido dinámicamente con reproducción de audio.

Así que quiero preguntarte, ¿sabes algún proyecto existente o paquetes que puedan realizar funciones similares como describí? ¿O tienes alguna recomendación sobre cómo puedo poner la idea en realidad desde cero?

Pregunta hecha hace 3 años, 5 meses, 0 días - Por techscribe


3 Respuestas:

  • En principio, es relativamente sencillo. Probablemente quieras usar:

    • una biblioteca GUI como PyQT
    • bibliotecas para STFT y otras matemáticas; SciPy y NumPy son tus amigos aquí
    • una biblioteca de audio para leer y reproducir los datos de audio

    También tendrá que usar hilos, ya que desea reproducir simultáneamente audio y actualizar su interfaz gráfica, etc. Por lo tanto, es útil cierta comprensión de la multitección.

    Aunque es inproblemático en cierto sentido, hay muchos detalles para corregir. Si usted no tiene experiencia en algunas o todas estas áreas, hay mucho que necesita aprender. Por supuesto, eso podría ser algo positivo.

    El problema más importante podría ser la visualización de los datos de audio. Matplotlib es una biblioteca de trama popular, pero es un poco difícil de integrar en una aplicación PyQt, y probablemente el requisito en tiempo real hace las cosas aún más difícil.

    Respondida el Dec 16, 2020 a las 14:41 - por progprophet

    Votos positivos: 0 | Votos negativos: 0

  • Para lograr la sincronización de la visualización de datos de audio con la reproducción de audio en un GUI, puedes considerar implementar esta funcionalidad utilizando la biblioteca PyAudio para Python o la función audioplayer en MATLAB.

    Aquí hay un enfoque general de cómo podrías abordar este proyecto desde cero en Python utilizando PyAudio y PyQt para la interfaz gráfica:

    • Primero, lee el archivo de audio y obtén los datos de audio.
    • Utiliza PyAudio para reproducir el audio.
    • Utiliza matplotlib para visualizar los datos de audio en un gráfico de forma de onda o en un espectrograma STFT.
    • Implementa un GUI utilizando PyQt con dos regiones: una para la visualización de datos y la otra para la reproducción de audio.
    • Agrega un cursor que se sincroniza con la reproducción de audio. Puedes lograr esto actualizando dinámicamente la posición del cursor en la visualización de datos a medida que avanza la reproducción de audio.

    Aquí tienes algunos recursos para comenzar:

    • PyAudio: https://people.csail.mit.edu/hubert/pyaudio/
    • PyQt: https://riverbankcomputing.com/software/pyqt/intro
    • Matplotlib: https://matplotlib.org/

    También puedes buscar ejemplos en línea de visualización de audio sincronizada con la reproducción en Python para obtener más orientación sobre cómo implementar esta funcionalidad.

    En MATLAB, puedes utilizar la función audioplayer para reproducir audio y la función spectrogram para visualizar un espectrograma. También puedes crear una interfaz gráfica utilizando la App Designer de MATLAB.

    Espero que esta información te ayude a comenzar con tu proyecto. ¡Buena suerte!

    Respondida el Dec 17, 2020 a las 14:36 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Proyectos y Paquetes Existentes:

    Python: PyQtGraph: Biblioteca de trazado interactiva con capacidades de visualización de datos en tiempo real. Librosa: Biblioteca de análisis de audio y procesamiento de señales. MATLAB: Audio Player GUI con visualización de ondas GUI del reproductor de audio con espectrograma

    Cómo Implementar desde Cero:

    1. Interfaz Gráfica de Usuario (GUI):

    Crea una GUI con dos paneles: uno para la visualización de datos y otro para los controles de reproducción de audio. Utiliza bibliotecas como PyQtGraph en Python o GUIDE en MATLAB.

    2. Reproducción de Audio:

    Utiliza bibliotecas como PyGame en Python o la función audioplayer incorporada en MATLAB para reproducir archivos de audio.

    3. Visualización de Datos:

    Crea un objeto de visualización de datos en el panel correspondiente. Para una forma de onda, puedes utilizar plot() en Python o plot() en MATLAB. Para un espectrograma, puedes utilizar spectrogram() en Python o specgram() en MATLAB.

    4. Sincronización del Cursor:

    Crea un hilo o temporizador que se ejecute periódicamente (por ejemplo, cada 100 ms). En cada actualización, calcula la posición del cursor en el panel de visualización de datos en función de la posición de tiempo de reproducción actual. Mueve el cursor a la posición calculada.

    Recomendaciones:

    Utiliza la técnica de doble búfer para evitar el parpadeo en la visualización de datos. Optimiza el código para garantizar un rendimiento en tiempo real. Proporciona opciones para diferentes formas de visualización de datos (forma de onda, espectrograma, etc.). Permite al usuario controlar la velocidad de reproducción y otras opciones relacionadas con el audio.

    Respondida el Dec 17, 2020 a las 14:44 - por Gemini

    Votos positivos: 0 | Votos negativos: 0