ทำเครื่องบันทึกเสียงด้วย Raspberry Pi และ PyAudio



วันหนึ่งที่ผมต้องไปฟังบรรยาย ต้องการเครื่องบันทึกเสียงไปบันทึกคำบรรยายสักหน่อย ความจริงแล้วก็สามารถใช้โทรศัพท์มือถือก็ได้ หรือไปหาซื้อเครื่องบันทึกเสียงแบบ mp3 ก็มีจำหน่ายเยอะแยะ ราคาก็ไม่แพง แต่เรากลับต้องการมากกว่านั้น คือว่าต้องการเขียนโปรแกรมใช้งานบน Raspberry PI ซะเลย หากทำได้ มันก็จะสามารถต่อยอดไปสร้างระบบที่ใช้เสียงสั่งงานได้ด้วย (voice recognition)
Python libraries ที่เป็นตัวเลือกของผมที่นึกออกมี 3 ตัวเลือกคือ
1. PyMedia    ดูจากข้อมูลจากเว็บไซต์แล้วก็น่าจะตอบโจทย์ได้ดี แต่หากดูวันทีี่มี update ข้อมูลแล้ว ไม่มีการเคลื่อนไหวมาหลายปีมากแล้ว มาก่อนที่จะมี Raspberry Pi จำหน่ายด้วยซ้ำ ไม่น่าจะใช่ตัวเลือกที่ดีนัก
2. Pyalsaaudio ตัวนี้มีการปรับปรุงข้อมูลทันสมัยดีครับ น่าจะเป็นตัวเลือกที่ดี
3. PyAudio ตัวนี้ก็มีปรับปรุงทันสมัยดีครับ ที่น่าสนใจที่ตัวนี้ใช้งานกับ PortAudio ซึ่งทำงานได้แบบ callback function ได้ด้วย ตรงนี้หากมองในแง่ของการพัฒนาซอฟต์แวร์แล้วมีประโยชน์ครับ ผมก็เลยใช้งานตัวนี้เลย

ติดตั้ง PyAudio บน Raspberry PI

ผมใช้ Raspberry PI B2 กับ Raspbian (released 2015-05-05) จากคำแนะนำในการติดตั้ง เราต้องติดตั้ง PortAudioV19 เสียก่อน ผมเลือกใช้การค้นหาด้วยคำสั่ง 

$ apt-cache search portaudio

ก็ได้พบว่ามี portaduio19-dev แสดงให้เห็น ก็ทำการติดตั้งเสียก่อนเลย

$ sudo apt-get install portaudio19-dev

จากนั้นก็ทำการดาวน์โหลดรหัสต้นฉบับจาก https://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.8.tar.gz 

หรือหากติดตั้ง git ไว้แล้วก็ใช้คำสั่ง

$ git clone http://people.csail.mit.edu/hubert/git/pyaudio.git

ทำการแตกไฟล์ จะได้โฟลเดอร์ pyaduio

$ cd pyaduio

$ sudo python setup.py install

หาอุปกรณ์ Audio Capture

เนื่องจาก Raspberry Pi ไม่มีอุปกรณ์สำหรับจับเสียง (audio capture divice) มาด้วย จึงต้องทำการจัดให้มีเสียก่อน ทางเลือกมี 3 ทางคือ

 1. ใช้ Web Camera ที่มี Microphone ติดตั้งมาด้วย

 2. ใช้ USB sound card (ดูเรื่องการติดตั้ง)

 3. ใช้ USB Microphone 

ผมเลือกทางเลือกที่ 3 ครับ แม้อุปกรณ์จะราคาสูงแต่มีระบบตัดเสียงรบกวนได้ทำให้ได้เสียงที่สะอาดกว่าสองตัวเลือกแรก เลือกได้แล้วก็ทำการติดตั้งเข้ากับ Raspberry PI ผ่าน USB Port ครับ มีข้อแนะนำคือ ควรใช้ USB Hub ที่มี power supply แยกออกจากตัว Raspberry Pi เพราะอุปกรณ์เหล่านี้ค่อนข้างกินพลังงาน หากต่อกับ USB Port ของ Raspberry Pi โดยตรงอาจก่อปัญหาได้ จากนั้นก็ทำการ config เสียหน่อย (http://blog.scphillips.com/posts/2013/01/sound-configuration-on-raspberry-pi-with-alsa/)

ทดสอบโปรแกรม

ติดตั้งซอฟต์แวร์และติดตั้งตัวอุปกรณ์เสร็จ เราก็ถึงเวทดสอบโปรแกรมกัน ผมใช้การทดสอบโปรแกรมตามตัวอย่างจากเว็บ https://people.csail.mit.edu/hubert/pyaudio/docs/ เลย แต่มีการปรับแก้ตัวแปรบางตัวเพราะระบบฮาร์ดแวร์ไม่เหมือนกัน ผลสรุปสุดท้าย ก็ได้ระบบที่ใช้บันทึกเสียงเรียบร้อยครับ แต่คงเอาไปใช้งานนอกสถานที่ลำบากสักหน่อย เพราะมันใหญ่และเทอะทะน่าดู การไปบันทึกเสียงของผู้บรรยายก็คงต้องใช้โทรศัพท์มือถือไป แต่ระบบที่อุตสาห์ทำมาก็จะนำไปใช้โครงงานอื่นต่อไป ครับ
First

2 ความคิดเห็น

Write ความคิดเห็น
Unknown
AUTHOR
20 ตุลาคม 2558 เวลา 08:12 delete

รอชมผลงานชิ้นต่อไปนะครับผม

Reply
avatar