Trovare i timestamp
Sappiamo che la frequenza della nostra onda sonora è 48 kHz, ma se non lo sapessimo? Potremmo trovarla dividendo la lunghezza del nostro array dell’onda sonora per la durata dell’onda stessa. Tuttavia, il modulo wave di Python offre un modo migliore. Chiamando getframerate() su un oggetto wave si ottiene il frame rate di quell’oggetto.
Possiamo poi usare il metodo linspace() di NumPy per trovare il timestamp di ciascun intero nel nostro array dell’onda sonora. Questo ci aiuterà a visualizzare la nostra onda sonora in seguito.
Il metodo linspace() accetta i parametri start, stop e num e restituisce num valori equidistanti tra start e stop.
Nel nostro caso, start sarà zero, stop sarà la lunghezza del nostro array dell’onda sonora divisa per il frame rate (cioè la durata del nostro file audio) e num sarà la lunghezza del nostro array dell’onda sonora.
Questo esercizio fa parte del corso
Elaborazione del linguaggio parlato in Python
Istruzioni dell'esercizio
- Converti i byte dell’onda sonora in interi.
- Ottieni il frame rate del file audio "good morning" usando
getframerate(). - Imposta
stopcome la lunghezza disoundwave_gmdivisa per il frame rate. - Imposta
numcome la lunghezza disoundwave_gm.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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])