[TH] Speech to Text & Text to Speech

บทความนี้เป็นตัวอย่างการประยุกต์ใช้ภาษาไพธอนเพื่อเรียกใช้บริการการแปลงเสียงพูดเป็นข้อความหลังจากนั้นส่งข้อความไปให้บริการแปลงข้อความเป็นเสียงของ Google สร้างไฟเสียง mp3 กลับมา สุดท้ายใช้ pygame เล่นเสียงพูดออกทางลำโพง โดยทำงานบนระบบปฏิบัติการ Windows

Speech to Text

Speech to Text เป็นการแปลงเสียงพูดให้เป็นข้อความ โดยในบทความนี้เลือกใช้โมดูล speech_recognition ที่เรียกใช้ API มาจากคลาวด์ของ Google โดยการใช้งานต้องติดตั้งไลบรารี pyaudio ด้วยคำสั่งต่อไปนี้ โดยดาวน์โหลดไฟล์ติดตั้งจากที่นี่ เพื่อดาวน์โหลดรุ่นของตัวติดตั้งที่ตรงกับระบบที่ใช้

pip install pyaudio

หลังจากนั้นติดตั้งไลบรารีของโมดูล Speech to Text ด้วยคำสั่งต่อไปนี้

pip install SpeechRecognition

คำสั่งสำหรับใช้งานคลังคลาสเป็นดังนี้

  1. วัตถุ = SpeechRecognition.Recognizer()
    สำหรับเริ่มต้นทำงาน
  2. whith SpeechRecognition.Microphone() as วัตถุไมโครโฟน
    สำหรับจองการใช้ไมโครโฟน
  3. วัตถุเสียง = วัตถุ.listen( วัตถุไมโครโฟน )
    สำหรับเริ่มอัดเสียงมาเก็บในวัตถุเสียง
  4. ผลลัพธ์=วัตถุ.recognize_google( วัตถุเสียง, None, ‘th’ )
    เพื่อนำวัตถุเสียงไปแปลงเป็นข้อความ

ตัวอย่างการใช้งานเป็นดัง code23-1 และตัวอย่างผลลัพธ์เมื่อพูดคำว่า “สวัสดี” เป็นดังภาพที่ 1

# code23-1 : Speech to Text
import speech_recognition as stt
recog = stt.Recognizer()
with stt.Microphone() as mic:
    print("กำลังอัดเสียง")
    audio = recog.listen( mic )
    try:
        print(recog.recognize_google(audio,None,'th'))
    except stt.UnknownValueError:
        print("Google ไม่เข้าใจเสียงที่นำเข้า")
    except stt.RequestError as e:
        print("ไม่สามารถนำข้อมูลมาจากบริการของ Google: {0}".format(e))
ภาพที่ 1 ผลลัพธ์จากตัวอย่าง code23-1

Text to Speech

Text to Speech เป็นกระบวนการแปลงจากข้อความเป็นเสียงพูด โดยในตัวอย่างบทความนี้เลือกใช้บริการของ Google เพื่ออ่านข้อความออกมาเป็นเสียง ซึ่งผลลัพธ์ที่ได้จาก Google เป็นไฟล์เสียง MP3

บริการแปลงข้อความเป็นเสียงของ Google ต้องติดตั้งคลังไลบรารี gTTS (Google Text to Speech) ซึ่งติดตั้งได้ด้วยคำสั่งต่อไปนี้

pip install gtts

การเรียกใช้คลังคลาสสำหรับเข้าถึงบริการ gTTS ใช้รูปแบบคำสั่งดังนี้

from ggts import gTTS

โดยคำสั่งสำหรับการส่งข้อความไปยังบริการของ Google มีรูปแบบการใช้งานดังนี้

ข้อมูลเสียง = gTTS(text = “ข้อความ”, lang=’th’)

คำสั่งสำหรับนำข้อมูลเสียงที่ได้บันทึกลงไฟล์เสียงประเภท MP3 มีรูปแบบการใช้งานดังนี้

ข้อมูลเสียง.save(“ชื่อไฟล์.mp3”)

ตัวอย่างโปรแกรม code23-2 เป็นการสร้างไฟล์เสียง ‘ยินดีต้อนรับ’ และบันทึกลงไฟล์ ‘welcome.mp3’

# code23-2 : Text to Speech
from gtts import gTTS
tts = gTTS(text='ยินดีต้อนรับค่ะ',lang='th')
tts.save('welcome.mp3')

เล่นเสียงจากไฟล์ MP3

การเล่นไฟล์เสียง MP3 ต้องติดตั้งไลบรารี playsound ด้วยคำสั่งต่อไปนี้

pip install playsound

ตัวอย่างโปรแกรม code23-3 เป็นการอ่านไฟล์เสียง welcome.mp3 ที่ได้จาก code23-2

# code23-3 : Play MP3
import playsound as sound
filename = './welcome.mp3'
sound.playsound(filename, True)

ตัวอย่างโปรแกรม

ตัวอย่างโปรแกรม code23-4 เป็นการรวมตัวอย่าง code23-1, code23-2 และ code23-3 เพื่อฟังเสียงพูดเพื่อแปลงเป็นข้อความ หลังจากนั้นนำข้อความแปลงเป็นไฟล์เสียง สุดท้ายเล่นไฟล์เสียง

# code23-4
import speech_recognition as stt
from gtts import gTTS
import playsound as sound
recog = stt.Recognizer()
textRecog = ""
with stt.Microphone() as mic:
    print("กำลังอัดเสียง")
    audio = recog.listen( mic )
    try:
        textRecog = recog.recognize_google(audio,None,'th')
        print(textRecog)
    except stt.UnknownValueError:
        print("Google ไม่เข้าใจเสียงที่นำเข้า")
    except stt.RequestError as e:
        print("ไม่สามารถนำข้อมูลมาจากบริการของ Google: {0}".format(e))
tts = gTTS(text=textRecog,lang='th')
tts.save('text.mp3')
sound.playsound('text.mp3', True)
ภาพที่ 2 ตัวอย่างผลลัพธ์เมื่อพูดคำว่า “ใช่ไหม ถูกไหม”

สรุป

จากบทความนี้จะพบว่าการใช้ AI ในการแปลงเสียงพูดเป็นข้อความ และการนำข้อความแปลงเป็นเสียงด้วยบริการของ Google ด้วยภาษาไพธอนนั้นกระทำได้ไม่ยาก แต่ต้องเชื่อมต่ออินเทอร์ไว้ตลอดการทำงานของโปรแกรม นอกจากนี้ ผู้อ่านสามารถประยุกต์ใช้ข้อความจากเสียงพูดมาแสดงหรือนำไปจัดเก็บลงไฟล์เพื่อเป็นไฟล์ข้อความได้เช่นเดียวกัน

สุดท้ายนี้หวังว่าบทความนี้คงมีประโยชน์ต่อการศึกษาการเขียนโปรแกรมภาษาไพธอนเพื่อใช้กับงานทางด้าน AI และขอให้สนุกกับการเขียนโปรแกรมครับ

แหล่งที่มา

  1. SpeechRecognition
  2. PyAudio

(C) 2020, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2020-12-03