# 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 ที่ออกแบบมาสำหรับโมเดลภาษาไทยโดยเฉพาะ เพื่อการควบคุมที่แม่นยำยิ่งขึ้น