เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การหาค่าตำแหน่งเวลา

เรารู้ว่าความถี่ของคลื่นเสียงคือ 48 kHz แต่ถ้าไม่รู้ล่วงหน้าจะทำอย่างไร? วิธีหนึ่งคือนำความยาวของอาร์เรย์คลื่นเสียงหารด้วยระยะเวลาของไฟล์เสียง แต่โมดูล wave ของ Python มีวิธีที่ดีกว่า นั่นคือการเรียก getframerate() บน wave object ซึ่งจะคืนค่าเฟรมเรตของ object นั้น

จากนั้นใช้เมธอด linspace() ของ NumPy เพื่อหาค่าตำแหน่งเวลาของแต่ละจำนวนเต็มในอาร์เรย์คลื่นเสียง ซึ่งจะช่วยให้แสดงภาพคลื่นเสียงได้ในภายหลัง

เมธอด linspace() รับพารามิเตอร์ start, stop และ num แล้วคืนค่าตัวเลข num ค่าที่เว้นระยะเท่ากันระหว่าง start และ stop

ในกรณีนี้ start จะเป็นศูนย์, stop จะเป็นความยาวของอาร์เรย์คลื่นเสียงหารด้วยเฟรมเรต (หรือระยะเวลาของไฟล์เสียง) และ num จะเป็นความยาวของอาร์เรย์คลื่นเสียง

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Spoken Language Processing ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แปลงข้อมูลไบต์ของคลื่นเสียงให้เป็นจำนวนเต็ม
  • หาค่าเฟรมเรตของไฟล์เสียง good morning โดยใช้ getframerate()
  • กำหนดให้ 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])
แก้ไขและรันโค้ด