File size: 11,209 Bytes
b5c3f82 4d3248c b5c3f82 4d3248c 031a0cb 4d3248c 4ee39c0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # 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 เพื่อดาวน์โหลดไฟล์ทั้งหมด:
```bash
git clone https://huggingface.co/williampike/thai_indextts2
cd thai_indextts2
```
### 2. สร้าง Virtual Environment และติดตั้ง Dependencies
ตรวจสอบว่าในเครื่องมี `uv` แล้ว (หากยังไม่มี ให้รัน `pip install uv` ก่อน)
จากนั้นรันคำสั่งเหล่านี้เพื่อสร้าง Virtual Environment และติดตั้งแพ็กเกจ:
```bash
# สร้าง virtual environment
uv venv
# ติดตั้งแพ็กเกจทั้งหมดตามที่ระบุไว้
uv pip install -e .
```
*(เคล็ดลับ: คุณสามารถใช้แค่คำสั่ง `uv sync` เพื่อจัดการทุกอย่างในรวดเดียวได้เช่นกัน)*
### 3. รันโปรแกรม
เมื่อติดตั้งเสร็จเรียบร้อยแล้ว ให้รันโปรแกรมด้วย `uv run` เพื่อเรียกใช้งานสภาพแวดล้อมที่ถูกต้อง:
```bash
uv run webui.py
```
*(ถ้าต้องการรันไฟล์อื่น เช่น `webui_parallel_thai.py` ก็สามารถเปลี่ยนชื่อไฟล์ในคำสั่งได้เลย)*
---
## ✨ ฟีเจอร์ใหม่ใน `webui_parallel_thai.py` (เมื่อเทียบกับต้นฉบับ IndexTTS2)
ไฟล์ `webui_parallel_thai.py` ได้รับการปรับแต่งและเพิ่มฟีเจอร์สำหรับภาษาไทยโดยเฉพาะ ดังนี้:
1. **รองรับภาษาไทยเต็มรูปแบบ (Thai Localization)**: เปลี่ยนเมนูและคำอธิบายใน UI เป็นภาษาไทยทั้งหมด เพื่อให้ใช้งานง่ายขึ้น
2. **ระบบ Auto-load โมเดลภาษาไทย**: เมื่อเปิด WebUI จะตรวจสอบและโหลดโมเดล `thaiseperate2.pth` พร้อมกับ BPE tokenizer สำหรับภาษาไทยให้โดยอัตโนมัติ (หากมีในระบบ)
3. **โหมดแยกส่วนเสียง (Segment Mode)**: แท็บ UI ใหม่ที่ช่วยแบ่งข้อความยาวๆ เป็นประโยคย่อย และกดสร้างเสียงทีละท่อนได้ สามารถกดย้อนกลับเพื่อสร้างท่อนล่าสุดใหม่ (Regenerate Last) ก่อนที่จะนำมารวมกันเป็นไฟล์เดียว
4. **ตัวประมวลผลข้อความภาษาไทย (Thai Text Preprocessor)**: ทำงานร่วมกับ `PyThaiNLP` ช่วยในการตัดคำและเตรียมข้อความให้เหมาะสมก่อนนำไปสร้างเสียง (สามารถเปิด-ปิดฟีเจอร์ G2P และ Dataset Spacing ได้)
5. **ระบบตัดเสียงเงียบอัตโนมัติ (Silence Trimming)**: มีฟังก์ชันช่วยตัดเสียงเงียบที่ยาวเกินไปทิ้ง ทั้งในไฟล์เสียง Prompt ต้นฉบับและไฟล์ Output อัตโนมัติ เพื่อให้จังหวะการพูดลื่นไหล
6. **ระบบ Auto-Retry อัจฉริยะ**: หากเสียงที่สร้างออกมามีความยาวผิดปกติเมื่อเทียบกับจำนวนคำ (เช่น เสียงขาดหาย หรือเสียงยานลากยาว) ระบบจะสั่ง Generate ใหม่ให้อัตโนมัติทันที
7. **เวกเตอร์ควบคุมอารมณ์แบบภาษาไทย (Thai 5-Emo Vectors)**: เปลี่ยนระบบสไลเดอร์อารมณ์มาใช้แบบ 5-Emo ที่ออกแบบมาสำหรับโมเดลภาษาไทยโดยเฉพาะ เพื่อการควบคุมที่แม่นยำยิ่งขึ้น
|