Trouver les horodatages
Nous savons que la fréquence d'échantillonnage de notre onde sonore est de 48 kHz, mais si ce n'était pas le cas ? Nous pourrions la retrouver en divisant la longueur du tableau de notre onde sonore par la durée de cette onde. Cependant, le module wave de Python propose mieux. Appeler getframerate() sur un objet wave renvoie la fréquence d'images (frame rate) de cet objet.
Nous pouvons ensuite utiliser la méthode linspace() de NumPy pour calculer l'horodatage de chaque entier dans notre tableau d'onde sonore. Cela nous aidera à visualiser notre onde plus tard.
La méthode linspace() prend les paramètres start, stop et num et renvoie num valeurs régulièrement espacées entre start et stop.
Dans notre cas, start sera zéro, stop sera la longueur du tableau de notre onde sonore divisée par la fréquence d'images (autrement dit, la durée de notre fichier audio), et num sera la longueur de notre tableau d'onde sonore.
Cet exercice fait partie du cours
<cours>Traitement du langage parlé en Python</cours>Instructions de l’exercice
- Convertissez les octets de l'onde sonore en entiers.
- Récupérez la fréquence d'images du fichier audio « good morning » avec
getframerate(). - Définissez
stopcomme la longueur desoundwave_gmdivisée par la fréquence d'images. - Définissez
numcomme la longueur desoundwave_gm.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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])