Audio en formato .wav

Lectura de archivo .wav en python

Para procesar un archivo de audio en formato .wav se usarán las instrucciones de la libreria scipy.
La instruccion usa el archivo con ‘nombre.wav’ dado como variable tipo texto y se obtienen dos variables que representan:
fsonido: frecuencia de muestreo del sonido en PCM y
sonido: que es un arreglo con las muestras del sonido.

El archivo de audio debe encontrarse en el mismo directorio que el script de python, por ejemplo, dado el archivo ‘Alarm.wav’ , se puede procesar con las instrucciones mostradas:

Alarm01.wav

import scipy.io.wavfile as waves

# INGRESO
archivo='Alarm01.wav'
fsonido, sonido = waves.read(archivo)

con lo que se obtiene:

>>> fsonido
22050
>>> sonido
array([[0, 0],
       [0, 0],
       [0, 0],
       ..., 
       [0, 0],
       [0, 0],
       [0, 0]], dtype=int16)
>>> np.shape(sonido)
(122868, 2)

En el ejemplo, la frecuencia de muestreo es de 22050 Hz. El sonido es estéreo al tener dos columnas que corresponden a los canales izquierdo y derecho.
Para usar un solo canal, se copian los datos a un nuevo arreglo. Para separar el canal izquierdo por ejemplo, se usan las instrucciones:

>>> izquierdo=sonido[:,0].copy()
>>> izquierdo
array([0, 0, 0, ..., 0, 0, 0], dtype=int16

Con lo que se tienen los datos listos para ser procesados.

Guardar un archivo de audio .wav

Luego de procesar los datos de audio, y guardar el resultado en un archivo con ‘nombre.wav’ se usa la instruccion waves.write() de la libreria scipy, que requiere:
archivo: el nombre del archivo resultante, con extension.wav
fsonido: la frecuencia de muestreo del sonido (entero)
sonido: el arreglo de la señal de audio como entero de 16 bits (dtype=’int16′).

Recuerde haber invocado a las librerias numpy y scipy que se presentan como referencia en el script.

import numpy as np
import scipy.io.wavfile as waves

# PROCEDIMIENTO
# Arreglos para datos con k muestras
sonidofinal=np.zeros(k, dtype='int16')

# Salida
archivo='audiofinal.wav'
waves.write(archivo, int(fsonido),sonidofinal)

El archivo de audio resultante se escucharà usando un programa como «windows media player»

Notas:
Se puede añadir al nombre la ruta de ubicación del archivo en el disco duro. Ejemplo para windows: ‘C:\Users\mis documentos\archivo.wav

Gráfica de un canal de audio

Para mostrar en un gráfico un canal de audio se usa la libreria matplotlib. Para muestra, usando los datos del ejemplo anterior:

import matplotlib.pyplot as plt

izquierdo=sonido[:,0].copy()

# Salida a gràfico
plt.plot(izquierdo)
plt.show()

con lo que se obtiene la siguiente gráfica:

Con lo que se puede revisar la forma de la señal de audio