Local TTS ภาษาไทยตัวไหนดี? ทดลอง 6 โมเดลกับงานจริง พร้อมวิธีเลือกให้เหมาะกับคุณ

LEO กำลังทดสอบ Local TTS ภาษาไทย 6 โมเดลในห้องทดลองเสียง ตั้งแต่ข่าวถึงนิยายเกือบ 4 นาที

ลองนึกภาพว่าคุณมีสคริปต์ภาษาไทยอยู่ 20 หน้า และอยากเปลี่ยนมันให้กลายเป็นเสียงบรรยาย

อาจเป็นบทความสำหรับ YouTube นิยายเสียง Podcast เอกสารภายใน หรือเนื้อหาของลูกค้าที่ไม่อยากส่งออกไปประมวลผลบน Cloud

คำถามแรกที่หลายคนน่าจะถามคือ

“มี Open Source TTS ภาษาไทยตัวไหนเสียงดีที่สุดบ้าง?”

คำถามนี้ฟังดูง่าย แต่พอลองใช้งานจริงกลับซับซ้อนกว่าที่คิด

บางโครงการเปิดให้ดูเฉพาะโค้ด แต่ไม่ได้แจกไฟล์โมเดล บางรุ่นดาวน์โหลดได้ แต่ห้ามใช้หาเงิน บางรุ่นได้คะแนนวิจัยดีมาก แต่เรายังโหลดมาติดตั้งบนเครื่องไม่ได้

เพราะฉะนั้น ก่อนจะถามว่า “เสียงของตัวไหนดีที่สุด” เราควรถามเพิ่มอีกสามข้อว่า

  1. มันอ่านภาษาไทยได้ดีแค่ไหน
  2. เราดาวน์โหลดมาติดตั้งบนเครื่องได้จริงหรือไม่
  3. License อนุญาตให้ใช้กับงานของเราหรือเปล่า

ผมจึงนำ Local TTS ภาษาไทยหลายตัวมาทดลองกับงานที่ใกล้เคียงการใช้งานจริง ทั้งประโยคทั่วไป ตัวเลข ภาษาอังกฤษ Podcast และนิยายยาว

ผลที่ได้ค่อนข้างน่าสนใจ เพราะโมเดลที่ฟังดีที่สุด ไม่ได้ชนะทุกตาราง และโมเดลที่ได้คะแนนวิจัยดีที่สุด ก็ยังไม่ใช่ตัวที่ทุกคนดาวน์โหลดไปใช้ได้ในวันนี้


คำตอบแบบไม่ต้องอ่านทั้งบทความ

ถ้าต้องการคำตอบเร็ว ๆ ผมสรุปให้แบบนี้ครับ

เสียงภาษาไทยที่ผมฟังแล้วชอบที่สุด

hotdogs/omnivoice-thai

ในการทดสอบครั้งนี้ เสียงพูดภาษาไทยฟังชัดและเป็นธรรมชาติที่สุด โดยเฉพาะเสียง ที่ออกได้ชัดกว่า OmniVoice รุ่นฐาน

เมื่อนำไปอ่านนิยายไทยยาวเกือบ 4 นาที โดยแบ่งสคริปต์ออกเป็นช่วงสั้น ๆ โมเดลทำ Round-trip CER ได้ 2.01% และไม่เกิดปัญหาเสียงวนซ้ำ

แต่ยังมีข้อควรระวังสองเรื่องใหญ่

  • อ่านตัวเลขดิบและคำภาษาอังกฤษผิดได้
  • Base Model ใช้ License แบบ CC-BY-NC ซึ่งมีข้อจำกัดด้านการใช้งานเชิงพาณิชย์

ดังนั้น ตอนนี้ผมมองว่าเหมาะกับการทดลอง งานส่วนตัว งานวิจัย และงานที่ไม่ใช่เชิงพาณิชย์มากกว่า

โมเดลที่ผลวิจัยดูดีที่สุด

JaiTTS-v1.0

งานวิจัยรายงานค่า CER เพียง 1.94% สำหรับเสียงสั้น และ 2.55% สำหรับเสียงยาว ถือว่าโดดเด่นมาก

ปัญหาคือ ตอนที่ตรวจสอบบทความนี้ เรายังไม่พบไฟล์น้ำหนักของ JaiTTS-v1.0 ที่เปิดให้ดาวน์โหลดไปติดตั้งใช้งานแบบ Local ได้อย่างชัดเจน

พูดง่าย ๆ คือ รถรุ่นนี้ทำเวลาในสนามทดสอบได้ดีที่สุด แต่ยังไม่ได้เปิดขายให้คนทั่วไปนำกลับบ้าน

ตัวที่เริ่มง่ายที่สุดโดยไม่ต้องมี GPU

VachanaTTS

VachanaTTS ทำงานบน CPU ได้ มีเสียงสำเร็จรูปให้เลือก 4 เสียง และไม่ต้องเตรียมไฟล์เสียงต้นแบบ

หลังจากโหลดโมเดลเสร็จแล้ว การสร้างเสียงความยาวประมาณ 9–11 วินาที ใช้เวลาประมาณ 0.44–0.50 วินาทีบนเครื่องทดสอบ

ความเป็นธรรมชาติอาจยังสู้โมเดลขนาดใหญ่ไม่ได้ แต่เหมาะมากสำหรับคนที่อยากเริ่มทดลอง Local TTS โดยไม่ต้องมีการ์ดจอแรง ๆ


สรุปว่าใครควรเริ่มจากตัวไหน

เป้าหมายของคุณ ตัวที่ควรลองก่อน เหตุผล สิ่งที่ต้องตรวจเพิ่ม
ต้องการติดตามเทคโนโลยีเสียงไทยที่ผลวิจัยดีที่สุด JaiTTS-v1.0 คะแนน CER และผลประเมินจากมนุษย์โดดเด่น ยังไม่พบไฟล์น้ำหนัก v1.0 ที่ดาวน์โหลดมาใช้ Local ได้
ต้องการทำเสียงบรรยายไทยบน GPU OmniVoice Thai ฟังเป็นธรรมชาติและออกเสียงภาษาไทยชัดที่สุดในชุดทดสอบ ต้องแบ่งสคริปต์และตรวจ License ของ Base Model
ต้องการใช้ OmniVoice หลายภาษา OmniVoice รุ่นฐาน รองรับภาษาจำนวนมากและมีระบบออกแบบเสียง เสียงไทยด้อยกว่ารุ่น Fine-tune และเป็น Non-commercial
ไม่มี GPU และอยากเริ่มง่าย VachanaTTS ทำงานบน CPU ได้เร็วและมีเสียงพร้อมใช้ ไม่ใช่ Voice Cloning และควรตรวจข้อมูลสิทธิ์เพิ่มเติม
ต้องการทดลอง Voice Cloning เพื่อการวิจัย JaiTTS-F5TTS มีโมเดลให้ดาวน์โหลดและมี Benchmark ไม่ใช่ JaiTTS-v1.0 และระบุให้ใช้ด้านวิจัยเป็นหลัก

สิ่งสำคัญคือ คำว่า “ดีที่สุด” มีได้หลายความหมาย

