En este artículo, exploraremos la forma de visualizar ondas sonoras utilizando Python y Matplotlib.
Módulos necesarios
1. Matplotlib : Instale Matplotlib usando el siguiente comando:
pip install matplotlib
2. Numpy : Numpy se instala automáticamente con Matplotlib. Aunque, si enfrenta algún error de importación, use el siguiente comando para instalar Numpy
pip install numpy
Nota: si está en Linux como yo, es posible que deba usar pip3 en lugar de pip o puede crear un entorno virtual y ejecutar el comando anterior.
Acercarse
- Importe el módulo matplotlib, Numpy, wave y sys.
- Abra el archivo de audio usando el método wave.open() .
- Lea todos los cuadros de la onda de sonido abierta usando la función readframes().
- Almacene la velocidad de fotogramas en una variable utilizando la función getframrate().
- Finalmente, trace el eje x en segundos usando la velocidad de fotogramas.
- Use la función matplotlib.figure() para trazar el gráfico derivado
- Use etiquetas según el requisito.
A continuación se muestra la implementación.
Python3
# imports import matplotlib.pyplot as plt import numpy as np import wave, sys # shows the sound waves def visualize(path: str): # reading the audio file raw = wave.open(path) # reads all the frames # -1 indicates all or max frames signal = raw.readframes(-1) signal = np.frombuffer(signal, dtype ="int16") # gets the frame rate f_rate = raw.getframerate() # to Plot the x-axis in seconds # you need get the frame rate # and divide by size of your signal # to create a Time Vector # spaced linearly with the size # of the audio file time = np.linspace( 0, # start len(signal) / f_rate, num = len(signal) ) # using matplotlib to plot # creates a new figure plt.figure(1) # title of the plot plt.title("Sound Wave") # label of x-axis plt.xlabel("Time") # actual plotting plt.plot(time, signal) # shows the plot # in new window plt.show() # you can also save # the plot using # plt.savefig('filename') if __name__ == "__main__": # gets the command line Value path = sys.argv[1] visualize(path)
Producción:
Entonces, hemos terminado con la codificación, ahora es el momento de la verdad. Vamos a comprobar si realmente funciona o no. Puede probar cualquier archivo de audio, pero asegúrese de que sea un archivo wav . Si tiene algún otro tipo de archivo, puede usar ffmpeg para convertirlo a un archivo wav. Si lo desea, siéntase libre de descargar el archivo de audio que usaremos. Puedes descargarlo usando este enlace , pero prueba otros archivos también.
Para ejecutar el código, debe pasar la ruta del archivo de audio en la línea de comando. Para ello escribe lo siguiente en tu terminal:
python soundwave.py sample_audio.wav
Es importante tener en cuenta que el nombre del archivo de Python es soundwave.py y el nombre del archivo de audio es sample_audio.wav . Debe cambiarlos de acuerdo con su sistema. Ahora, debería haber aparecido una nueva ventana y debería estar viendo un gráfico de ondas de sonido. Si ha usado mi audio, entonces su trama debería verse así.
Publicación traducida automáticamente
Artículo escrito por debdutgoswami y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA