ComenzarEmpieza gratis

Encontrando las marcas de tiempo

Sabemos que la frecuencia de nuestra onda de sonido es 48 kHz, pero ¿y si no la conociéramos? Podríamos calcularla dividiendo la longitud del array de la onda entre la duración de la onda. Sin embargo, el módulo wave de Python tiene una forma mejor. Llamar a getframerate() sobre un objeto wave devuelve su frecuencia de muestreo (frame rate).

Luego podemos usar el método linspace() de NumPy para calcular la marca de tiempo de cada entero en nuestro array de la onda. Esto nos ayudará a visualizar la onda más adelante.

El método linspace() recibe los parámetros start, stop y num, y devuelve num valores equiespaciados entre start y stop.

En nuestro caso, start será cero, stop será la longitud de nuestro array de la onda dividida por la frecuencia de muestreo (o la duración del archivo de audio) y num será la longitud de nuestro array de la onda.

Este ejercicio forma parte del curso

Procesamiento del lenguaje hablado en Python

Ver curso

Instrucciones del ejercicio

  • Convierte los bytes de la onda de sonido a enteros.
  • Obtén la frecuencia de muestreo del archivo de audio de good morning usando getframerate().
  • Define stop como la longitud de soundwave_gm dividida por la frecuencia de muestreo.
  • Define num como la longitud de soundwave_gm.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Read in sound wave and convert from bytes to integers
good_morning = wave.open('good_morning.wav', 'r')
signal_gm = good_morning.readframes(-1)
soundwave_gm = np.frombuffer(____, dtype='int16')

# Get the sound wave frame rate
framerate_gm = good_morning.____

# Find the sound wave timestamps
time_gm = np.linspace(start=0,
                      stop=____/____,
					  num=____)

# Print the first 10 timestamps
print(time_gm[:10])
Editar y ejecutar código