YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Thai IndexTTS2
indextts2 thai โมเดล TTS state of the art (sota) ปรับอารมณ์เสียงได้ (พอประมาณ)
อธิบายโมเดลนี้สั้นๆ มันคือ minimax speech เวอร์ชันที่ไม่มีใส่เสียงหัวเราะ เสียงร้องไห้ แค่นั้นแหละ เพราะนี่คือโมเดลที่ finetune จาก indextts2 ตัวต้นฉบับจาก billibilli
🌟 ความสามารถ
- โคลนเสียงได้ ซึ่งโคลนมาทั้งสำเนียงและอารมณ์
- ปรับ duration ได้ (แต่ไม่ค่อยแม่นยำ มี parameter ให้ปรับ แนะนำไปปรับแบบช้าหรือเร็วก็พอ)
- emo vector จุดสำคัญของโมเดลนี้ ที่โมเดลอื่นๆไม่มี สามารถ scale อารมณ์ได้ (ภาษาไทยตอนนี้ ทำได้ดีระดับนึง มีเพิ่ม thai emo vec ให้ปรับด้วย แต่ไม่ค่อยดีนัก)
- เพิ่มระบบตัดเสียงตัดคำอื่นๆ สำหรับภาษาไทยโดยเฉพาะ
🆚 เทียบกับ opensource โมเดลอื่นๆ ที่พูดไทยได้
- vits: ไวกว่ามาก แต่ซัดทิ้งได้เลย เสียงโคลนไม่ได้ และเสียงยาวไปก็พัง
- f5tts thai: ไว โคลนเสียงได้ แต่เสียงออกแนวค่อนข้างโรโบติก และ ไร้ชีวิตชีวา ปรับไรมากไม่ค่อยได้
- vibevoice: ดีและแม่นยำ เจนเสียงยาวเกือบครึ่งชั่วโมงได้ แต่เจนช้า แบบ ช้าโคตรๆ เอาไปใช้ทำไรมากไม่ได้สำหรับภาษาไทย error rate สำหรับ speaker 2 คนสูงมาก
- omnivoice: ดีที่สุดในปัจจุบัน โคลนเสียงตามสำเนียงและอารมณ์ได้ แต่ไม่มีโมเดลที่ "finetune เพิ่มเติมกับ dataset ภาษาไทย" ทำให้บางเสียงยังไม่ค่อยโอเค และ บางอารมณ์ก็แสดงออกมาไม่ค่อยชัด แต่ความเร็ว กับ ความแม่นยำ ถือว่าดีที่สุด
- ของเรา indextts2: แม้นจะช้ากว่า + แม่นยำต่ำกว่า แต่ด้วยการ finetune ผ่าน "dataset ที่ curated มาดี" ทำให้บางเสียงที่ gen ผมรู้สึกว่าดีกว่าตัว omnivoice มาก
✅ indextts2 เหมาะกับ
- คนที่อยากเทสต์ระบบ เผื่อเอาไป finetune เพิ่มเติมต่อ
- คนที่อยากทำเสียง dub ภาษาไทย ทำพากย์ไทยประโยคสั้นๆต่อครั้ง คุณภาพพอๆกับ vibevoice แต่เร็วกว่า vibevoice มาก
- ต้องการเสียงที่มีอารมณ์ (โหมด emo vec ไม่ค่อยแม่นยำ error rate ยังสูงอยู่ แต่โหมดอื่นถือว่าโอเค)
- ต้องการเสียงพากย์ เสียงสารคดี เสียงที่ "คุ้นเคย"
❌ ไม่เหมาะกับ
- สตรีมยาวๆ (error rate ยังสูง)
- ต้องการความเร็ว
- ไม่อยากเจนซ้ำบ่อยๆ
- ใช้ศัพท์ไทยผสมอังกฤษบ่อยๆ
🛠️ เกี่ยวกับการเทรน
- โปรเจกต์นี้ใช้เวลาประมาณ 2 เดือนหลังจากเทรนรอบแรก กินเวลา 99% ไปกับการหา dataset ผมหมายถึง.......ผม prompt ให้ claude หรือ gemini ไปหา dataset ให้ แล้วมันก็บอกว่า yessirrie แค่นั้นแหละ.....จากนั้นมันก็ลบ dataset ทิ้งไปหมดแล้ว lol (dataset ที่ใช้เทรนประมาณ 800 ชั่วโมงรวมการทำ pairing แล้ว)
- อย่างไรก็ตามโมเดลยังสามารถ finetune เพิ่มเติมได้อยู่ ลองดูได้
- ตอนนี้มีโมเดลที่ค่อนข้างดีกว่าอย่าง omnivoice ในแง่ความเร็วและความแม่นยำ ขาดอีกนิดคือแค่อารมณ์เสียง + ข้อความอธิบาย speech ตอนนี้มีโปรเจกต์ opensource หลายโปรเจกต์ที่น่าเอามา finetune ต่อให้คุณภาพพอๆกับ gemini tts
🚀 วิธีดาวน์โหลดและติดตั้ง (Installation)
โปรเจกต์นี้ใช้ uv ในการจัดการสภาพแวดล้อมและแพ็กเกจ เพื่อให้ติดตั้งง่ายและแก้ปัญหาเวอร์ชันได้อย่างสมบูรณ์
1. ดาวน์โหลดโปรเจกต์
ใช้คำสั่ง Git เพื่อดาวน์โหลดไฟล์ทั้งหมด:
git clone https://huggingface.co/williampike/thai_indextts2
cd thai_indextts2
2. สร้าง Virtual Environment และติดตั้ง Dependencies
ตรวจสอบว่าในเครื่องมี uv แล้ว (หากยังไม่มี ให้รัน pip install uv ก่อน)
จากนั้นรันคำสั่งเหล่านี้เพื่อสร้าง Virtual Environment และติดตั้งแพ็กเกจ:
# สร้าง virtual environment
uv venv
# ติดตั้งแพ็กเกจทั้งหมดตามที่ระบุไว้
uv pip install -e .
(เคล็ดลับ: คุณสามารถใช้แค่คำสั่ง uv sync เพื่อจัดการทุกอย่างในรวดเดียวได้เช่นกัน)
3. รันโปรแกรม
เมื่อติดตั้งเสร็จเรียบร้อยแล้ว ให้รันโปรแกรมด้วย uv run เพื่อเรียกใช้งานสภาพแวดล้อมที่ถูกต้อง:
uv run webui.py
(ถ้าต้องการรันไฟล์อื่น เช่น webui_parallel_thai.py ก็สามารถเปลี่ยนชื่อไฟล์ในคำสั่งได้เลย)
✨ ฟีเจอร์ใหม่ใน webui_parallel_thai.py (เมื่อเทียบกับต้นฉบับ IndexTTS2)
ไฟล์ webui_parallel_thai.py ได้รับการปรับแต่งและเพิ่มฟีเจอร์สำหรับภาษาไทยโดยเฉพาะ ดังนี้:
- รองรับภาษาไทยเต็มรูปแบบ (Thai Localization): เปลี่ยนเมนูและคำอธิบายใน UI เป็นภาษาไทยทั้งหมด เพื่อให้ใช้งานง่ายขึ้น
- ระบบ Auto-load โมเดลภาษาไทย: เมื่อเปิด WebUI จะตรวจสอบและโหลดโมเดล
thaiseperate2.pthพร้อมกับ BPE tokenizer สำหรับภาษาไทยให้โดยอัตโนมัติ (หากมีในระบบ) - โหมดแยกส่วนเสียง (Segment Mode): แท็บ UI ใหม่ที่ช่วยแบ่งข้อความยาวๆ เป็นประโยคย่อย และกดสร้างเสียงทีละท่อนได้ สามารถกดย้อนกลับเพื่อสร้างท่อนล่าสุดใหม่ (Regenerate Last) ก่อนที่จะนำมารวมกันเป็นไฟล์เดียว
- ตัวประมวลผลข้อความภาษาไทย (Thai Text Preprocessor): ทำงานร่วมกับ
PyThaiNLPช่วยในการตัดคำและเตรียมข้อความให้เหมาะสมก่อนนำไปสร้างเสียง (สามารถเปิด-ปิดฟีเจอร์ G2P และ Dataset Spacing ได้) - ระบบตัดเสียงเงียบอัตโนมัติ (Silence Trimming): มีฟังก์ชันช่วยตัดเสียงเงียบที่ยาวเกินไปทิ้ง ทั้งในไฟล์เสียง Prompt ต้นฉบับและไฟล์ Output อัตโนมัติ เพื่อให้จังหวะการพูดลื่นไหล
- ระบบ Auto-Retry อัจฉริยะ: หากเสียงที่สร้างออกมามีความยาวผิดปกติเมื่อเทียบกับจำนวนคำ (เช่น เสียงขาดหาย หรือเสียงยานลากยาว) ระบบจะสั่ง Generate ใหม่ให้อัตโนมัติทันที
- เวกเตอร์ควบคุมอารมณ์แบบภาษาไทย (Thai 5-Emo Vectors): เปลี่ยนระบบสไลเดอร์อารมณ์มาใช้แบบ 5-Emo ที่ออกแบบมาสำหรับโมเดลภาษาไทยโดยเฉพาะ เพื่อการควบคุมที่แม่นยำยิ่งขึ้น