- ไลบรารี แปลงข้อความเป็นเสียงพูด (TTS) แบบน้ำหนักเบา ที่ใช้ ONNX และมีความเป็น
State-of-the-art สามารถสังเคราะห์เสียงคุณภาพสูงได้ด้วย CPU เพียงอย่างเดียว
- ขนาดโมเดลอยู่ในช่วง 15M~80M พารามิเตอร์ (25~80MB) ทำงานได้อย่างมีประสิทธิภาพโดยไม่ต้องใช้ GPU
- มี เสียงในตัว 8 แบบ พร้อมฟังก์ชัน ปรับความเร็ว, ไปป์ไลน์การประมวลผลข้อความล่วงหน้า และ เอาต์พุตเสียง 24kHz
- ใช้งานได้ทันทีบน Hugging Face และผสานรวมได้ง่ายผ่าน Python API
- โซลูชัน TTS แบบโอเพนซอร์สที่มุ่งรองรับ การดีพลอยบนอุปกรณ์เอดจ์และการผสานรวมเชิงพาณิชย์
ภาพรวมของ Kitten TTS
- Kitten TTS เป็น ไลบรารี TTS โอเพนซอร์สที่ใช้ ONNX ซึ่งสามารถสังเคราะห์เสียงคุณภาพสูงบน CPU ได้โดยไม่ต้องใช้ GPU
- ขนาดโมเดลอยู่ที่ 15M~80M พารามิเตอร์ และมีขนาดบนดิสก์ 25~80MB
- ในเวอร์ชัน 0.8 มีโมเดล 15M, 40M และ 80M ให้ใช้งาน
- ขณะนี้ยังอยู่ในขั้น developer preview และ API อาจมีการเปลี่ยนแปลงในอนาคต
- มี การสนับสนุนเชิงพาณิชย์ (การช่วยผสานรวม, เสียงแบบคัสตอม, ใบอนุญาตระดับองค์กร)
ความสามารถหลัก
- สถาปัตยกรรมขนาดเล็กมาก: เริ่มต้นที่ 25MB ในแบบ int8 เหมาะกับการดีพลอยในสภาพแวดล้อมเอดจ์
- ปรับแต่งสำหรับ CPU: ทำ ONNX inference ได้อย่างมีประสิทธิภาพโดยไม่ต้องใช้ GPU
- เสียงในตัว 8 แบบ: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- ฟังก์ชันปรับความเร็ว: ควบคุมความเร็วการพูดด้วยพารามิเตอร์
speed
- ไปป์ไลน์การประมวลผลข้อความล่วงหน้า: จัดการตัวเลข สกุลเงิน หน่วย ฯลฯ โดยอัตโนมัติ
- เอาต์พุต 24kHz: สร้างเสียงคุณภาพสูงด้วยอัตราสุ่มมาตรฐาน
โมเดลที่มีให้
- มีโมเดลให้ 4 แบบ
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- ผู้ใช้บางรายรายงานปัญหากับโมเดล
kitten-tts-nano-0.8-int8 และแนะนำให้เปิด issue
เดโมและวิธีใช้งาน
- สามารถทดลองใช้งานได้โดยตรงผ่านเบราว์เซอร์บน Hugging Face Spaces
- ติดตั้งได้ด้วย Python 3.8 ขึ้นไป และ pip เท่านั้น
- ตัวอย่างการใช้งานพื้นฐาน:
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("텍스트", voice="Jasper")
- ฟังก์ชันขั้นสูง: ปรับความเร็ว (
speed), บันทึกเป็นไฟล์ (generate_to_file), ดูรายการเสียงที่ใช้งานได้
โครงสร้าง API
KittenTTS(model_name, cache_dir=None)
- โหลดโมเดลจาก Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- แปลงข้อความเป็นเสียง 24kHz
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- บันทึกเสียงที่สังเคราะห์แล้วลงไฟล์โดยตรง
model.available_voices
- คืนค่ารายการเสียงที่พร้อมใช้งาน
ความต้องการของระบบ
- ระบบปฏิบัติการ: Linux, macOS, Windows
- Python: 3.8 ขึ้นไป
- ฮาร์ดแวร์: ต้องใช้เพียง CPU, ไม่จำเป็นต้องมี GPU
- พื้นที่ดิสก์: 25~80MB ตามโมเดล
- แนะนำให้ใช้ virtual environment (venv, conda เป็นต้น)
โรดแมป
- มีแผนเปิดตัว การปรับแต่ง inference engine, mobile SDK, โมเดลคุณภาพสูง, TTS หลายภาษา, KittenASR
- Apache License 2.0
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ได้ทำ CLI wrapper สำหรับ Kitten TTS ชื่อ purr
แพ็กเกจ kitten มี dependency chain เป็น kittentts → misaki[en] → spacy-curated-transformers
เพราะงั้นถ้าติดตั้งตรง ๆ ด้วย
uvมันจะดึง torch กับแพ็กเกจ NVIDIA CUDA ขนาดหลาย GB มาด้วย ทั้งที่ตอนรันจริงไม่จำเป็นตอนรันครั้งแรกเจอ error ว่า “OSError: PortAudio library not found” แต่แก้ได้ด้วย
apt install libportaudio2แต่อยากรู้ว่าการตัด dependency ที่ไม่จำเป็น ออกไป มีผลให้ฟีเจอร์บางอย่างหายไปไหม
เป็นโปรเจกต์ที่เจ๋งมาก
เดี๋ยวจะลองใช้เองเร็ว ๆ นี้
แต่มีข้อสงสัยอย่างหนึ่ง — ทำไมถึงยังไม่ปล่อยเป็น ไฟล์สั่งงานบนบรรทัดคำสั่ง?
ตัว API เองก็แทบจะเป็นสไตล์ manpage อยู่แล้ว น่าจะทำได้เร็ว แค่อยากรู้เฉย ๆ
ตอนนี้จะขอฟังฟีดแบ็กกับเวอร์ชัน onnx ก่อน แล้วค่อยทำให้ขั้นตอนการใช้งานง่ายขึ้น รวมถึงเพิ่มไฟล์สั่งงานบนบรรทัดคำสั่งด้วย
สิ่งที่ชอบใน OpenClaw คือ แค่ส่ง URL ของ GitHub ใน Discord มันก็สร้าง ข้อความเสียง ให้ได้ทันที
ภายในไม่กี่นาทีก็ได้ทั้ง benchmark และ sample audio แล้ว
คุณภาพถือว่าน่าประทับใจเมื่อเทียบกับขนาด เสียงอาจยังไม่สมบูรณ์แบบแต่ก็ไม่แย่
บน Intel 9700 CPU โมเดล 80M ทำความเร็วได้ประมาณ 1.5 เท่าของเวลาจริง และบน 3080 GPU ก็ไม่ได้เร็วไปกว่านั้น
ตอนนี้ใส่เสียงสไตล์อนิเมะไว้เพื่อโชว์ความสามารถด้านการแสดงอารมณ์
ถ้าช่วยแชร์สาเหตุที่ GPU ช้าใน GitHub issue หรือ Discord ได้ก็ดีมาก จะเพิ่มโค้ดตัวอย่างให้ด้วย
ต้องพยายามเลี่ยงปัญหา Python version conflict แล้วก็ลองใช้ Docker ด้วย แต่สุดท้ายก็ต้องมาตั้งค่าเอง
ในที่สุดก็รันได้ แต่เกลียด Python จริง ๆ
ตอนนี้ดูเหมือนจะรองรับแค่ เสียงสำเนียงอเมริกัน
ส่วนตัวฉันสนใจแค่สำเนียงไอริช อังกฤษ และเวลส์ สำเนียงอเมริกันไม่ค่อยชอบ
TTS ที่ทำงานบนอุปกรณ์ได้เองเป็น เครื่องมือช่วยการเข้าถึง ที่ยอดเยี่ยมมาก
อุปกรณ์ส่วนใหญ่ยังต้องพึ่งบริการออนไลน์ แต่แนวทาง local แบบนี้ดีกว่ามาก
รู้สึกได้ถึง การพัฒนา ที่ชัดเจนกว่าโมเดลก่อนหน้า
น่าประทับใจมาก ขอบคุณที่แชร์
ตอนนี้โมเดล 15M ดีกว่าโมเดล 80M รุ่นเก่าแล้ว และจะพยายามรักษาความเร็วในการพัฒนาแบบนี้ต่อไป
ต่อไปอยากเห็น โมเดลเฉพาะภาษาญี่ปุ่น ด้วย
แม้ว่า Qwen3-tts จะรองรับภาษาญี่ปุ่น แต่บางครั้งก็มีภาษาจีนปนมา ใช้งานจริงไม่ได้
แต่ถ้าทำแบบนั้น ข้อมูลเรื่องระดับเสียงสูงต่ำ (เช่น 飴 vs 雨) อาจหายไป
ถ้าบอก use case มาได้ ก็อยากนำไปใช้ปรับปรุงคุณภาพ
ประสิทธิภาพถือว่าน่าประทับใจเมื่อเทียบกับขนาดโมเดล
แต่มีปัญหาเรื่องการอ่านตัวเลข
ลองกับประโยค “Startup finished in 135 ms.” แล้วตัวเลขฟังเหมือน เสียงรบกวน
พอเปลี่ยนเป็น “one hundred and thirty five seconds” ก็ฟังดีขึ้นหน่อย
ระหว่างนี้แก้ได้ด้วยการเพิ่ม text preprocessing
โมเดล TTS ส่วนใหญ่จัดการตัวเลขและหน่วยโดยแปลงให้เป็นสตริงก่อน
ในรีลีสถัดไปจะมีการแก้ในระดับโมเดลด้วย
น่าจะมี sample audio เปรียบเทียบทั้งสี่โมเดลให้ดูด้วย
ถ้ามีตัวอย่างประโยคเดียวกันที่แต่ละโมเดลอ่าน จะเข้าใจได้ง่ายขึ้น
ระหว่างนี้สามารถลองโมเดลได้เองที่ Hugging Face เดโม
อยากรู้ว่านี่เป็น โอเพนซอร์ส หรือเป็นโมเดลแบบ โอเพนเวต
ภายในสุดสัปดาห์นี้จะเพิ่ม phonemizer ที่ใช้ไลเซนส์ MIT ด้วย ดังนั้นน่าจะนำไปใช้ได้อย่างอิสระ