Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Převeď bajty zvukové vlny na celá čísla.
  • Zjisti vzorkovací frekvenci zvukového souboru „good morning" pomocí getframerate().
  • Nastav stop jako délku soundwave_gm vydělenou vzorkovací frekvencí.
  • Nastav num jako délku soundwave_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])
Upravit a spustit kód