開始使用免費開始

找出時間戳記

我們已知音波的頻率是 48 kHz,但如果不知道呢?可以用音波陣列的長度除以音波的持續時間來推算。不過,Python 的 wave 模組有更好的做法:對 wave 物件呼叫 getframerate(),就能取得該物件的取樣率(frame rate)。

接著,可以用 NumPy 的 linspace() 方法來為音波陣列中的每個整數建立對應的時間戳記。這能幫助我們之後把音波視覺化。

linspace() 接受 startstopnum 參數,並回傳介於 startstop 之間、等距的 num 個數值。

在這裡,start 為 0,stop 為音波陣列長度除以取樣率(也就是音訊檔的總時長),而 num 則為音波陣列的長度。

本練習屬於課程

Python 的口語語言處理

檢視課程

練習說明

  • 將音波位元組轉換為整數。
  • 使用 getframerate() 取得「good morning」音訊檔的取樣率。
  • stop 設為 soundwave_gm 的長度除以取樣率。
  • num 設為 soundwave_gm 的長度。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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])
編輯並執行程式碼