ผู้เขียนบทความ : นายภูธเนศ อินทะโณ COE #12
1. ความเป็นมา
ในปัจจุบันนี้ทางเทคโนโลยีได้มีการใช้เสียงเพื่อมาช่วยในการสั่งการโปรแกรมหรือการใช้งานในชีวิตประจำวันมากขึ้น ปัจจุบันโทรศัพท์สมาร์ทโฟนสามารถใช้คุณสมบัติการแปลงเสียงพูดเป็นข้อความ โดยใช้เทคโนโลยี Speech recognition หรือโปรแกรมที่สามารถแปลงเสียงพูดให้เป็นข้อความหรือตัวหนังสือ โดยการจำแนกคำพูดที่มนุษย์พูดใส่ไมโครโฟน หรือโทรศัพท์ โดยระบบจะรับเสียงพูด และตัดสินใจว่าเสียงที่ได้ยินนั้นเป็นคำใด โดยใช้เทคโนโลยีที่เรียกว่า Hidden Markov Model (HMM) ไม่ว่าจะเป็น IOS หรือ Android สามารถใช้คุณสมบัติการแปลงเสียงพูดเป็นข้อความ หรือ Speech to text (STT) เพื่อช่วยให้การการพิมพ์ข้อความสะดวกกว่าเดิมมาก เพียงแค่กดรูปไมโครโฟนที่แป้นพิมพ์คีย์บอดร์ด แล้วพูดข้อความที่ต้องการลงไป เพื่อให้เครื่องแปลงเสียงเป็นข้อความแทนการพิมพ์ได้ทันที หรือขะเป็นทาง google Doc ก็สามารถแปลงเสียงเป็นเป็นข้อความได้เช่นกัน ซึ่งในบทความนี้เราก็จะมาดูกันว่าในระบบสั่งการเสียงหรือแปลงเป็นข้อความเราสามารถที่จะทำเองได้และสามารถเอาไปประยุกต์ใช้ศึกษาต่อยอดได้อีกด้วย
2. วัตถุประสงค์
- เพื่อพัฒนาระบบแปลงเสียงเป็นข้อความให้รองรับได้หลายภาษา (เปรียบเสมือน google แปลภาษา)
- เพื่อต่อยอดระบบแปลงเสียงเป็นขอความ ให้เป็นระบบ AI สามารถโต้ตอบเราได้
3. ขอบเขต
- สามารถแปลงเสียงเป็นข้อความได้และยังสามารถอ่านจากข้อความแล้วแปลงกลับมาเป็นเสียงได้
- ตัวระบบยังสามารถทำการบันทึกเสียงที่อ่านจากข้อความไว้เป็นไฟล์ MP3
4. ประโยชน์ที่คาดว่าจะได้รับ
- สามารถเอาโปรแกรมไปประยุกต์ในการใช้แบบแปลงเสียงเป็นข้อความแบบเรียลไทม์
- โปรแกรมประยุกต์สามารถใช้งานได้จริงและมีประสิทธิภาพ
- ตัวโปรแกรมมีความเสถียร (ไม่หลุดหรือค้าง)
5. ความรู้ที่เกี่ยวข้อง
5.1 ความรู้ในเขียนภาษา Python ภาษาโปรแกรม Python คือภาษาโปรแกรมคอมพิวเตอร์ระดับสูง โดยถูกออกแบบมาให้เป็นภาษาสคริปต์ที่อ่านง่าย โดยตัดความซับซ้อนของโครงสร้างและไวยกรณ์ของภาษาออกไป ในส่วนของการแปลงชุดคำสั่งที่เราเขียนให้เป็นภาษาเครื่อง Python มีการทำงานแบบ Interpreter คือเป็นการแปลชุดคำสั่งทีละบรรทัด เพื่อป้อนเข้าสู่หน่วยประมวลผลให้คอมพิวเตอร์ทำงานตามที่เราต้องการ นอกจากนั้นภาษาโปรแกรม Python ยังสามารถนำไปใช้ในการเขียนโปรแกรมได้หลากหลายประเภท โดยไม่ได้จำกัดอยู่ที่งานเฉพาะทางใดทางหนึ่ง (General-purpose language) จึงทำให้มีการนำไปใช้กันแพร่หลายในหลายองค์กรใหญ่ระดับโลก เช่น Google, YouTube, Instagram, Dropbox และ NASA เป็นต้น
5.2 ได้รู้จักและศึกษาโมดูล SpeechRecognition ระบบโปรแกรมคอมพิวเตอร์ที่สามารถแปลงเสียงพูด (Audio File) เป็นข้อความตัวอักษร (Text) โดยสามารถแจกแจงคำพูดต่างๆ ที่มนุษย์สามารถพูดใส่ไมโครโฟน โทรศัพท์หรืออุปกรณ์อื่นๆ และเข้าใจคำศัพท์ทุกคำอย่างถูกต้องเกือบ 100% โดยเป็นอิสระจากขนาดของกลุ่มคำศัพท์ ความดังของเสียงและลักษณะการออกเสียงของผู้พูด โดยระบบจะรับฟังเสียงพูดและตัดสินใจว่าเสียงที่ได้ยินนั้นเป็นคำๆใด เทคโนโลยีที่เป็นส่วนสำคัญในการทำ ASR เรียกว่า Hidden Markov Model (HMM) เทคโนโลยีชนิดนี้สามารถที่จะเข้าใจคำพูด จากการจำแนกความแตกต่างและการประมาณการถึงความเป็นไปได้ของส่วนประกอบของหน่วยที่เป็นพื้นฐานของเสียงที่อยู่ติดๆกัน โดยอาศัยหลักการที่ว่าเสียงแต่ละเสียงจะมีขอบเขตของสัญญาณและลักษณะเฉพาะที่มีความแตกต่างกันโดยระบบรู้จำเสียงพูด มีส่วนประกอบหลัก 5 ส่วนคือ
1) ส่วนรับเสียง (Acoustic Front-end) เป็นส่วนที่ทำหน้าที่เกี่ยวกับการประมวลผลสัญญาณ (signal processing) และสกัดคุณลักษณะ (feature extraction)
2) โมเดลเสียง (Acoustic Model) เป็นส่วนที่จัดเก็บความรู้สำหรับระบบรู้จำเสียงพูด
3) โมเดลภาษา (Language Model) เป็นส่วนที่รวบรวมเงื่อนไขของลำดับคำในภาษา
4) ตัวตรวจจับ (Decoder) เป็นส่วนที่ค้นหาความคล้ายของลำดับคำจากเสียงที่ได้รับ
5) คลังศัพท์ (Lexicon) เป็นส่วนที่จัดเก็บคำศัพท์ทั้งหมด
5.3 ได้รู้จักกับ gTTS เป็นโมดูลสังเคราะห์เสียงจากข้อความเป็นเสียงพูด จะได้ไฟล์ mp3 ออกมา gTTS เป็นโมดูลที่ดึง Google TTS (Text-to-Speech) API เข้ามาใช้งาน โดยจะสร้างไฟล์เสียงสังเคราะห์ขึ้นมาในรูปแบบ mp3 ไม่จำกัดความยาว รองรับภาษาต่าง ๆ รวมถึงภาษาไทยด้วย (เวลาใช้งานต้องเรียกใช้อินเทอร์เน็ต) ใช้ License: MIT รองรับทั้ง Python 2.7 และ Python 3 ครับ
สามารถติดตั้งได้โดยสั่ง pip
6. ผลการดำเนินงาน
สามารถเอาโค้ดไปศึกษาได้ตรงนี้ครับ
import sys
from qtpy import QtCore
from qtpy.QtGui import *
from qtpy.QtWidgets import *
from gtts import gTTS
import pyglet
import speech_recognition as sr
r = sr.Recognizer()
def sayHello():
def speak():
tts = gTTS(text=say,lang=’th’)
tts.save(‘hello-thai.mp3’)
music = pyglet.resource.media(‘hello-thai.mp3’)
music.play()
with sr.Microphone() as source:
audio = r.listen(source)
try:
say = r.recognize_google(audio,language = “th-TH”)
textEdit = QTextEdit(say)
layout.addWidget(textEdit)
button2 = QPushButton(“TEXT”)
button2.resize(75, 30)
button2.clicked.connect(speak)
layout.addWidget(button2)
except LookupError:
print(“Could not understand audio”)
app = QApplication(sys.argv)
widget = QWidget()
widget.setWindowTitle(“Voice receiver converts to text and synthesizes text”)
layout = QVBoxLayout()
widget.setLayout(layout)
button = QPushButton(“Pick up sound”)
button.resize(75, 30)
button.clicked.connect(sayHello)
layout.addWidget(button)
widget.show()
app.exec_()
แผนผังการทำงานของระบบ
อธิบายการทำงานของแผนผัง
ทำการรับเสียงพูดและส่งให้ยังคอมพิวเตอร์และทำการรับเสียงแปลงเป็นข้อความผ่านโมดูลที่มีชื่อว่า Speech Recognition หากเราอยากให้คอมพิวเตอร์อ่านข้อความให้เป็นเสียงออกมาก็ทำการส่งขอมูลให้ตัวโมดูล GTTs เป็นโมดูลที่เป็นการอ่านออกเสียงให้เราได้ยินผ่านทางคอมพิวเตอร์ของเรา
7. สรุปผลและข้อเสนอแนะ
สรุป
การทำงานของโปรแกรมนั้นมีความถูกต้องในการทำงานและแสดงผลได้ดี ผลลัพธ์ก็ออกมาได้เป็นที่น่าพอใจมาก ความเสถียรของโปรแกรมนั้นนับว่ามีเยอะกว่าเมื่อก่อนมาก ซึ่งสามารถจำแนกเสียงได้ดี สามารถพูดยาวๆได้ ถ้าเราต้องการที่จะหยุดพูดตัวโปรแกรมก็จะมีเวลาในการหยุดรับเสียงอยู่โปรแกรมก็จะหยุดรับเสียงทันทีหากถึงเวลาที่กำหนดในการรับเสียง
ข้อเสนอแนะ
พัฒนาระบบแปลภาษา โดยรับเสียงภาษาอังกฤษแล้วพูดออกมาเป็นภาษาไทย (หรือทำให้รองรับได้หลายภาษา)
พัฒนาให้ระบบมีการรับเสียงแบบเรียลไทม์
ทำให้โปรแกรมเป็น AI สามารถพูดคุยได้และเลือกภาษาได้มากขึ้น
8. ข้อมูลอ้างอิง
แหล่งที่มา
https://python3.wannaphong.com/2015/03/gui-python.html
เว็บไซต์ที่ใช้ในการศึกษา
https://python3.wannaphong.com/2015/03/python_13.html
เว็บไซต์ศึกษา GUI
https://python3.wannaphong.com/2014/08/gui-pyside-4.html
https://python3.wannaphong.com/2014/08/gui-pyside-5-widgets-3.html
เว็บไซต์สำหรับศึกษา Speech recognition
https://python3.wannaphong.com/2014/12/speech-recognition-python-3.html
https://python3.wannaphong.com/2015/02/speech-synthesis-python.html
เว็บไซต์เพิ่มเติม
https://python3.wannaphong.com/2014/11/play-audio-python.html
https://python3.wannaphong.com/2015/01/functions-python.html
https://python3.wannaphong.com/2015/03/python.html