โมเดลหนึ่งอาจได้คะแนนวิจัยดีที่สุด แต่อาจติดตั้งยาก โมเดลหนึ่งอาจฟังดีที่สุด แต่ห้ามใช้หาเงิน ส่วนอีกโมเดลอาจเสียงธรรมดากว่า แต่ทำงานบน CPU ได้อย่างรวดเร็ว

ดังนั้น โมเดลที่ดีที่สุดสำหรับคุณ ต้องผ่านพร้อมกันสามด่าน ได้แก่

เสียงดี เครื่องของเรารันไหว และ License อนุญาตให้ใช้


Local TTS คืออะไร?

TTS ย่อมาจาก Text to Speech หรือระบบที่เปลี่ยนข้อความให้กลายเป็นเสียงพูด

ส่วนคำว่า Local หมายถึง การประมวลผลเกิดขึ้นบนคอมพิวเตอร์หรือเซิร์ฟเวอร์ที่เราควบคุมเอง

หลังจากดาวน์โหลดโปรแกรมและโมเดลครบแล้ว เราสามารถสร้างเสียงได้โดยไม่ต้องส่งสคริปต์ไปยังผู้ให้บริการ Cloud ทุกครั้ง

ข้อดีที่เห็นได้ชัดคือเรื่องความเป็นส่วนตัว

ตัวอย่างเช่น หากคุณกำลังทำหนังสือที่ยังไม่เปิดตัว มีเอกสารภายในองค์กร หรือกำลังทำงานให้ลูกค้า คุณสามารถลดการส่งข้อมูลออกนอกเครื่องได้

อีกข้อคือ ไม่ต้องเสียค่าบริการตามจำนวนตัวอักษรหรือความยาวของไฟล์เสียงทุกครั้งที่สร้าง

แต่ Local ไม่ได้แปลว่าไม่มีต้นทุนเลย

เรายังต้องจ่ายด้วยสิ่งเหล่านี้

  • เวลาในการติดตั้งและแก้ปัญหา
  • พื้นที่สำหรับเก็บไฟล์โมเดล
  • กำลังประมวลผลของ CPU หรือ GPU
  • ค่าไฟ
  • เวลาในการตรวจเสียง
  • การดูแลระบบและอัปเดตโปรแกรม

ถ้าใช้ระบบ Voice Cloning ก็ยังต้องรับผิดชอบเรื่องความยินยอมและสิทธิ์ของเจ้าของเสียงด้วย


TTS เปลี่ยนข้อความเป็นเสียงได้อย่างไร?

ลองนึกว่า TTS เป็นห้องอัดเสียงขนาดเล็ก ซึ่งมีคนทำงานอยู่สามคน

คนแรก: เตรียมบทพูด

หน้าที่ของเขาคือดูว่า ข้อความควรถูกอ่านอย่างไร

ตัวอย่างเช่น

12.5

ควรอ่านว่า

สิบสองจุดห้า

หรือควรอ่านทีละตัวว่า

หนึ่ง สอง จุด ห้า

คำตอบขึ้นอยู่กับว่าตัวเลขนั้นอยู่ในบริบทอะไร

คนที่สอง: กำหนดเสียงและจังหวะ

โมเดลจะดูข้อความแล้วตัดสินว่า คำแต่ละคำควรออกเสียงอย่างไร ควรหยุดตรงไหน และควรใช้จังหวะแบบใด

คนที่สาม: สร้างคลื่นเสียง

ส่วนที่เรียกว่า Vocoder จะนำข้อมูลเสียงที่โมเดลสร้างขึ้นมาแปลงเป็นคลื่นเสียงจริง ซึ่งสามารถบันทึกเป็นไฟล์ WAV ได้

ถ้าเป็นระบบ Voice Cloning จะมีข้อมูลเพิ่มเข้ามาอีกชิ้นหนึ่ง คือ เสียงอ้างอิง

ระบบจะฟังคลิปสั้น ๆ เพื่อจับลักษณะของเสียง เช่น

  • เสียงสูงหรือเสียงต่ำ
  • พูดเร็วหรือพูดช้า
  • น้ำเสียงนุ่มหรือหนักแน่น
  • จังหวะการเว้นคำ

จากนั้นจึงนำลักษณะเหล่านี้ไปใช้กับข้อความใหม่

นี่คือเหตุผลที่ไฟล์เสียงอ้างอิงควรสะอาด ไม่มีเสียงรบกวน และข้อความ Transcript ต้องตรงกับสิ่งที่พูดจริง

ที่สำคัญ เจ้าของเสียงต้องอนุญาตให้ใช้งานอย่างชัดเจน


ทำไมสคริปต์ยาวจึงมักสร้างปัญหา?

หลายคนคิดว่า หากโมเดลอ่านหนึ่งประโยคได้ดี ก็น่าจะอ่านข้อความยาว 10 นาทีได้ดีเช่นกัน

แต่ในความจริง มันไม่จำเป็นต้องเป็นแบบนั้น

การอ่านข้อความยาวไม่ได้มีแค่เรื่องการออกเสียงคำให้ถูก โมเดลยังต้องรักษาสิ่งเหล่านี้ให้คงที่ด้วย

  • เสียงของผู้พูด
  • ความเร็ว
  • ระดับเสียง
  • จังหวะการหยุด
  • อารมณ์
  • ความต่อเนื่องของประโยค

ในการทดสอบ ผมลองส่งข่าวความยาว 1,473 ตัวอักษรให้ OmniVoice Thai สร้างรวดเดียว

ช่วงต้นยังฟังได้ตามปกติ แต่เมื่ออ่านไปถึงช่วงหลัง โมเดลเริ่มสร้างพยางค์ซ้ำคล้ายแผ่นเสียงตกร่อง

เมื่อนำข้อความเดียวกันมาแบ่งเป็นช่วงตามความหมาย แล้วใช้เสียงอ้างอิงเดียวกันทุกช่วง ปัญหานี้กลับหายไป

ดังนั้น สำหรับงานยาว อย่าส่งสคริปต์ทั้งหมดให้โมเดลอ่านรวดเดียว

ควรแบ่งเป็นประโยคหรือย่อหน้าสั้น ๆ สร้างทีละช่วง ตรวจทีละไฟล์ แล้วจึงนำมาต่อกัน


คำว่า Open Source ไม่ได้หมายความว่าใช้ทำอะไรก็ได้

จุดนี้เป็นเรื่องที่คนเริ่มต้นสับสนกันมากที่สุด

เมื่อเราเข้าไปในหน้าโครงการแล้วเห็นคำว่า Apache 2.0 หรือ MIT เราอาจคิดทันทีว่า

“ดีเลย โหลดไปใช้ขายงานได้แน่นอน”

แต่ระบบ TTS หนึ่งตัวไม่ได้มีเพียงโค้ด

เราต้องตรวจอย่างน้อย 4 ชั้น

1. โค้ด

คือโปรแกรมที่ใช้โหลดโมเดล เตรียมข้อความ และสร้างเสียง

2. น้ำหนักโมเดล

คือสิ่งที่โมเดลเรียนรู้มาจากข้อมูล และเป็นส่วนสำคัญที่ใช้สร้างเสียงจริง

3. ข้อมูลฝึกและเสียงต้นทาง

