Trovare i time stamp
Sappiamo che la frequenza di campionamento della nostra onda sonora è 48 kHz, ma se non lo sapessimo? Potremmo trovarla dividendo la lunghezza dell'array dell'onda sonora per la durata dell'onda stessa. Tuttavia, il modulo wave di Python offre un metodo migliore: chiamando getframerate() su un oggetto wave ottieni il frame rate di quell'oggetto.
Possiamo poi usare il metodo linspace() di NumPy per trovare il time stamp di ciascun intero nel nostro array dell'onda sonora. Questo ci aiuterà a visualizzare l'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 (ossia la durata del 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])