Encontrando os carimbos de tempo
Sabemos que a frequência da nossa onda sonora é 48 kHz, mas e se não soubéssemos? Poderíamos encontrá-la dividindo o comprimento do nosso array de onda sonora pela duração da nossa onda. No entanto, o módulo wave do Python tem uma forma melhor. Chamar getframerate() em um objeto wave retorna a taxa de quadros desse objeto.
Depois, podemos usar o método linspace() do NumPy para encontrar o carimbo de tempo de cada inteiro no nosso array de onda sonora. Isso vai ajudar você a visualizar a nossa onda sonora no futuro.
O método linspace() recebe os parâmetros start, stop e num e retorna num valores igualmente espaçados entre start e stop.
No nosso caso, start será zero, stop será o comprimento do nosso array de onda sonora dividido pela taxa de quadros (ou a duração do nosso arquivo de áudio) e num será o comprimento do nosso array de onda sonora.
Este exercicio faz parte do curso
Processamento de Linguagem Falada em Python
Instruções do exercicio
- Converta os bytes da onda sonora em inteiros.
- Obtenha a taxa de quadros do arquivo de áudio good morning usando
getframerate(). - Defina
stopcomo o comprimento desoundwave_gmdividido pela taxa de quadros. - Defina
numcomo o comprimento desoundwave_gm.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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])