ระบบแปลงเสียงเป็นข้อความ Convert voice to text

ผู้เขียนบทความ : นายภูธเนศ อินทะโณ 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

รูปภาพ แสดงหน้าต่าง GUI

6. ผลการดำเนินงาน

รูปตัวอย่างการเขียนโปรแกรม
รูปตัวอย่างการเขียนโปรแกรม (ต่อ)
รับเสียงแปลงเป็นข้อความและอ่านจากข้อความให้มาเป็นเสียง
ในขณะอ่านข้อความให้กลายเป็นเสียงระบบทำการบันทึกเสียงเป็น MP3 และบันทึกไว้อัติโนมัติ

สามารถเอาโค้ดไปศึกษาได้ตรงนี้ครับ

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

Share

You may also like...

Leave a Reply