Menentukan cap waktu (time stamp)
Kita tahu frekuensi gelombang suara kita adalah 48 kHz, tetapi bagaimana jika tidak? Kita bisa menentukannya dengan membagi panjang array gelombang suara dengan durasi gelombang suara. Namun, modul wave di Python menyediakan cara yang lebih baik. Memanggil getframerate() pada sebuah objek wave akan mengembalikan laju bingkai (frame rate) dari objek tersebut.
Kita kemudian dapat menggunakan metode linspace() dari NumPy untuk menemukan cap waktu dari setiap bilangan bulat dalam array gelombang suara. Ini akan membantu kita memvisualisasikan gelombang suara di masa mendatang.
Metode linspace() menerima parameter start, stop, dan num, lalu mengembalikan num nilai yang berjarak sama antara start dan stop.
Dalam kasus kita, start bernilai nol, stop adalah panjang array gelombang suara dibagi laju bingkai (atau durasi berkas audio), dan num adalah panjang array gelombang suara kita.
Latihan ini adalah bagian dari kursus
Pemrosesan Bahasa Lisan dengan Python
Petunjuk latihan
- Konversi byte gelombang suara menjadi bilangan bulat.
- Dapatkan laju bingkai dari berkas audio good morning menggunakan
getframerate(). - Atur
stopmenjadi panjangsoundwave_gmdibagi laju bingkai. - Atur
nummenjadi panjangsoundwave_gm.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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])