แปลง Bytes เป็น Integers
เราได้เห็นวิธีนำเข้าและอ่านไฟล์เสียงด้วยโมดูล wave ของ Python และเมธอด readframes() แล้ว แต่การทำเช่นนั้นจะได้ผลลัพธ์เป็น array ของ bytes
ในการแปลง bytes ให้อยู่ในรูปแบบที่ใช้งานได้สะดวกขึ้น เราจะใช้เมธอด frombuffer() ของ NumPy
โดยส่ง bytes ของคลื่นเสียงเข้าไปใน frombuffer() พร้อมระบุ dtype เป็น 'int16' เพื่อแปลง bytes เป็น integers ซึ่งทำงานได้ง่ายกว่า bytes มาก
ไลบรารี wave ของ Python ถูกนำเข้าแล้ว พร้อมกับไฟล์เสียง good_morning.wav
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Spoken Language Processing ด้วย Python
คำแนะนำการฝึกหัด
- นำเข้าแพ็กเกจ
numpyโดยใช้ alias ทั่วไปว่าnp - เปิดและอ่านไฟล์เสียง good morning
- แปลง bytes ของ
signal_gmให้เป็น integers ชนิดint16 - แสดงค่าคลื่นเสียง 10 ค่าแรก
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
import ____ as ____
# Open good morning sound wave and read frames as bytes
good_morning = wave.open(____, 'r')
signal_gm = good_morning.readframes(-1)
# Convert good morning audio bytes to integers
soundwave_gm = np.frombuffer(____, dtype=_____)
# View the first 10 sound wave values
print(soundwave_gm[:____])