ข้อมูลที่ใช้สอนโมเดลอาจมีเงื่อนไขไม่เหมือนกับ License ของโค้ด

4. เสียงอ้างอิงของเรา

ถ้าใช้ Voice Cloning เราต้องมีสิทธิ์ใช้เสียงนั้น และต้องได้รับความยินยอมจากเจ้าของเสียง

ตัวอย่างที่เห็นได้ชัดคือ OmniVoice

โค้ดของโครงการใช้ Apache 2.0 แต่น้ำหนักโมเดลใช้ CC-BY-NC เพราะมีข้อจำกัดจากข้อมูลที่ใช้ฝึก

คำว่า NC ย่อมาจาก Non-commercial หรือไม่อนุญาตให้ใช้เชิงพาณิชย์ตามเงื่อนไขของ License

เพราะฉะนั้น การที่โค้ดเปิด ไม่ได้แปลว่าน้ำหนักโมเดลจะนำไปทำบริการหารายได้ได้โดยอัตโนมัติ


JaiTTS-v1.0: คะแนนวิจัยดีมาก แต่ยังโหลดมาใช้ไม่ได้

JaiTTS-v1.0 เป็นโมเดลที่พัฒนาขึ้นมาสำหรับภาษาไทยโดยเฉพาะ โดยใช้พื้นฐานจากสถาปัตยกรรม VoxCPM

จุดที่น่าสนใจคือ โมเดลออกแบบมาให้รับข้อความดิบที่มีทั้งตัวเลขและภาษาไทยสลับภาษาอังกฤษได้ โดยไม่จำเป็นต้องแปลงข้อความล่วงหน้าทุกจุด

งานวิจัยทดสอบทั้งเสียงสั้น 1–15 วินาที และเสียงยาว 16–30 วินาที

ผลที่รายงานมีดังนี้

  • เสียงสั้นได้ CER 1.94%
  • เสียงยาวได้ CER 2.55%
  • Real-Time Factor เท่ากับ 0.1136
  • ชนะ ElevenLabs eleven_v3 จำนวน 161 จาก 200 คู่
  • ชนะ MiniMax speech-2.8-hd จำนวน 122 จาก 200 คู่

ค่า Real-Time Factor หรือ RTF อธิบายง่าย ๆ ว่า โมเดลใช้เวลาสร้างเสียงเทียบกับความยาวของเสียงจริงเท่าไร

RTF 0.1136 หมายความว่า ในสภาพแวดล้อมที่ผู้พัฒนาใช้ทดสอบ โมเดลสร้างเสียงได้เร็วกว่าการเปิดเสียงฟังตามเวลาจริงประมาณ 8–9 เท่า

ฟังดูดีมาก แต่มีจุดที่ต้องระวัง

Repository ของ JaiTTS เปิด Benchmark โค้ดทดสอบ และ Demo ของ JaiTTS-v1.0 ส่วนโมเดลที่พบว่าสามารถดาวน์โหลดได้บน Hugging Face คือ JaiTTS-F5TTS

สองชื่อนี้ไม่ใช่โมเดลรุ่นเดียวกัน

ดังนั้น บทสรุปที่เหมาะสมคือ

JaiTTS-v1.0 เป็นผู้นำจากหลักฐานงานวิจัยที่เผยแพร่ แต่ยังไม่ใช่โมเดล Local ที่เราสามารถแนะนำให้ทุกคนดาวน์โหลดไปติดตั้งได้ในตอนนี้


JaiTTS-F5TTS: โหลดได้จริง แต่ไม่ใช่รุ่น v1.0

JaiTTS-F5TTS เป็นโมเดลที่พัฒนาต่อยอดมาจาก F5-TTS และมีไฟล์น้ำหนักให้ดาวน์โหลดได้จริง

โมเดลนี้เพิ่มส่วนที่เรียกว่า Duration Predictor เพื่อช่วยประมาณความยาวของเสียงภาษาไทยให้ดีขึ้น

เหตุผลที่ต้องมีส่วนนี้ เพราะภาษาไทย ตัวเลข และข้อความที่ใช้หลายชุดตัวอักษร ไม่สามารถประมาณความยาวเสียงจากจำนวนไบต์ UTF-8 ได้อย่างแม่นยำ

ผล Benchmark ที่ผู้พัฒนาเผยแพร่แสดงให้เห็นว่า JaiTTS-F5TTS ยังมีช่องว่างจาก JaiTTS-v1.0 พอสมควร

โมเดล CER เสียงสั้น CER เสียงยาว RTF
JaiTTS-v1.0 1.94% 2.55% 0.1136
JaiTTS-F5TTS พร้อม Duration Predictor 4.26% 11.57% 0.1652
JaiTTS-F5TTS 4.78% 12.63% 0.1138

JaiTTS-F5TTS จึงน่าสนใจในฐานะโมเดลสำหรับศึกษาและทดลอง Voice Cloning ภาษาไทย

แต่ไม่ควรนำชื่อไปใช้แทน JaiTTS-v1.0 และ Model Card ยังระบุการใช้งานในลักษณะ Research Prototype สำหรับการวิจัยและ Benchmark เป็นหลัก


OmniVoice: เก่งกับประโยคทั่วไป แต่ต้องระวังตัวเลข

OmniVoice เป็นโมเดล Zero-shot TTS ขนาดประมาณ 0.6 พันล้านพารามิเตอร์ และรองรับมากกว่า 600 ภาษา

โมเดลมีความสามารถหลักหลายแบบ ได้แก่

  • Voice Cloning ใช้เสียงตัวอย่างเป็นต้นแบบ
  • Voice Design สั่งลักษณะเสียงที่ต้องการ
  • Auto Voice ให้ระบบเลือกเสียงให้อัตโนมัติ

ในการทดสอบ ผมรัน OmniVoice 0.1.5 บน RTX 4080 และใช้ Auto Voice โดยกำหนดภาษาเป็นภาษาไทย

ข้อความที่นำมาทดลองคือ

ในคืนที่เงียบสงบ เมืองทั้งเมืองค่อย ๆ ลดเสียงลง เหลือเพียงแสงจากหน้าต่าง และเรื่องเล่าที่กำลังเริ่มต้นขึ้น

จากนั้นนำไฟล์เสียงที่ได้ไปให้ Whisper Large v3 Turbo ถอดกลับเป็นข้อความ

ผลที่ได้แตกต่างจากต้นฉบับเพียง 1 ตัวอักษรจากทั้งหมด 76 ตัวอักษร หรือคิดเป็น Round-trip CER 1.32%

สำหรับประโยคบรรยายทั่วไป ถือว่าทำได้ดีมาก

แต่เมื่อเปลี่ยนเป็นข้อความนี้

วันที่ 31 กรกฎาคม 2026 ทีม AI ตรวจรายงาน 3 ฉบับ ใช้เวลา 12.5 นาที ก่อนส่งไฟล์ PDF เวอร์ชัน 2 ให้ลูกค้า

ผลเริ่มมีปัญหา

ทั้งวันที่ ปี ทศนิยม คำว่า AI, PDF และคำว่า “เวอร์ชัน” มีความคลาดเคลื่อนหลายจุด ทำให้ Round-trip CER เพิ่มขึ้นเป็น 28.57% ในการรันครั้งนั้น

เรื่องนี้ไม่ได้หมายความว่า OmniVoice อ่านตัวเลขไม่ได้ทุกครั้ง

แต่หมายความว่า เราไม่ควรส่งข้อความดิบที่เต็มไปด้วยตัวเลข ตัวย่อ และคำอังกฤษเข้าไป โดยหวังว่าโมเดลจะตัดสินคำอ่านถูกเองทั้งหมด

ทางที่ปลอดภัยกว่าคือเปลี่ยนข้อความก่อน เช่น

12.5 นาที

เป็น

สิบสองจุดห้านาที

และเปลี่ยนคำย่อให้เป็นรูปที่ต้องการให้อ่านจริง

กระบวนการนี้เรียกว่า Text Normalization


OmniVoice Thai: ตัวที่ฟังดีที่สุดในการทดลองครั้งนี้

hotdogs/omnivoice-thai เป็นโมเดลที่ Fine-tune ต่อจาก OmniVoice รุ่นฐาน

คำว่า Fine-tune อธิบายง่าย ๆ ว่า เป็นการนำโมเดลที่มีอยู่แล้วมาฝึกเพิ่มด้วยข้อมูลภาษาไทย เพื่อให้เข้าใจเสียงและการออกเสียงภาษาไทยดีขึ้น

ผู้สร้างระบุว่าใช้ข้อมูลภาษาไทยประมาณ 20,000 Utterances รวม 12.6 ชั่วโมง จากผู้พูด 2 คน

ไฟล์สำหรับ Inference มีขนาดประมาณ 2.45 GB ส่วนหน้า Files ทั้งหมดมีขนาดประมาณ 7.36 GB เพราะมีไฟล์ Optimizer จากขั้นตอนการฝึกอยู่ด้วย

ข้อจำกัดคือ ข้อมูลฝึกมีไม่มาก และ Transcript บางส่วนถูกสร้างจากระบบ ASR จึงอาจมีคำผิดติดอยู่ในชุดข้อมูล

เมื่อทดสอบด้วยข้อความชุดเดียวกับ OmniVoice รุ่นฐาน ได้ผลดังนี้

โมเดล CER ประโยคบรรยาย CER ตัวเลขดิบ เวลารวมโหลดโมเดล
OmniVoice รุ่นฐาน 1.32% 28.57% 11.0–11.7 วินาที
OmniVoice Thai 1.32% 37.14% 11.2–11.7 วินาที

ถ้าดูเฉพาะตัวเลข OmniVoice Thai ไม่ได้ชนะรุ่นฐานในข้อความที่มีตัวเลขดิบ

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

นี่เป็นตัวอย่างที่ดีว่า คะแนน CER กับความรู้สึกของผู้ฟังไม่ได้วัดสิ่งเดียวกัน

CER ช่วยดูว่าคำตกหรือคำเพี้ยนมากน้อยแค่ไหน แต่ไม่ได้วัดว่าเสียงไพเราะหรือไม่ น้ำเสียงฟังแข็งหรือไม่ หรือพยัญชนะแต่ละตัวออกเสียงคมชัดแค่ไหน

สำหรับ Podcast และนิยายไทย ผมจึงเลือก OmniVoice Thai เป็นตัวแรกที่น่าลอง

แต่สำหรับสคริปต์ที่มีตัวเลข วันที่ ทศนิยม และคำภาษาอังกฤษจำนวนมาก ยังต้องทำ Text Normalization และฟังตรวจทุกช่วง


VachanaTTS: เบา เร็ว และไม่ต้องมี GPU แรง

VachanaTTS เป็นโมเดลภาษาไทยแบบ VITS/Piper ซึ่งให้ไฟล์โมเดลในรูปแบบ ONNX และมีแพ็กเกจ vachanatts สำหรับเรียกใช้งาน

รองรับทั้ง CPU และ GPU และมีเสียงสำเร็จรูปให้เลือก 4 เสียง

  • th_f_1
  • th_m_1
  • th_f_2
  • th_m_2

ข้อดีคือ ไม่ต้องเตรียมเสียงอ้างอิง ไม่ต้องทำ Voice Cloning และไม่จำเป็นต้องมีการ์ดจอระดับสูง

ผมทดสอบ VachanaTTS 0.0.7 ด้วย ONNX Runtime บน CPU

การเรียกใช้งานครั้งแรกของแต่ละเสียงใช้เวลาประมาณ 5–7 วินาที เพราะระบบต้องโหลดและอุ่นโมเดลก่อน

หลังจากนั้น การสร้างเสียงความยาวประมาณ 9–11 วินาที ใช้เวลาเพียง 0.44–0.50 วินาที

เสียง CER ประโยคบรรยาย CER ตัวเลขดิบ เวลาสร้างรอบหลัง
th_f_1 9.21% 17.14% 0.44–0.47 วินาที
th_m_1 3.95% 17.14% 0.46–0.47 วินาที
th_f_2 5.26% 15.71% 0.45–0.47 วินาที
th_m_2 10.53% 10.00% 0.47–0.50 วินาที

สิ่งที่น่าสนใจคือ เสียงที่ทำคะแนนดีที่สุดไม่ได้เหมือนกันในทุกข้อความ

th_m_1 ทำได้ดีที่สุดกับประโยคบรรยายทั่วไป ส่วน th_m_2 ทำได้ดีที่สุดกับข้อความที่มีตัวเลขดิบในการรันนี้

ดังนั้น อย่าเลือกเสียงจากคำว่าเสียงชายหรือเสียงหญิงเพียงอย่างเดียว

ควรนำสคริปต์จริงของเราไปทดลองกับทุกเสียง แล้วฟังด้วยหูของเราเอง


โมเดลกลุ่ม F5-TTS และตัวเลือกอื่น

ThonburianTTS

ThonburianTTS เป็นโมเดล F5-TTS ที่ปรับมาสำหรับภาษาไทย รองรับ Voice Cloning จากเสียงอ้างอิงสั้น ๆ

มีทั้งรุ่นที่รับอักษรไทยโดยตรงและรุ่นที่รับ IPA

จุดแข็งคือเป็นโครงการภาษาไทยที่ดาวน์โหลดได้ และมีขั้นตอนใช้งานค่อนข้างชัดเจน

อย่างไรก็ตาม น้ำหนักโมเดลใช้ License แบบ CC BY-NC-SA 4.0 ซึ่งมีข้อจำกัดด้านการใช้งานเชิงพาณิชย์

ใน Benchmark ของ JaiTTS โมเดลนี้ได้ CER 6.26% และ Speaker Similarity 0.48 สำหรับเสียงสั้น

ยังเป็นโครงการที่น่าสนใจสำหรับการทดลองและงานวิจัย แต่จากการรันครั้งนี้ ผมยังไม่เลือกเป็นตัวแรกสำหรับงานบรรยายยาว

F5-TTS-THAI รุ่น v1

แพ็กเกจ f5-tts-th รุ่น 1.0.9 ใช้โมเดลจาก VIZINTZOR/F5-TTS-THAI

