MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Konversi byte gelombang suara menjadi bilangan bulat.
  • Dapatkan laju bingkai dari berkas audio good morning menggunakan getframerate().
  • Atur stop menjadi panjang soundwave_gm dibagi laju bingkai.
  • Atur num menjadi panjang soundwave_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])
Edit dan Jalankan Kode