10 กุมภาพันธ์ 2558

Published กุมภาพันธ์ 10, 2558 by with 0 comment

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/

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

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





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

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

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

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

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

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




eSpeak


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

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

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

เว็บไซต์โครงการ 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

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

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)