Zjišťování časových značek
Víme, že vzorkovací frekvence naší zvukové vlny je 48 kHz, ale co kdybychom to nevěděli? Zjistit bychom ji mohli vydělením délky pole naší zvukové vlny jejím trváním. Python ale nabízí lepší způsob – modul wave. Zavoláním getframerate() na objekt typu wave získáš jeho vzorkovací frekvenci.
Pomocí metody linspace() z knihovny NumPy pak můžeme najít časovou značku pro každé celé číslo v poli naší zvukové vlny. To nám v budoucnu pomůže zvukovou vlnu vizualizovat.
Metoda linspace() přijímá parametry start, stop a num a vrací num rovnoměrně rozložených hodnot mezi start a stop.
V našem případě bude start roven nule, stop bude délka pole naší zvukové vlny vydělená vzorkovací frekvencí (tedy délka trvání audio souboru) a num bude délka pole naší zvukové vlny.
Toto cvičení je součástí kurzu
Zpracování mluveného jazyka v Pythonu
Pokyny k cvičení
- Převeď bajty zvukové vlny na celá čísla.
- Zjisti vzorkovací frekvenci zvukového souboru „good morning" pomocí
getframerate(). - Nastav
stopjako délkusoundwave_gmvydělenou vzorkovací frekvencí. - Nastav
numjako délkusoundwave_gm.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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])