top of page

ถอดเสียงเป็นข้อความ real-time ใน 10 บรรทัด! Python Speech to Text

Updated: Jul 28, 2021

จดโน้ตเรียน ประชุม ก็ทำได้แบบอัตโนมัติ เรียนเขียนพร้อม โปรแกรมตัวอย่าง และคลิปที่ทำตามได้ทันที! เรียนกับ Ultimate Python

เราทำบทเรียนด้วยความตั้งใจใส่เต็ม 300%

สนับสนุนเราได้จากการ subscribe นะครับ :)

Please consider subscribing to Ultimate Python


 

เอกสารประกอบบทเรียนนี้


โปรแกรมตัวอย่างที่อยู่ในคลิป


ลิ้งค์สำหรับดาวน์โหลด pyaudio

(จริงๆ ผมคิดว่า Mac ติดตั้งแบบเดียวกับในคลิปได้แต่ยังไม่มีโอกาสได้ลอง)


วิธีการติดตั้ง pyaudio บน mac (จาก stackoverflow)


 

Speech Recognition

วันนี้เราจะมาเรียนรู้การสอน Machine เพื่อให้ตรวจจับคนใส่แมส โดยใช้ webcam ของเรา และ Teachable Machine ที่ช่วยจัดการเรื่องการสร้าง Machine Learning และปรับโปรแกรมของเราเข้ากับข้อมูลที่ใส่ไปให้


เครื่องมือที่ต้องใช้

การติดตั้ง


In [3]:
!pip install SpeechRecognition
Requirement already satisfied: SpeechRecognition in c:\users\acer\anaconda3\lib\site-packages (3.8.1) 


In [1]:
!pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl
Processing c:\users\acer\pyaudio-0.2.11-cp37-cp37m-win_amd64.whl Installing collected packages: PyAudio Successfully installed PyAudio-0.2.11 

นำมาใช้


In [7]:
import pyaudio
import speech_recognition as sr


 

ไมโครโฟนที่ใช้

วันนี้เราจะมาเรียนรู้การสอน Machine เพื่อให้ตรวจจับคนใส่แมส โดยใช้ webcam ของเรา และ Teachable Machine ที่ช่วยจัดการเรื่องการสร้าง Machine Learning และปรับโปรแกรมของเราเข้ากับข้อมูลที่ใส่ไปให้

รายชื่อไมโครโฟน

ดูได้จากจาก คำสั่ง sr.Microphone.list_microphone_names() ที่จะได้ List ของรายชื่อของ Microphone ที่คอมพิวเตอร์ของเราเชื่อมต่ออยู่ (บางอันอาจเป็นลำโพง ต้องชื่อดีๆ จะเชื่อมต่ออันไหน)


In [17]:
sr.Microphone.list_microphone_names()
Out[17]:
['Microsoft Sound Mapper - Input',  
'Microphone (USB Audio Device)',  

...

'Microphone Array (Realtek(R) Au',  
'Microsoft Sound Mapper - Output]

การเลือกไมโครโฟนที่ใช้

ใช้คำสั่ง sr.Microphone() และรับ argument เป็นตำแหน่งของชื่อไมโครโฟนที่ต้องการใช้ ที่อยู่ใน List ที่ได้จากคำสั่ง sr.Microphone.list_microphone_names() เราจะได้ object Microphone ที่เก็บข้อมูลเกี่ยวกับไมค์ตัวนั้นมา


In [21]:
mic = sr.Microphone(1)
mic
Out[21]:
<speech_recognition.Microphone at 0x22c352d8b88>



 

Recognizer

คือตัวโปรแกรมที่จะใช้ทำความเข้าใจเสียง และส่งออกมาเป็นตัวหนังสือ ซึ่งมีให้เลือกใช้หลายอันมากๆ แต่วันนี้เราจะใช้ Google Web Speech API หรือคำสั่งที่จะช่วยส่งข้อมูลของเราให้กับโปรแกรม Google Web Speech แปลงข้อความเสียงให้เป็นตัวหนังสือ ซึ่งสามารถใช้กับภาษาไทยได้

สร้าง Recognizer

ผ่านคำสั่ง sr.Recognizer() ที่สร้าง Recognizer Object


In [22]:
recog = sr.Recognizer()
recog
Out[22]:
<speech_recognition.Recognizer at 0x22c35af37c8>

 

เปิดไมค์รับเสียง

เราจะใช้คำสั่งให้ recognizer ที่สร้างไว้แล้วเปิดรับเสียงจากไมค์ ผ่านคำสั่ง recog.listen() ที่รับ argument เป็น mic ที่เราเตรียมไว้ ข้อมูลที่ได้มาเราจะเก็บไว้ในตัวแปร audio

แต่ในการเปิดไมค์ จะต้องใช้คำสั่ง with ที่ทำการเปิดไมค์ และนำข้อมูลของไมค์เก็บไว้ในอีกตัวแปร เราจะตั้งชื่อว่า source ซึ่งเป็นที่มาของข้อมูลที่จะใช้กับ recognizer


In [30]:
with mic as source:
 audio = recog.listen(source)

แปลงเสียงเป็นตัวอักษร

ใช้คำสั่ง recog.recognize_google() ที่รับ argument 2 อย่างหลักๆ คือ เสียงที่ต้องการแปลงเป็นตัวหนังสือในกรณีนี้ได้จากการเปิดไมค์ และ ภาษาที่ต้องการให้ใส่ ไปใน parameter language หากไม่ใส่จะจับภาษาอังกฤษ สำหรับภาษาไทยใส่ 'th'

เมื่อแปลงเสียงแล้วเราจะให้แสดงผลผ่านคำสั่ง print()



In [31]:
with mic as source:
 audio = recog.listen(source)
 print(recog.recognize_google(audio,language='th'))
สวัสดีอันนี้เป็นการ Test 

 

วิเคราะห์ต่อเนื่อง

ใช้ while loop เพื่อสร้างการรับค่า และแปลงตัวหนังสืออย่างต่อเนื่อง


In [32]:
with mic as source:
 while True:
  audio = recog.listen(source)
  print(recog.recognize_google(audio,language='th'))
ฮัลโหลสวัสดีครับวันนี้มาพบกับบทเรียน 


 

อยากให้ทำต่อหลังจากเกิด Error?

ใช้ try except เพื่อสั่งคำสั่ง continue ให้วนลูปใหม่เมื่อเกิด error


In [33]:
with mic as source:
 while True:
  audio = recog.listen(source)
  try:
   print(recog.recognize_google(audio,language='th'))
  except:
   continue
สวัสดีครับวันนี้มาพบกับเรื่องของ recognition วันนี้เราก็กลับมาอีกครั้งนะครับในบทเรียน กลับอันติเมท python มีอะไรบ้างนะครับเดี๋ยวเราไปเรียกกันดีกว่าเก่า 

ถ้าชอบบทเรียนนี้ การกด subscribe และชวนเพื่อนมาเรียน จะช่วยเราได้มากอย่างที่คุณคิดไม่ถึงเลย :)


9,880 views0 comments

Comments


bottom of page