ข้อดีคือมี Pipeline พร้อมใช้งาน และสามารถแบ่งข้อความยาวตามจำนวนตัวอักษรได้อัตโนมัติ

แต่การแบ่งตามจำนวนตัวอักษรไม่ได้หมายความว่าจะตรงกับจังหวะการพูดเสมอไป

บางครั้งระบบอาจตัดกลางประโยคหรือแบ่งตรงตำแหน่งที่ไม่เป็นธรรมชาติ จึงควรฟังไฟล์ที่นำมาต่อกันแล้วด้วย

MMS-TTS Thai

MMS-TTS Thai ของ Meta เป็นโมเดล VITS ขนาดประมาณ 36.3 ล้านพารามิเตอร์

มีขนาดเล็กกว่ากลุ่ม Voice Cloning และใช้งานผ่าน Transformers ได้ค่อนข้างตรงไปตรงมา

ไม่ต้องมีเสียงอ้างอิง แต่ก็ไม่ได้ออกแบบมาเพื่อเลียนเสียงของผู้ใช้

น้ำหนักโมเดลใช้ License แบบ CC-BY-NC 4.0

F5-TTS-TH-V2

F5-TTS-TH-V2 รับข้อมูลในรูปแบบ Phoneme เพื่อช่วยลดข้อผิดพลาดในการอ่าน

วิธีนี้มีประโยชน์กับชื่อเฉพาะหรือคำที่โมเดลอ่านผิดซ้ำ ๆ เพราะเราสามารถกำหนดเสียงอ่านได้ละเอียดขึ้น

สิ่งที่ต้องแลกคือ เสียงอาจฟังเป็นธรรมชาติน้อยลง และ Model Card ที่ตรวจพบยังไม่แสดง License อย่างชัดเจน


เราทดสอบกันอย่างไร?

การทดสอบแบ่งออกเป็นสามช่วง

ช่วงแรก: ข้อความพื้นฐาน

ใช้ข้อความสามแบบ

  1. ประโยคบรรยายภาษาไทยทั่วไป
  2. ข้อความที่มีวันที่ ปี ตัวเลข ทศนิยม AI และ PDF
  3. ข้อความเดียวกัน แต่เขียนตัวเลขและตัวย่อเป็นคำอ่าน

ช่วงนี้ทดสอบกับ VachanaTTS, OmniVoice รุ่นฐาน และ OmniVoice Thai รวมทั้งหมด 18 ไฟล์

ช่วงที่สอง: Podcast และนิยาย

ใช้ข้อความสองรูปแบบ

  • อินโทร Podcast ที่มีชื่อแบรนด์ภาษาอังกฤษ
  • ฉากเปิดนิยายไทยที่ต้องรักษาจังหวะและบรรยากาศ

ทดสอบกับ OmniVoice สองรุ่น VachanaTTS สี่เสียง JaiTTS-F5TTS, F5-TTS-THAI v1 และ ThonburianTTS รวมอีก 18 ไฟล์

ช่วงที่สาม: เสียงยาว

ใช้ OmniVoice Thai สร้างเสียงยาวอีก 3 ไฟล์ ได้แก่

  • ข่าวสมมติ
  • นิยายจีนแปลไทยที่เขียนขึ้นใหม่
  • นิยายไทยร่วมสมัยที่เขียนขึ้นใหม่

รวมทั้งโครงการมีไฟล์เสียงทั้งหมด 39 ไฟล์

จากนั้นใช้ Whisper Large v3 Turbo ถอดเสียงกลับเป็นข้อความ และคำนวณความแตกต่างระดับตัวอักษรหลังตัดช่องว่างและเครื่องหมายวรรคตอนออก


CER คืออะไร?

CER ย่อมาจาก Character Error Rate

อธิบายแบบง่ายที่สุดคือ เรานำข้อความที่ได้จากการถอดเสียงกลับมาเปรียบเทียบกับข้อความต้นฉบับ แล้วดูว่ามีตัวอักษรผิด หาย หรือเพิ่มขึ้นมากแค่ไหน

คะแนนยิ่งต่ำ โดยทั่วไปหมายความว่า ข้อความที่ถอดกลับใกล้กับต้นฉบับมากขึ้น

แต่การทดลองนี้ใช้ Round-trip CER

เส้นทางของข้อมูลเป็นแบบนี้

ข้อความ → TTS สร้างเสียง → Whisper ถอดกลับเป็นข้อความ → คำนวณ CER

ดังนั้น ความผิดพลาดอาจเกิดได้จากสองฝั่ง

  • TTS อ่านผิด
  • Whisper ฟังถูกแต่เขียนกลับมาเป็นอีกรูปหนึ่ง

ตัวอย่างเช่น TTS อาจอ่านว่า “สามสิบเอ็ด” ได้ถูกต้อง แต่ Whisper เขียนกลับมาเป็น 31

เสียงไม่ได้ผิด แต่ตัวอักษรไม่ตรงกัน ทำให้ CER สูงขึ้น

Round-trip CER จึงเหมาะกับการช่วยค้นหาจุดเสี่ยง แต่ไม่ควรใช้เป็นคะแนนตัดสินคุณภาพเสียงทั้งหมด


สิ่งที่การทดสอบนี้ยังไม่ได้วัด

ผลในบทความนี้ยังไม่ได้ครอบคลุมเรื่องต่อไปนี้

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

ดังนั้น ผลในบทความนี้ควรมองเป็นข้อมูลจากการทดสอบบนเครื่องหนึ่งชุด ไม่ใช่คำตัดสินสุดท้ายสำหรับทุกเครื่องและทุกงาน


ผลทดสอบเสียงสั้น: Podcast และนิยาย

สำหรับการทดสอบงานจริง ผมสร้าง Listening Pack รวม 18 ไฟล์

OmniVoice ใช้เสียงผู้ดำเนินรายการชายวัยกลางคนสำหรับ Podcast และเสียงผู้บรรยายหญิงวัยกลางคนเสียงต่ำสำหรับนิยาย

VachanaTTS ใช้เสียงสำเร็จรูปทั้ง 4 เสียง

ส่วน JaiTTS-F5TTS, F5-TTS-THAI v1 และ ThonburianTTS ใช้เสียงอ้างอิงสังเคราะห์ชุดเดียวกัน ความยาว 5.41 วินาที พร้อมกำหนดความเร็วและ Seed เหมือนกัน

โมเดลหรือเสียง Podcast CER นิยาย CER งานที่น่าลอง
OmniVoice รุ่นฐาน 17.46% 3.55% นิยายและงาน Voice Design
OmniVoice Thai 19.05% 3.55% งานที่ต้องการภาษาไทยชัด โดยเฉพาะเสียง ร
JaiTTS-F5TTS 19.84% 2.84% นิยายและ Voice Cloning เพื่อการวิจัย
F5-TTS-THAI v1 23.02% 6.38% ทดลอง Pipeline แบ่งข้อความอัตโนมัติ
ThonburianTTS megaF5 38.10% 61.70% ยังไม่แนะนำสำหรับงานยาวจากการรันนี้
Vachana th_f_1 9.52% 14.18% งานสั้นที่ยอมตรวจคำอ่าน
Vachana th_m_1 5.56% 6.38% Podcast เชิงข้อมูล
Vachana th_f_2 7.14% 7.09% เสียงหญิงที่ค่อนข้างสมดุล
Vachana th_m_2 11.11% 8.51% เสียงชายอีกทางเลือกหนึ่ง

คะแนน Podcast ของหลายโมเดลสูงขึ้น เพราะ Whisper ถอดชื่อแบรนด์ “อินไซต์ฟูลเอไอเวิลด์” ออกมาเป็นคำภาษาอังกฤษคนละรูป

นี่เป็นตัวอย่างว่า ชื่อแบรนด์ ชื่อคน และคำทับศัพท์ ควรมีพจนานุกรมคำอ่านเฉพาะของตัวเอง

อีกจุดหนึ่งที่ต้องระวังคือ อย่าดูแต่คะแนนรวม

F5-TTS-THAI v1 ทำคำปฏิเสธในวลี “ไม่ควรถูกเปิด” หายไป

แม้จะเป็นเพียงหนึ่งคำ แต่ทำให้ความหมายของประโยคเปลี่ยนไปเกือบตรงกันข้าม

สำหรับงานจริง ความผิดพลาดแบบนี้สำคัญกว่าคะแนนรวมหลายเปอร์เซ็นต์


ผลทดสอบเสียงยาว: OmniVoice Thai ต้องใช้ Workflow ที่ถูกต้อง

หลังฟังไฟล์จากทุกโมเดล ผมเลือก OmniVoice Thai เป็นตัวที่พูดภาษาไทยได้ดีที่สุดโดยรวมในการทดสอบนี้

ไม่ใช่เพราะได้ CER ต่ำสุดทุกข้อความ แต่เพราะฟังแล้วถ้อยคำภาษาไทยชัดกว่า โดยเฉพาะเสียง

จากนั้นจึงนำไปทดสอบกับงานยาว

ข่าวสมมติ

สคริปต์มีความยาว 1,473 ตัวอักษร

เมื่อส่งให้โมเดลสร้างรวดเดียว ช่วงหลังของเสียงกลายเป็นพยางค์ซ้ำ

ผมจึงแบ่งข่าวออกเป็น 11 ช่วง ใช้เสียงอ้างอิงเดียวกัน และเว้นระยะพักระหว่างไฟล์ 0.32 วินาทีก่อนนำมาต่อกัน

ผลลัพธ์มีความยาว 119.13 วินาที ได้ Round-trip CER 5.11% และไม่พบเสียงวนซ้ำ

นิยายจีนแปลไทย

แบ่งออกเป็น 11 ช่วง ความยาวรวม 160.41 วินาที ได้ Round-trip CER 6.18%

จุดที่มีปัญหาส่วนใหญ่เป็นชื่อจีนและศัพท์เฉพาะ เช่น

  • ชิงเหอ
  • หลินเยว่
  • คัมภีร์
  • สุสาน
  • ชุ่น

งานลักษณะนี้ควรเตรียมพจนานุกรมคำอ่านก่อนสร้างเสียงจริง

นิยายไทยร่วมสมัย

แบ่งเป็น 13 ช่วง ใช้เสียงผู้หญิงและ Workflow เดียวกัน

ไฟล์มีความยาวรวม 234.44 วินาที หรือเกือบ 4 นาที ได้ Round-trip CER 2.01% และไม่พบปัญหาเสียงวนซ้ำ

นี่เป็นผลเสียงยาวที่ดีที่สุดของ OmniVoice Thai ในการทดสอบครั้งนี้

สาเหตุหนึ่งน่าจะมาจากข้อความใช้คำไทยทั่วไป ชื่อไทย และบริบทร่วมสมัย จึงมีความเสี่ยงเรื่องคำอ่านต่ำกว่านิยายที่มีชื่อจีนหรือศัพท์เฉพาะจำนวนมาก


วิธีเลือกโมเดลให้ตรงกับงาน

ทำเสียงบรรยายส่วนตัวและมี GPU

เริ่มทดลองจาก OmniVoice หรือ OmniVoice Thai

ก่อนสร้างเสียง ควรแปลงวันที่ ตัวเลข ทศนิยม ตัวย่อ และคำอังกฤษให้เป็นคำอ่านที่ชัดเจน

ใช้ Voice Cloning เฉพาะเสียงที่ได้รับอนุญาตจากเจ้าของเสียงแล้วเท่านั้น

ไม่มี GPU หรืออยากเริ่มให้เร็วที่สุด

เริ่มจาก VachanaTTS

นำสคริปต์จริงประมาณ 20 ประโยคไปทดสอบกับเสียงทั้ง 4 แบบ แล้วเลือกจากทั้งความถูกต้องและความน่าฟัง

ต้องการศึกษา Voice Cloning ภาษาไทย

ลองเปรียบเทียบ JaiTTS-F5TTS, ThonburianTTS และ OmniVoice โดยใช้เสียงอ้างอิงเดียวกัน

ควรวัดแยกกันอย่างน้อย 5 เรื่อง

  • ความถูกต้องของคำ
  • ความเหมือนเสียงต้นฉบับ
  • ความเป็นธรรมชาติ
  • เวลาที่ใช้สร้าง
  • หน่วยความจำที่ใช้

ต้องการนำไปใช้หารายได้

อย่าเริ่มจากการฟังเสียง Demo

ให้เริ่มจากการทำตาราง License ก่อน โดยแยกตรวจ

  • โค้ด
  • น้ำหนักโมเดล
  • ข้อมูลฝึก
  • เสียงอ้างอิง
  • เงื่อนไขการเผยแพร่ผลงาน

ถ้าข้อมูลใน Model Card ไม่ชัด หรือแต่ละหน้าเขียนไม่ตรงกัน ควรสอบถามเจ้าของโครงการเป็นลายลักษณ์อักษรก่อนนำไปใช้จริง


Workflow สร้างเสียงบรรยายไทยให้ผิดน้อยลง

1. แบ่งสคริปต์ตามความหมาย

อย่าแบ่งจากจำนวนตัวอักษรอย่างเดียว

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

2. เขียนคำอ่านของจุดเสี่ยง

ตรวจสิ่งเหล่านี้เป็นพิเศษ

  • วันที่
  • ปี
  • เวลา
  • ทศนิยม
  • หน่วยวัด
  • ตัวย่อ
  • URL
  • ภาษาอังกฤษ
  • ชื่อบุคคล
  • ชื่อสถานที่
  • ชื่อแบรนด์

3. ตั้งชื่อไฟล์ให้ค้นง่าย

ตัวอย่างเช่น

chapter-02-scene-04-take-01.wav

เมื่อพบคำอ่านผิด เราจะรู้ทันทีว่าต้องกลับไปแก้ไฟล์ไหน

4. ฟังเทียบกับสคริปต์

อย่าพึ่งระบบถอดเสียงอัตโนมัติเพียงอย่างเดียว

ควรฟังตรวจโดยเฉพาะ

  • คำว่า ไม่
  • ตัวเลข
  • ชื่อเฉพาะ
  • คำที่เปลี่ยนความหมายของประโยค

5. สร้างใหม่เฉพาะช่วงที่ผิด

