Menemukan cap waktu
Kita tahu frekuensi sampling gelombang suara kita adalah 48 kHz, tetapi bagaimana jika kita tidak mengetahuinya? Kita dapat menemukannya dengan membagi panjang array gelombang suara dengan durasi gelombang suara. Namun, modul wave di Python memiliki cara yang lebih baik. Memanggil getframerate() pada sebuah objek wave akan mengembalikan laju bingkai dari objek tersebut.
Kita kemudian dapat menggunakan metode linspace() dari NumPy untuk menemukan cap waktu dari setiap integer dalam array gelombang suara kita. Ini akan membantu kita memvisualisasikan gelombang suara di kemudian hari.
Metode linspace() menerima parameter start, stop, dan num, lalu mengembalikan num nilai yang berjarak sama antara start dan stop.
Dalam kasus kita, start akan bernilai nol, stop akan bernilai panjang array gelombang suara dibagi laju bingkai (atau durasi berkas audio), dan num akan bernilai panjang array gelombang suara kita.
Latihan ini merupakan bagian dari kursus
Pemrosesan Bahasa Lisan dengan Python
Instruksi latihan
- Konversikan byte gelombang suara menjadi integer.
- Dapatkan laju bingkai berkas audio good morning menggunakan
getframerate(). - Atur
stopmenjadi panjangsoundwave_gmdibagi laju bingkai. - Atur
nummenjadi panjangsoundwave_gm.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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])