Kitten TTS - โมเดล TTS โอเพนซอร์สขนาด 25MB ที่ทำงานได้ด้วย CPU เพียงอย่างเดียว
(github.com/KittenML)- Kitten TTS คือ โมเดล TTS (text-to-speech) โอเพนซอร์ส ที่มุ่งเน้นทั้ง ความเบาและคุณภาพเสียงสูง
- ใช้พารามิเตอร์เพียง 15 ล้านตัว ทำให้ ขนาดโมเดลต่ำกว่า 25MB
- จุดเด่นสำคัญคือแตกต่างจาก TTS ขนาดใหญ่รุ่นอื่น ๆ ตรงที่สามารถรันได้ในทุกสภาพแวดล้อม เช่น มือถือและอุปกรณ์ฝังตัว
- สามารถประมวลผล การสังเคราะห์เสียงคุณภาพสูงบนทุกอุปกรณ์ ได้โดยไม่ต้องใช้ GPU
- มีตัวเลือก เสียงพรีเมียม ที่หลากหลาย รองรับ การสังเคราะห์เสียงคุณภาพสูง ที่ใกล้เคียงเสียงจริง
- ทำ inference เสียงได้รวดเร็ว จึงเหมาะกับ การสังเคราะห์แบบเรียลไทม์
- ขณะนี้เปิดเผยโมเดลเวอร์ชัน developer preview แล้ว และมีแผนจะทยอยเปิดเผยน้ำหนักโมเดลที่ฝึกเสร็จสมบูรณ์, mobile SDK, เวอร์ชันเว็บ และอื่น ๆ ในอนาคต
2 ความคิดเห็น
ถ้ามีโมเดลภาษาเกาหลีด้วยก็คงดีนะครับ..
ความเห็นจาก Hacker News
ลองรันเบนช์มาร์กแบบง่ายบน Ubuntu 24 ด้วย Razer Blade 16 และ Intel Core i9-14900HX
ค่า latency เริ่มต้นสำหรับข้อความสั้นอยู่ที่ราว 315ms และความเร็วในการสร้างเสียงอยู่ที่ประมาณ 3.35~5.5 เท่าของความเร็วแบบเรียลไทม์ ขึ้นอยู่กับความยาวของข้อความ
โมเดลโหลดเสร็จในเวลาประมาณ 710ms
แม้จะใช้เสียงที่ต่างกัน 4 แบบ ก็แทบไม่มีความต่างด้านประสิทธิภาพ และยังคงทำความเร็วได้ราว 5 เท่าของเรียลไทม์
บน CPU Intel Celeron N4020 (1.10GHz) ของฉัน ใช้เวลาโหลด 6 วินาที และทำงานได้เกือบเท่าเรียลไทม์ไม่ว่าความยาวข้อความจะเป็นเท่าไร
ขอบคุณที่ช่วยรันเบนช์มาร์ก
ตอนนี้โมเดลยังไม่ได้ผ่านการปรับแต่งให้เหมาะที่สุด
พอ SDK สำหรับ production ออกมา ก็มีแผนจะปรับปรุงเรื่องการโหลดและส่วนอื่น ๆ ด้วย
มีคนเอาตัวอย่างเสียงที่ KittenTTS สร้างไปโพสต์ไว้บน Reddit
ตัวอย่างเสียงบน Reddit
มีวิดีโอสั้นที่รวมเสียงหลายแบบไว้ด้วย
วิดีโอบน YouTube
วิดีโอบน Reddit เจ๋งมาก
น่าทึ่งที่ใช้แค่ CPU และมีขนาดไม่ถึง 25MB แต่ได้คุณภาพระดับนี้
ไม่เข้าใจจริง ๆ ว่าทำไมบางคนถึงบอกว่าเป็นแค่ “โมเดลธรรมดา ๆ”
เสียงคมชัดและชัดเจนมาก
ต่อให้ฉันไม่ใช่เจ้าของภาษาอังกฤษก็ยังฟังเข้าใจได้ง่าย
ฟังดูช้าไปนิด และเสียงให้อารมณ์เหมือนหลุดมาจากแอนิเมชัน
หรือว่าฝึกแบบ cross-training ด้วยเสียงตัวละครจาก Futurama?
อยากให้โมเดลแบบนี้กลายเป็นอนาคต
ยุคที่โมเดล ML ขนาดเล็กแบบออฟไลน์สามารถ inference บนฮาร์ดแวร์ราคาถูกที่หาได้ทั่วไป
รวมเข้ากับอุปกรณ์หรือแอปอื่นได้ง่าย และอาจเอาไปทำงานร่วมกับโมเดลอื่นได้ด้วย
นี่แหละคือภาพที่ Apple วาดไว้กับ SLM (small language model)
ถ้ามีโมเดลที่มีหน้าที่แค่จัดการอีเวนต์ในปฏิทิน ก็ไม่จำเป็นต้องบรรจุความรู้ทั้งหมดของมนุษยชาติไว้ในนั้น
แค่โฟกัสสิ่งที่จำเป็นกับงานจัดการปฏิทินก็พอ
ถ้ารันโมเดลบนฮาร์ดแวร์เฉพาะทางสำหรับงานเดียว ประสิทธิภาพด้านพลังงานจะสูงมาก
ถึงขั้นว่ารันโครงข่ายประสาทด้วยตัวต้านทานล้วน ๆ ก็ยังได้ (ไม่ต้องใช้ทรานซิสเตอร์)
แน่นอนว่าฮาร์ดแวร์แบบนี้ไม่ใช่แบบอเนกประสงค์ และอัปเกรดโมเดลได้ยาก
แต่สำหรับหลายกรณี แค่นี้ก็เพียงพอแล้ว
ระหว่างโมเดลที่ซื้อครั้งเดียวแล้วเอาไปรันอะไรก็ได้
กับโมเดลที่ถูกผูกกับระบบสมาชิก และต้องใช้ฮาร์ดแวร์ที่มีแต่บริษัทยักษ์ใหญ่ที่รวยที่สุดเท่านั้นที่ซื้อได้
สุดท้ายแล้วแบบไหนจะประสบความสำเร็จกว่ากันก็น่าคิด
จริง ๆ แล้วนี่แหละคือเป้าหมายที่เรากำลังพยายามทำ
วิสัยทัศน์ของเราก็เป็นแบบนี้เหมือนกัน
ขนาด 25MB ก็น่าทึ่งอยู่แล้ว แต่จุดที่ล้ำจริง ๆ คือ KittenTTS ถูกเผยแพร่ภายใต้ Apache-2.0
การจับคู่กันแบบนี้ทำให้สามารถฝังเอนจินเสียงที่รันออฟไลน์เต็มรูปแบบลงบนฮาร์ดแวร์ระดับ Pi Zero หรือของเล่นที่ใช้แบตเตอรี่ได้ทันที
ไม่ต้องกังวลเรื่อง GPU, การเรียกใช้คลาวด์, หรือไลเซนส์ที่มีข้อจำกัด
มันเปลี่ยนปัญหาฮาร์ดแวร์กับไลเซนส์ให้กลายเป็นแค่ “ปัญหาด้านการแพ็กเกจ” ในทีเดียว
คุณภาพจะดีขึ้นอีกหรือไม่ค่อยว่ากันทีหลัง แต่การทำให้กระจายใช้งานได้ในระดับนี้ต่างหากที่เป็น game changer ตัวจริง
พวกเราตื่นเต้นมากกับการสร้างโมเดล AI จิ๋วคุณภาพสูงต่อจากนี้
เราเชื่อว่า local voice interface เป็นสิ่งที่เลี่ยงไม่ได้ และอยากเป็นแกนหลักของวงการนี้ในอนาคต
โมเดลนี้เป็นเพียงพรีวิว และราวสัปดาห์หน้าจะมีเวอร์ชันที่สมบูรณ์กว่านี้มากออกมาเพิ่ม
นอกจากนี้ยังมีแผนจะปล่อยโมเดลขนาดประมาณ 80M ด้วย
มีคนพูดว่า KittenTTS เป็น Apache-2.0
แต่ถ้าดู ซอร์สโค้ด บน GitHub จะเห็นว่าใช้ phonemizer
ซึ่ง phonemizer อยู่ภายใต้ ไลเซนส์ GPL-3.0
ดังนั้นตอนนี้ในทางปฏิบัติมันก็คือ GPL
(มีการเสริมด้วยว่า คอมเมนต์นี้ดูเหมือนเขียนโดย LLM)
โมเดล festvox-kallpc16k ของ Festival มีขนาดราว 6MB และ festvox-kallpc8k ราว 3.5MB
ข้อมูลหลายภาษาของ eSpeak NG อยู่ที่ประมาณ 12MB
โมเดลนี้น่าจะให้เสียงที่เป็นธรรมชาติกว่า
แต่ในอดีตหรือบนคอมสเปกต่ำก็มี TTS ที่ทำได้ดีพอสมควรอยู่แล้วเหมือนกัน
ถ้า KittenTTS เป็น Apache-2.0 จริง
ก็สงสัยว่าข้อมูลสำหรับฝึกโมเดลเป็นอย่างไร
ต่อให้ผลลัพธ์ของโมเดลออกมาเหมือนข้อมูลฝึกจนแทบกู้คืนอินพุตเดิมได้
เรามั่นใจได้ทางกฎหมายจริงหรือว่ามันไม่ใช่งานดัดแปลงโดยสมบูรณ์?
มันพึ่งพา espeak-ng อยู่ จึงเป็น GPLv3
มีเวอร์ชันเว็บด้วย
ลองเดโม
เสียงถือว่าโอเค และเมื่อดูจากขนาดแล้วก็น่าประทับใจมาก
ไม่ตลกดีเหรอที่ในหนังไซไฟ เวลาอยากทำเสียงหุ่นยนต์ให้ “ดูเป็นหุ่นยนต์จริง ๆ” กลับจงใจบิดเสียงให้ประหลาดขึ้น
ทั้งที่ในความเป็นจริง เสียงหุ่นยนต์ที่ชัดเจนว่าไม่ใช่มนุษย์อาจน่าดึงดูดและเหมาะสมกว่าในหลายสถานการณ์
อย่างเช่นเครื่องปิ้งขนมปังอัจฉริยะก็ไม่จำเป็นต้องพูดเหมือนผู้ประกาศข่าว BBC
ขอแค่ออกเสียงฟังรู้เรื่องก็พอ
ฉันลองให้มันอ่านข้อความเดโมตามที่มี แต่ฟังแล้วไม่ดีเท่าตัวอย่าง
เผื่อใครอยากลอง นี่คือตัวอย่างข้อความ
ลองเดโมด้วย 6 ประโยคแล้วเกิดข้อผิดพลาด
พอลดเหลือ 3 ประโยคก็ทำงานได้ปกติ
เลยสงสัยว่าข้อจำกัดความยาวข้อความมาจากตัวโมเดลเอง หรือเป็นข้อจำกัดของเดโม
ในเครื่องของฉันมันไม่ทำงานเลย
โมดูลฝั่งแบ็กเอนด์ขึ้นข้อผิดพลาด 404
ตัวอย่างลิงก์ error 404
ฉันกำลังหาลิงก์นี้อยู่พอดี
เดโมบน Reddit ก็ถือว่าใช้ได้ประมาณหนึ่ง ให้ความรู้สึกเหมือนระดับเมื่อหลายปีก่อน
แต่พอลองเล่นเองกลับพบว่าตัวอย่างทั้งหมดแทบฟังไม่รู้เรื่องเลย
ขำตรงที่ system requirements เขียนว่า “ใช้งานได้แทบทุกที่”
บนบางเครื่องเวอร์ชัน Python ต่ำเกินไป
ส่วนอีกบางเครื่องเวอร์ชัน Python สูงเกินไปจนติดปัญหา dependency ติดตั้งไม่ผ่าน
ฉันส่ง PR ไปแก้เรื่องนี้ไว้หลายอันแล้ว
PR 21, PR 24, PR 25
ถ้าติดตั้ง
uvไว้แล้ว ก็สามารถรันจาก reference branch ที่ฉัน merge ได้ด้วยแบบนี้ได้เลย
ถ้าติดตั้งผ่าน uvx จะช่วยแก้ปัญหา environment ของ Python ได้เกือบทั้งหมด
คู่มือติดตั้ง uv
พอเลือกใช้ Python ก็เหมือนแก้ปัญหาไปหนึ่งอย่าง แต่พร้อมกันนั้นก็สร้างปัญหาใหม่ขึ้นมาอีกหลายสิบอย่าง
บน Fedora มันใช้ไม่ได้เพราะไม่มี g++ เวอร์ชันที่เหมาะสม
ต้นตอคือ Python
ฉันลองใช้เองแล้ว ขนาดโมเดลกับความเร็วถือว่าใช้ได้ทีเดียว
แต่การติดตั้งต้องใช้ไลบรารีและของแถมจำนวนมาก
สุดท้ายแล้วก็ห่างไกลจาก 25MB ไปมาก
ถึงอย่างนั้นก็ยังเป็นโปรเจ็กต์ที่เจ๋งมาก
เป็นข้อสังเกตเรื่อง dependency ที่ดีมาก
เพื่อให้ติดตั้งและใช้งานได้ง่ายขึ้น รวมถึงเพิ่มการรองรับ GPU และข้อความยาวตามที่หลายคนต้องการ
ฉันเลยทำเซิร์ฟเวอร์ self-hosted สำหรับโมเดลนี้ขึ้นมา
Kitten-TTS-Server
รันได้ทันทีบน Python venv มาตรฐาน โดยไม่ต้องกังวลเรื่องชนกันของ environment
แค่ git clone, pip install, และ python server.py ก็จบ
พอเห็นว่ามีการพูดถึง ONNX ก็เดาว่าน่าจะมี ONNX model อยู่แล้วหรือจะเพิ่มมาในไม่ช้า
ONNX runtime เป็นไลบรารีตัวเดียว ซึ่งในฝั่ง C# บีบอัดแล้วอยู่ราว 115MB
ไม่ได้เล็กมาก แต่โค้ดที่ต้องใช้ในการรันจริงมีแค่ไม่กี่บรรทัด จึงมี dependency น้อย
การดึงไลบรารีหลายตัวมาใช้พร้อมกันช่วยให้พัฒนาและทำซ้ำได้เร็วขึ้น
พอฟีเจอร์เริ่มนิ่งแล้วค่อยเก็บกวาดไลบรารีที่ไม่จำเป็นออกทีหลัง
สิ่งที่สำคัญกว่าขนาดโมเดล (หน่วย MB) คือการรันบน CPU และคุณภาพ และสิ่งเดียวที่ฉันกังวลจริง ๆ คือ latency
อยากรู้ว่ามีโมเดล speech-to-text ที่ทำงานออฟไลน์ได้โดยไม่ต้องฝึกเพิ่มหรือไม่
ถ้าวันหนึ่งเราคุยกับ AI ได้ในจังหวะที่เป็นธรรมชาติ เหมือนคนคุยกันจริง ๆ ก็คงน่าทึ่งมาก
โมเดล parakeet ของ Nvidia ถือว่าทันสมัยมากสำหรับภาษาอังกฤษ
เร็วกว่า Whisper 10 เท่า และบน CPU AMD ระดับกลางของฉันก็ยังทำงานได้เร็วกว่าระดับเรียลไทม์มาก
สามารถทำ speech recognition แบบออฟไลน์ด้วย Whisper ได้
บางแอปรองรับการพิมพ์ตามเสียงหรือถอดเสียงแบบออฟไลน์เต็มรูปแบบอยู่แล้ว
ยกตัวอย่างข้อความ "The brown fox jumps over the lazy dog.."
ใช้เวลาสร้างเฉลี่ย 1.28 วินาที และได้ประมาณ 30.35 ตัวอักษรต่อวินาที
ทดสอบบน AMD Ryzen 7 5800H
สำหรับโมเดลรู้จำเสียงพูดแบบออฟไลน์ OpenAI whisper น่าจะเป็นตัวหลักที่คนรู้จักกันมากที่สุด
ที่เก็บโค้ดอย่างเป็นทางการของ Whisper
มีใครรู้บ้างว่าปัจจัยอะไรส่งผลกับ latency ของโมเดล TTS?
ค่อนข้างน่าประทับใจ
ในบางสายงาน เช่น ด้าน embedded ก็น่าจะมีที่ให้ใช้ได้จริง
แต่คุณภาพคงยังไม่ถึงขั้นแทนที่โมเดลขนาดใหญ่ได้
สำหรับ open TTS ที่รันออฟไลน์และคุณภาพสูงที่สุด ฉันมองว่า fish-speech กับ f5-tts เด่นสุด
ฉันเคยรัน F5-TTS บน NVidia 1660 รุ่นเก่า (VRAM 6GB) แล้วก็ใช้งานได้โอเค
ถ้าเป็นฮาร์ดแวร์ใหม่กว่านี้ ก็จะได้คุณภาพที่สูงกว่า รองรับหลายภาษา และทำ zero-shot ได้โดยไม่ต้องจ่ายแพง
บน Android นั้น SherpaTTS รองรับได้ดี
โมเดลนี้เป็นเวอร์ชันพรีวิว และตั้งใจจะปรับปรุงคุณภาพอีกมากในอนาคต
Fish Speech ใช้น้ำหนักโมเดลที่ห้ามใช้งานเชิงพาณิชย์
ฉันสงสัยเรื่องความต้องการ VRAM เพราะ KittenTTS มีแค่ 15 ล้านพารามิเตอร์ จึงอาจรันได้แม้บนคอมพิวเตอร์ประหยัดพลังงานราคาต่ำกว่า 100 ดอลลาร์
GPU 6GB ที่คุณยกมานั้นก็ถือว่าเก่าแล้ว
คุณภาพยังไม่น่าประทับใจเท่าที่หวังไว้
เป้าหมายคืออยากได้เสียงที่เป็นธรรมชาติ
piper กับ kokoro ก็ยังไม่ค่อยถูกใจ และ XTTS ก็ติดตั้งยุ่งยากนิดหน่อย
ฝั่ง speech recognition (STT) นั้น whisper ยอดเยี่ยมจริง ๆ
เลยอยากได้ TTS ดี ๆ บ้าง
ต่อให้กิน GPU เยอะก็ไม่เป็นไร ขอแค่คุณภาพดี
สำหรับโมเดลนี้ ตอนนี้ฉันว่าแย่กว่า kokoro อีก
ส่วนตัวฉันคิดว่าคุณภาพระดับ SOTA ของโอเพนเวตตอนนี้ chatterbox ดีที่สุด
TTS โอเพนซอร์สที่ดีที่สุดเท่าที่ฉันเคยเห็นคือ Dia
แม้จะมีข้อจำกัดอยู่บ้าง แต่บนโน้ตบุ๊กก็ยังรันได้ดี
Pinokio ก็น่าลองใช้ดูเหมือนกัน
Chatterbox ก็น่าลองเช่นกัน
ถ้ามีทรัพยากร GPU เหลือเฟือ ก็ไม่จำเป็นต้องซีเรียสเรื่องคุณภาพของตัวนี้มากนัก
ประเด็นสำคัญคือโมเดลนี้รันได้โดยไม่ต้องใช้ GPU
สมัยก่อน ก่อนยุค Tacotron2 ก็มี TTS ขนาดเล็กอย่าง GlowTTS, MelGAN และ vocoder ที่รันบนคลาวด์ Digital Ocean ได้ในราคาถูก
หลังจากนั้นกระแสก็ค่อย ๆ ขยับไปสู่โมเดลขนาดใหญ่
แต่ต่อไปฉันคิดว่าเราจะเข้าสู่ยุคที่โมเดลขนาดเล็กถูกฝังลงในอุปกรณ์โดยตรง
ใช้กับ Raspberry Pi, ของเล่น และอุปกรณ์ขนาดเล็กต่าง ๆ ที่ไม่ต้องพึ่งเครือข่าย
Edge AI จะทำให้เกิดการขยายตัวครั้งใหญ่ในด้านหุ่นยนต์ ของเล่น อุปกรณ์ผู้บริโภค และเกม