Skip to content

Speech synthesis สังเคราะห์เสียงพูดกับภาษา Python

สวัสดีผู้อ่านทุกท่าน  Speech synthesis เป็นเทคโนโลยีสังเคราะห์เสียงพูดในคอมพิวเตอร์ พูดกันให้แบบง่าย ๆ คือ การที่ทำให้คอมพิวเตอร์พูดออกมาเหมือนเสียงพูดของคนได้ โดยเทคโนโลยีนี้ยังต้องพัฒนาอีกต่อไปเรื่อย ๆ ในอนาคต

ส่วนในการเขียนโปรแกรมภาษา Python นั้นได้มีนักพัฒนาได้พัฒนาโมดูลสำหรับงานนี้เพื่อเรียกใช้งานเทคโนโลยี Speech synthesis นี้ออกมาครับ

Speech synthesis กับภาษาไทย

Speech engines ในภาษาไทยนั้นยังต้องปรับปรุงอีกมาก เพราะภาษาไทยเรามีหลักไวยากรณ์จำนวนมาก เป็นภาษาที่บ่บอกความเป็นคนไทย และยังแฝงไปด้วยวัฒนธรรม ความเชื่อ ศรัทธาของแต่ละท้องถิ่นในแผ่นดินไทยอีกด้วย และต้องมีการแบ่งคำและแบ่งประโยค จึงมีความยากในการทำพอสมควร ทำให้เทคโนโลยี Speech synthesis กับภาษาไทย ยังต้องพัฒนาอีกมาก เมื่อเทียบกับภาษาอังกฤษครับ

แล้วในภาษาเขียนโปรแกรมคอมพิวเตอร์อย่าง Python มีโมดูลที่รองรับภาษาไทยไหม ตามไปดูเลยครับ

โมดูลด้าน Speech synthesis ใน Python

pyttsx

pyttsx เป็นโมดูลสำหรับเรียกใช้ Speech engines โดยเรียกใช้ library ของ Speech engines ที่มีอยู่ในแต่ละระบบปฏิบัติการ (Mac OSX, Windows, และ Linux) ใช้ License: BSD License รองรับทั้ง Python 2 , Python 3 (Port)

library ที่เรียกใช้งาน

  • nsss - NSSpeechSynthesizer ใน Mac OS X 10.5 ขึ้นไป
  • sapi5 - SAPI5 ใน Windows XP, Windows Vista, และ (untested) Windows 7
  • espeak - eSpeak (e.g., Ubuntu / Fedora Linux)

สำหรับ Python 2 โหลดได้ที่
https://pypi.python.org/pypi/pyttsx
หรือสั่งติดตั้งด้วย pip

pip install pyttsx

สำหรับ Python 3 (Port) โหลดมาติดตั้งเองจาก
https://github.com/jpercent/pyttsx/

ตัวอย่างการใช้งาน

import pyttsx
engine = pyttsx.init()
engine.say('Greetings!')
engine.say('How are you today?')
engine.runAndWait()

gTTS

gTTS เป็นโมดูลที่ดึง Google TTS (Text-to-Speech) API เข้ามาใช้งาน โดยจะสร้างไฟล์เสียงสังเคราะห์ขึ้นมาในรูปแบบ mp3 ไม่จำกัดความยาว รองรับภาษาต่าง ๆ รวมถึงภาษาไทยด้วย (เวลาใช้งานต้องเรียกใช้อินเทอร์เน็ต) ใช้ License: MIT รองรับทั้ง Python 2.7 และ Python 3 ครับ
สามารถติดตั้งได้โดยสั่ง pip

pip install gTTS

หรือโหลดไฟล์มาติดตั้งเองจาก https://pypi.python.org/pypi/gTTS

ตัวอย่างการใช้งาน

from gtts import gTTS
tts = gTTS(text='Hello',lang='en')
tts.save('hello.mp3')

ผลลัพธ์ รันจะได้ไฟล์ hello.mp3 ออกมา เมื่อเปิดฟังจะได้ยินเสียง "Hello"
ภาษาไทย

from gtts import gTTS
tts = gTTS(text='สวัสดีฉัน ฉันกำลังพูดภาษาไทยค่ะ',lang='th') # text คือ ข้อความ lang คือ รหัสภาษา
tts.save('hello-thai.mp3')

ผลลัพธ์ จะได้ไฟล์ hello-thai.mp3 ออกมา เมื่อเปิดฟังจะได้ยินเสียง "สวัสดีฉัน ฉันกำลังพูดภาษาไทยค่ะ"


eSpeak

eSpeak เป็น Speech engine ที่นิยมกันในต่างประเทศเพราะเป็น Open Source (GPLv3) มีทั้งบน Linux และ Windows รองรับหลากลายภาษาเช่น อังกฤษ และภาษาต่าง ๆ (ไม่รองรับภาษาไทย) ไม่มีโมดูลที่รองรับ eSpeak โดยตรงจาก Python แต่เราสามารถเรียกใช้งานได้ด้วยคำสั่งคอมมาไลน์ โดยสั่งให้ Python ใช้คำสั่งในคอมมาไลน์ครับ

ตัวอย่างการใช้งาน

import subprocess
text = '"Hello world"'
subprocess.call('espeak '+text, shell=True)

เว็บไซต์โครงการ eSpeak http://espeak.sourceforge.net/

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

สำหรับท่านใดสนใจอยากทำ Speech synthesis ภาษาไทย แนะนำให้ศึกษาจาก http://tvis.nectec.or.th/speech/index.php?option=com_content&view=article&id=103&catid=39

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

3 thoughts on “Speech synthesis สังเคราะห์เสียงพูดกับภาษา Python

  1. Thananut Panyaphoem

    ผมก็ pip install gTTS แล้วนะครับใน site-packages ก็มีตัว gTTS-1.0.3-py2.7.egg

    แต่ก็ยัง import ไม่ผ่านเลยครับเศร้าจังผมใช้ Python27 นะครับ

    Reply
  2. ชัชวัฒน์ จิตรบุญ

    ขอสอบถามหน่อยนะครับ พอดีผมใส่ภาษาไทยแล้วได้ไฟล์ mp3 แล้วแต่พอเปิดไม่มีเสียงออกอะครับ แต่ภาษาอังกฤษได้ครับ พอจะทราบไหมครับว่าเป็นเพราะอะไร ขอบคุณครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *