Kom igångKom igång gratis

Hitta tidsstämplar

Vi vet att frekvensen för vår ljudvåg är 48 kHz – men vad gör vi om vi inte visste det? Vi kan räkna ut det genom att dividera längden på vår ljudvågsarray med ljudfilens varaktighet. Men Pythons wave-modul erbjuder ett smidigare sätt. Anropar man getframerate() på ett wave-objekt returneras samplingsfrekvensen för det objektet.

Vi kan sedan använda NumPys metod linspace() för att beräkna tidsstämpeln för varje heltal i vår ljudvågsarray. Det här kommer att hjälpa oss att visualisera ljudvågen längre fram.

Metoden linspace() tar parametrarna start, stop och num och returnerar num jämnt fördelade värden mellan start och stop.

I vårt fall sätter vi start till noll, stop till längden på vår ljudvågsarray dividerat med samplingsfrekvensen (det vill säga ljudfilens varaktighet) och num till längden på vår ljudvågsarray.

Den här övningen är en del av kursen

Taligenkänning i Python

Visa kurs

Övningsinstruktioner

  • Konvertera ljudvågens bytes till heltal.
  • Hämta samplingsfrekvensen för good morning-ljudfilen med hjälp av getframerate().
  • Sätt stop till längden av soundwave_gm dividerat med samplingsfrekvensen.
  • Sätt num till längden av soundwave_gm.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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])
Redigera och kör kod