Text to Speech
หลังจากที่ลองไปค้นมาก็เจอตัวที่น่าสนใจอยู่สองสามตัวนะครับ ซึ่งแตกต่างกันตามนี้
- API
gTTS by Google ข้อดีคือใช้ร่วมกับภาษาไทยได้เลย ข้อเสียคือใช้ผ่านอินเตอร์เน็ต ทำให้ต้องต่อเน็ตตลอดเวลา และมีข้อจำกัดดูได้จาก
ที่นี้ ไฟล์ที่ใช้จะเป็น MP3 นะครับ วิธีติดตั้งมีตามนี้นะครับ
- pip3 install gTTS
- pip3 install playsound
- กรณีมีปัญหาด้าน Token ให้ใช้คำสั่ง pip3 install gTTS-token ถ้าแก้ไม่ได้อาจจะเพราะใช้งานมากเกินข้อจำกัดนะครับ
- ทดสอบด้วยการลองทำ python script สักไฟล์ เปิด TextEditer สักตัว แล้วใส่โค้ดตามนี้นะครับ
#!/usr/bin/env python3
from gtts import gTTS
from playsound import playsound
contentToRead="สวัสดี valenteer สบายดีไหม"
nation='th'
setNameMp3='testTTS.MP3'
def TextToSpeech(content,nation,name):
tts = gTTS(text=content, lang=nation)
tts.save(name)
playsound(name)
TextToSpeech(contentToRead,nation,setNameMp3)
print("Success") - เซฟในชื่อ "TestTTS.py" ไว้ที่ /home/ MyComputerName ตรง MyComputerName แก้ให้เป็นชื่อเครื่องตัวเองนะครับ แล้วเปิด Terminal ใช้คำสั่ง python3 TestTTS.py นะครับ ถ้าทำงานได้ปกติ ก็จะได้ยินเสียงที่ช่างไร้อารมณ์ออกมาทักทายนะครับ
- ขีดจำกัดการใช้งานนะครับ ห้ามเกิน 5000 ตัวอักษรต่อครั้ง ส่งรีเควสได้ไม่เกิน 300 ครั้งต่อนาที และรวมไม่เกิน 150,000 ตัวอักษรต่อนาที นะครับ
- API
eSpeak นะครับ ตัวนี้เมื่อก่อนจะไม่รองรับภาษาไทย แต่ตอนนี้รองรับ
121 ภาษา ซึ่งมีไทยรวมในนั้นด้วยนะครับ ซึ่งต้องหลังเวอร์ชั่น 1.48.15 ขึ้นไปนะครับ ซึ่งตัวนี้ที่ผมลงใน ubuntu 18.04.5 ยังเป็นเวอร์ชั่นเก่าที่ไม่รองรับภาษาไทยนะครับ ดังนั้นจะยังไม่เขียนอะไรมากนะครับ เพราะมันเป็นส่วนประกอบของ API ข้อ 3. อ้อ แล้วก็มันจะเซฟเป็นไฟล์ wav นะครับ
- sudo apt install espeak -y
- espeak --version เช็คเวอร์ชั่นที่ลง
- espeak --voices หรือเช็คเสียงในภาษาต่างๆ ที่รองรับนะครับ
- sudo apt install espeak -y
- API pyttsx3 ตัวนี้ข้อดีคือใช้แบบ offline ได้นะครับ สนใจดู Document ได้ครับ เมื่อก่อนก็ไม่รองรับภาษาไทยเช่นเดียวกัน
- pip3 install pyttsx3
- เช็คข้อมูลภาษาทั้งหมดได้ด้วย python script นี้นะครับ
#!/usr/bin/env python3
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
print("Voice: %s" % voice.name)
print(" - ID: %s" % voice.id)
print(" - Languages: %s" % voice.languages)
print(" - Gender: %s" % voice.gender)
print(" - Age: %s" % voice.age)
print("\n") - ซึ่งตัวนี้ที่ผมลงใน ubuntu 18.04.5 ยังเป็นเวอร์ชั่นเก่าที่ไม่รองรับภาษาไทยนะครับ ดังนั้นจะยังไม่เขียนอะไรมากนะครับ
ความคิดเห็น
แสดงความคิดเห็น