ไม่ควรสร้างใหม่ทั้งบท เพราะเสียง จังหวะ หรืออารมณ์อาจเปลี่ยนจากไฟล์ที่ผ่านแล้ว

6. ปรับเสียงหลังนำไฟล์มาต่อกัน

ตรวจระดับความดัง รอยต่อ เสียงหายใจ และช่วงเงียบ

จากนั้นทำ Loudness Normalization ก่อนส่งออกไฟล์สุดท้าย

7. เก็บหลักฐานเรื่องสิทธิ์

บันทึกข้อมูลต่อไปนี้ไว้เสมอ

  • ชื่อโมเดล
  • เวอร์ชัน
  • วันที่ดาวน์โหลด
  • License ของโค้ด
  • License ของน้ำหนักโมเดล
  • ข้อมูลเกี่ยวกับ Dataset
  • หนังสือหรือหลักฐานความยินยอมจากเจ้าของเสียง

Text Normalization เปรียบเหมือนบรรณาธิการก่อนเข้าห้องอัด

มนุษย์เห็นคำว่า

12.5, AI หรือ PDF v2

แล้วสามารถเลือกคำอ่านจากบริบทได้ค่อนข้างง่าย

แต่ TTS อาจอ่านตัวเลขทีละหลัก เปลี่ยนไปใช้สำเนียงอังกฤษกลางประโยค หรือออกเสียงตัวย่อไม่เหมือนที่เราต้องการ

Text Normalization จึงไม่ใช่งานเล็กน้อยที่ทำหรือไม่ทำก็ได้

มันเป็นหนึ่งในขั้นตอนการผลิตเสียงโดยตรง เหมือนบรรณาธิการที่ช่วยเตรียมบทให้พร้อมก่อนส่งเข้าห้องอัด


ราคา ความเป็นส่วนตัว และ License

เครื่องมือทั้งหมดที่ทดสอบไม่ได้คิดค่าบริการตามจำนวนตัวอักษร

แต่คำว่า “ใช้ฟรี” ยังมีต้นทุนอื่นอยู่ เช่น

  • ค่าเครื่อง
  • ค่า GPU
  • ค่าไฟ
  • พื้นที่เก็บโมเดล
  • เวลาในการติดตั้ง
  • เวลาในการตรวจเสียง
  • ค่าแรงของผู้ดูแลระบบ

ในด้านความเป็นส่วนตัว การสร้างเสียงและถอดเสียงในการทดสอบนี้เกิดขึ้นบนเครื่อง หลังจากดาวน์โหลดไฟล์ที่จำเป็นครบแล้ว

อย่างไรก็ตาม ขั้นตอนติดตั้งและดาวน์โหลดโมเดลยังต้องเชื่อมต่อกับ Hugging Face และแหล่งแพ็กเกจต่าง ๆ

ถ้าจะใช้กับข้อมูลอ่อนไหว ควรตรวจเพิ่มว่าโปรแกรมมีสิ่งเหล่านี้หรือไม่

  • Telemetry
  • Log
  • Cache
  • ระบบรายงานข้อผิดพลาด
  • การเชื่อมต่อออกสู่อินเทอร์เน็ต

ไม่ควรสรุปว่าเครื่องมือทุกตัวไม่ส่งข้อมูลออกเลย เพียงเพราะสามารถรันแบบ Local ได้


สรุป License ที่พบ

เครื่องมือ License ที่พบ สิ่งที่ควรเข้าใจ
OmniVoice โค้ด Apache 2.0 แต่น้ำหนัก CC-BY-NC เหมาะกับการทดลองและงาน Non-commercial ก่อน
OmniVoice Thai หน้า Fine-tune แสดง Apache 2.0 ยังต้องตรวจข้อจำกัดจาก Base Model และ Dataset
JaiTTS-F5TTS แสดง Apache 2.0 แต่ Model Card ระบุ Research/Benchmark ไม่ควรตัดสินจากป้าย License เพียงจุดเดียว
ThonburianTTS โค้ด MIT แต่น้ำหนัก CC BY-NC-SA 4.0 มีข้อจำกัด Non-commercial และ ShareAlike
VachanaTTS Model Card แสดง MIT ควรขอรายละเอียด Dataset และสิทธิ์ของเสียงเพิ่มเติม
F5-TTS-THAI v1 โค้ด MIT และหน้าสำเนาแสดง CC BY 4.0 ต้องตรวจน้ำหนักต้นทาง Dataset และ Attribution

License สามารถเปลี่ยนแปลงได้ และกฎหมายเกี่ยวกับเสียงสังเคราะห์อาจแตกต่างกันในแต่ละประเทศ

ข้อมูลส่วนนี้เป็นข้อมูลเชิงเทคนิค ณ วันที่ตรวจสอบ ไม่ใช่คำปรึกษาทางกฎหมาย


Checklist ก่อนเลือก Local TTS ภาษาไทย

ก่อนตัดสินใจเลือกโมเดล ลองตอบคำถามต่อไปนี้ให้ครบ

  • ดาวน์โหลดน้ำหนักโมเดลมาใช้บนเครื่องได้จริงหรือไม่
  • หลังติดตั้งแล้วสามารถทำงานแบบ Offline ได้หรือไม่
  • License ของโค้ดกับน้ำหนักโมเดลเหมือนกันหรือไม่
  • อนุญาตให้ใช้เชิงพาณิชย์หรือไม่
  • มีข้อมูลเกี่ยวกับ Dataset มากพอหรือไม่
  • ต้องใช้ GPU ขนาดเท่าไร
  • ทำงานบน CPU ได้หรือไม่
  • ต้องมีเสียงอ้างอิงหรือมีเสียงสำเร็จรูป
  • อ่านวันที่ ตัวเลข และทศนิยมได้ดีแค่ไหน
  • อ่านคำภาษาอังกฤษและชื่อเฉพาะได้หรือไม่
  • เมื่อสร้างเสียงยาว มีคำซ้ำหรือเสียงวนหรือไม่
  • คุณภาพคงที่เมื่อสร้างซ้ำหลายครั้งหรือไม่
  • มีขั้นตอนขอความยินยอมจากเจ้าของเสียงหรือไม่
  • สามารถย้อนกลับไปแก้เฉพาะประโยคที่ผิดได้ง่ายหรือไม่

คำถามที่พบบ่อย

Local TTS ใช้งานโดยไม่ต่ออินเทอร์เน็ตได้หรือไม่?

ได้ หลังจากดาวน์โหลดโค้ด น้ำหนักโมเดล และ Dependency ครบแล้ว

แต่ขั้นตอนติดตั้งครั้งแรกมักต้องใช้อินเทอร์เน็ต และบางโปรแกรมอาจมีการเชื่อมต่อเพิ่มเติม

ถ้าจะใช้กับข้อมูลอ่อนไหว ควรทดลองตัดอินเทอร์เน็ตแล้วทดสอบการทำงานจริง

OmniVoice Thai ใช้ทำงานขายได้หรือไม่?

ยังไม่ควรสรุปว่าใช้ได้โดยไม่มีเงื่อนไข

แม้หน้า Fine-tune จะแสดง Apache 2.0 แต่ Base Model ของ OmniVoice ใช้น้ำหนักแบบ CC-BY-NC และ Dataset ที่อ้างถึงยังไม่มี License ชัดเจน

