Trouver les repères temporels
Nous savons que la fréquence de notre onde sonore est de 48 kHz, mais si ce n’était pas le cas ? Nous pourrions la déterminer en divisant la longueur de notre tableau d’onde sonore par la durée de notre onde. Cependant, le module wave de Python propose mieux. Appeler getframerate() sur un objet wave renvoie sa fréquence d’images.
Nous pouvons ensuite utiliser la méthode linspace() de NumPy pour calculer le repère temporel (time stamp) de chaque entier de notre tableau d’onde sonore. Cela nous aidera à visualiser notre onde par la suite.
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 vaudra zéro, stop sera la longueur de notre tableau d’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
Traitement du langage parlé en Python
Instructions
- 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 cet exemple de code.
# 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])