ควรขอคำยืนยันจากเจ้าของโครงการก่อนนำไปใช้เชิงพาณิชย์

ไม่มี GPU ควรเริ่มจากตัวไหน?

VachanaTTS เป็นจุดเริ่มต้นที่ง่ายกว่า เพราะมีเสียงสำเร็จรูป 4 เสียงและทำงานบน CPU ได้รวดเร็ว

ควรทดลองทุก Voice ID กับสคริปต์จริง เพราะแต่ละเสียงให้ความแม่นและความน่าฟังต่างกัน

ทำไมโมเดลที่ CER ต่ำกว่า บางครั้งกลับฟังไม่เพราะ?

เพราะ CER วัดความต่างของตัวอักษร ไม่ได้วัดน้ำเสียง อารมณ์ จังหวะ หรือความคมชัดของพยัญชนะ

สองโมเดลอาจอ่านคำได้ถูกใกล้เคียงกัน แต่โมเดลหนึ่งฟังเป็นธรรมชาติกว่าอย่างชัดเจน

ควรใส่สคริปต์ทั้งบทแล้วสร้างครั้งเดียวหรือไม่?

ไม่ควร

ในการทดสอบ การสร้างข่าวยาวรวดเดียวทำให้ช่วงหลังกลายเป็นเสียงซ้ำ

วิธีที่เสถียรกว่าคือ แบ่งสคริปต์เป็นช่วง ใช้เสียงอ้างอิงเดียวกัน ตรวจทีละไฟล์ แล้วจึงนำไฟล์มาต่อกัน


สรุป: ตัวที่ดีที่สุด ต้องเหมาะกับทั้งงาน เครื่อง และสิทธิ์ใช้งาน

ถ้าถามว่า

“เทคโนโลยีเสียงภาษาไทยตัวไหนได้คะแนนวิจัยดีที่สุด?”

คำตอบคือ JaiTTS-v1.0

แต่ถ้าถามว่า

“วันนี้ควรโหลดตัวไหนมาทดลองบนเครื่อง?”

คำตอบจะเปลี่ยนไป เพราะเรายังไม่พบไฟล์น้ำหนักของ JaiTTS-v1.0 ที่เปิดให้ดาวน์โหลดอย่างชัดเจน

สำหรับเสียงบรรยาย Podcast และนิยาย ผมเลือก OmniVoice Thai เป็นตัวแรกที่น่าลอง เพราะฟังภาษาไทยชัดและเป็นธรรมชาติที่สุดในการทดสอบครั้งนี้

เมื่อนำไปอ่านนิยายไทยร่วมสมัยเกือบ 4 นาที โดยแบ่งสร้างทีละช่วง สามารถทำ Round-trip CER ได้ 2.01% และไม่เกิดเสียงวนซ้ำ

แต่โมเดลยังมีปัญหากับตัวเลขดิบ และมีข้อสงสัยเรื่อง License ของ Base Model และ Dataset จึงยังไม่ควรมองว่าเป็นตัวเลือกที่ปลอดภัยสำหรับงานเชิงพาณิชย์โดยอัตโนมัติ

ส่วนผู้ที่ไม่มี GPU หรืออยากเริ่มง่าย VachanaTTS เป็นตัวเลือกที่น่าสนใจ เพราะทำงานบน CPU ได้เร็วและมีเสียงสำเร็จรูปให้ใช้ทันที

บทเรียนสำคัญที่สุดจากการทดลองครั้งนี้คือ

อย่าเลือก Local TTS จาก Demo เพียงคลิปเดียว และอย่าตัดสินสิทธิ์ใช้งานจากคำว่า Open Source เพียงบรรทัดเดียว

นำสคริปต์จริงของคุณมาทดสอบ ฟังด้วยหูของคนไทย ตรวจตัวเลขและชื่อเฉพาะ และอ่าน License ให้ครบทุกชั้น

เพราะโมเดลที่ดีที่สุด ไม่ใช่ตัวที่ชนะทุกตาราง

แต่เป็นตัวที่ให้เสียงดี เครื่องของคุณรันไหว และมีสิทธิ์ใช้งานตรงกับสิ่งที่คุณกำลังจะทำ


วิธีทดสอบโมเดลด้วยสคริปต์ของคุณเอง

ก่อนเลือกเสียงประจำช่องหรือประจำแบรนด์ ลองเตรียมข้อความประมาณ 20 ประโยค โดยแบ่งเป็นกลุ่มดังนี้

  • ประโยคภาษาไทยทั่วไป
  • ประโยคที่มีตัวเลขและวันที่
  • ประโยคที่มีภาษาอังกฤษ
  • ชื่อคนและชื่อสถานที่
  • คำเฉพาะของงาน
  • ประโยคที่ต้องใช้อารมณ์

จากนั้นนำข้อความชุดเดียวกันไปสร้างเสียงด้วยทุกโมเดลที่เครื่องของคุณรองรับ

ฟังเทียบกับต้นฉบับ แล้วจดบันทึกว่า

  • คำไหนอ่านผิด
  • คำไหนต้องเขียนคำอ่านใหม่
  • เสียงไหนฟังสบายที่สุด
  • โมเดลไหนรักษาน้ำเสียงได้สม่ำเสมอ
  • โมเดลไหนแก้ไขเฉพาะช่วงที่ผิดได้ง่ายที่สุด

การทดลองด้วยสคริปต์จริง 20 ประโยค จะช่วยให้ตัดสินใจได้แม่นกว่าการฟัง Demo ของผู้พัฒนาเพียงคลิปเดียว


แหล่งข้อมูล

  1. JaiTTS: A Thai Voice Cloning Model — arXiv
  2. JTS-AI-Team/JaiTTS — Benchmark Repository
  3. JTS-AI/JaiTTS-F5TTS — Model Card
  4. k2-fsa/OmniVoice — Official Repository
  5. k2-fsa/OmniVoice — Model Card และ License
  6. hotdogs/omnivoice-thai — Model Card และไฟล์โมเดล
  7. Thanarit/Thai-Voice-Test7 — Dataset Card
  8. VIZINTZOR/VachanaTTS — Model Card
  9. PyThaiNLP/pythaitts — Thai TTS Library
  10. biodatlab/ThonburianTTS — Model Card และ License
  11. facebook/mms-tts-tha — Model Card
  12. VIZINTZOR/F5-TTS-TH-V2 — Model Card
  13. VIZINTZOR/F5-TTS-THAI — Model Files
  14. ChayapholSmile/F5-TTS-THAI — Duplicate Model Card
  15. VYNCX/F5-TTS-THAI — Official Code Repository

ตรวจสอบข้อมูลล่าสุดเมื่อวันที่ 1 สิงหาคม 2026 บทความนี้ไม่มี Affiliate หรือ Sponsor ผลทดสอบมาจากเครื่อง Windows และ RTX 4080 หนึ่งชุด เวลา ความเร็ว และคุณภาพที่ได้อาจแตกต่างกันตามฮาร์ดแวร์ ระบบปฏิบัติการ เวอร์ชันโปรแกรม และการตั้งค่าของแต่ละเครื่อง