- Pocket TTS ซึ่งมีพารามิเตอร์ 100 ล้านตัว เป็นโมเดลแปลงข้อความเป็นเสียงแบบน้ำหนักเบาที่มีความสามารถด้านการโคลนเสียง และสามารถรันแบบเรียลไทม์ได้แม้บน CPU ของโน้ตบุ๊กทั่วไป
- ช่วยลดช่องว่างด้านประสิทธิภาพระหว่าง TTS แบบอิง LLM ขนาดใหญ่ (พารามิเตอร์มากกว่า 1 พันล้าน) กับ Kokoro TTS ขนาดเล็ก (82 ล้านพารามิเตอร์) พร้อมบรรลุทั้งคุณภาพสูงและประสิทธิภาพในเวลาเดียวกัน
- ใช้เพียงตัวอย่างเสียงยาวประมาณ 5 วินาทีก็สามารถโคลนโทนเสียง อารมณ์ น้ำเสียง และสภาพเสียงของผู้พูดได้อย่างแม่นยำ
- ใช้สถาปัตยกรรมที่อิง Continuous Audio Language Model โดยทำนายเวกเตอร์แฝงแบบต่อเนื่องโดยตรงแทน discrete token ทำให้ลดขนาดโมเดลได้โดยไม่ลดคุณภาพ
- เปิดซอร์สภายใต้ไลเซนส์ MIT และนำเสนอมาตรฐานใหม่ของเทคโนโลยี TTS แบบน้ำหนักเบาที่ทำให้การสังเคราะห์เสียงคุณภาพสูงบนสภาพแวดล้อม CPU เป็นจริง
ภาพรวมของ Pocket TTS
- Pocket TTS เป็นโมเดลแปลงข้อความเป็นเสียงที่มีพารามิเตอร์ 100 ล้านตัว และรองรับความสามารถด้านการโคลนเสียง (voice cloning)
- สามารถทำงานแบบเรียลไทม์ได้แม้บน CPU ของโน้ตบุ๊ก
- รันแบบโลคัลได้ด้วยคำสั่ง
uvx pocket-tts serve หรือ uvx pocket-tts generate
- พัฒนาโดย Kyutai และเปิดซอร์สภายใต้ไลเซนส์ MIT
- ใช้ข้อมูลฝึกจากชุดข้อมูลเสียงภาษาอังกฤษแบบสาธารณะเท่านั้น
- มีการกล่าวถึงความเป็นไปได้ในการขยายด้วยข้อมูลปิดเพิ่มเติม
เปรียบเทียบกับโมเดล TTS เดิม
- เทคโนโลยี TTS ในปัจจุบันแบ่งออกได้เป็นสองประเภท
- โมเดลขนาดใหญ่แบบอิง LLM: เช่น Kyutai TTS 1.6B (ประมาณ 1.6 พันล้านพารามิเตอร์)
- สามารถสร้างแบบจำลองเสียง อารมณ์ และสภาพเสียงที่หลากหลายได้ แต่ต้องใช้ GPU
- โมเดลเฉพาะทางขนาดเล็ก: เช่น Kokoro TTS (82 ล้านพารามิเตอร์)
- มีประสิทธิภาพด้วยการใช้ชุดเสียงคงที่และpipeline ที่ออกแบบด้วยมือ แต่มีข้อจำกัดด้านความยืดหยุ่น
- Pocket TTS อยู่ในจุดกึ่งกลางของสองแนวทางนี้ และสามารถสังเคราะห์เสียงคุณภาพสูงได้แม้บน CPU
การประเมินประสิทธิภาพ
- ประเมินด้วยชุด Librispeech test-clean
- อินพุตเสียงถูกปรับปรุงด้วย Adobe Enhance Speech เพื่อให้ได้คุณภาพ 24kHz
- โมเดลที่ใช้เปรียบเทียบ: F5-TTS, DSM, Chatterbox Turbo, Kokoro TTS
- ตัวชี้วัดการประเมิน:
- Word Error Rate (WER)
- คุณภาพเสียง (ELO)
- ความคล้ายของผู้พูด (ELO)
- สรุปผลลัพธ์:
- Pocket TTS มีค่า WER 1.84 ซึ่งเป็นอัตราความผิดพลาดต่ำที่สุด
- คุณภาพเสียงดีกว่า F5-TTS และ DSM
- ความคล้ายของผู้พูดอยู่ในระดับเทียบเท่ากับเสียงอ้างอิง
- เป็นโมเดลเดียวที่รันได้เร็วกว่าเรียลไทม์บน CPU
| โมเดล |
จำนวนพารามิเตอร์ |
WER ↓ |
คุณภาพเสียง (ELO) ↑ |
ความคล้ายของผู้พูด (ELO) ↑ |
รันแบบเรียลไทม์บน CPU |
| F5-TTS |
336M |
2.21 |
1949 ± 27 |
1946 ± 26 |
✗ |
| Kyutai TTS 1.6B |
750M |
1.84 |
1959 ± 25 |
2037 ± 21 |
✗ |
| Chatterbox Turbo |
350M |
3.24 |
2055 ± 23 |
2012 ± 22 |
✗ |
| Kokoro |
82M |
ไม่มีการโคลนเสียง |
ไม่มีการโคลนเสียง |
✓ |
|
| Pocket TTS |
100M |
1.84 |
2016 ± 25 |
1898 ± 26 |
✓ |
- เมื่อทดสอบบน CPU Intel Core Ultra 7 165H และ Apple M3 พบว่าเฉพาะ Pocket TTS และ Kokoro เท่านั้นที่สังเคราะห์แบบเรียลไทม์ได้
สถาปัตยกรรม
- Pocket TTS ถูกออกแบบบนพื้นฐานของงานวิจัย Continuous Audio Language Model
- วิธีเดิมจะทำนายโทเคนเสียงแบบไม่ต่อเนื่อง แต่ Pocket TTS จะทำนายเวกเตอร์แฝงแบบต่อเนื่อง (latent) โดยตรง
- ทำให้สามารถตัดคอขวดของ RQ-transformer และทำให้โมเดลมีขนาดเล็กลง
Neural Audio Codec
- ออกแบบบนพื้นฐานของโคเด็ก Mimi
- Mimi บีบอัดเป็นโทเคนแบบไม่ต่อเนื่อง แต่ Pocket TTS ใช้การแทนเชิงแฝงแบบต่อเนื่อง
- ใช้การฝึก VAE ที่ทำ normalization ด้วยการแจกแจงปกติ
- กลั่น (distillation) WavLM ไปยังการแทนภายในด้วยcosine similarity loss
- ตัดขั้นตอน RVQ ออก และใช้ distillation loss กับการแทนเชิงแฝงทั้งหมด
Generative Model
- อิงกรอบงาน Masked Autoregressive (MAR)
- ประกอบด้วย Causal Transformer backbone และ MLP sampler
- ใช้ loss แบบ Lagrangian Self-Distillation (LSD) เพื่อทำการสุ่มตัวอย่างแบบ 1-step
- ระหว่างการอนุมาน จะป้อนกลับเวกเตอร์แฝงที่ทำนายแล้วแบบ autoregressive
การกำหนดเงื่อนไขด้วยเสียงและข้อความ
- อินพุตของโมเดลคือการรวมกันของพรอมป์ตเสียง (ไม่กี่วินาที) และข้อความ
- เสียงถูกฝังด้วย codec encoder ส่วนข้อความถูกฝังด้วย SentencePiece tokenizer
องค์ประกอบขนาดโมเดล
- โมเดลกำเนิด (Transformer + MLP) : 90 ล้านพารามิเตอร์
- codec decoder: 10 ล้านพารามิเตอร์
- codec encoder: 18 ล้านพารามิเตอร์ (ใช้เพียงครั้งเดียวตอนเข้ารหัสตัวอย่างเสียง)
ข้อมูลฝึก
- ประกอบด้วยชุดข้อมูลเสียงภาษาอังกฤษแบบสาธารณะทั้งหมด รวม 88,000 ชั่วโมง
- AMI, EARNINGS22, GIGASpeech, SPGISpeech, TED-LIUM, VoxPopuli, LibriHeavy, Emilia
ผลงานทางเทคนิคหลัก
Head Batch Multiplier
- นำเวกเตอร์ z กลับมาใช้หลายครั้งเพื่อลดคอขวดด้านการคำนวณของ Transformer
- คำนวณ z หนึ่งครั้งต่ออินพุตแต่ละลำดับ แล้วนำกลับมาใช้คำนวณ loss 8 ครั้ง
- ช่วยเพิ่มประสิทธิภาพและทำให้การฝึกมีเสถียรภาพมากขึ้น
Gaussian Temperature Sampling
- ใช้การปรับอุณหภูมิการสุ่มตัวอย่างแม้ในปริภูมิแบบต่อเนื่อง
- ปรับปรุงคุณภาพด้วยการลดความแปรปรวนของ Gaussian noise
- พบผลลัพธ์ที่ดีเมื่อใช้อุณหภูมิ 0.7
Latent Classifier-Free Guidance (Latent CFG)
- นำ CFG แบบเดิมมาใช้ในระดับตัวแปรแฝง (z)
- ปรับปรุงคุณภาพด้วยการผสมเชิงเส้นระหว่างเอาต์พุตแบบมีเงื่อนไข/ไม่มีเงื่อนไข
- ใช้ค่า α=1.5
- มีแนวคิดคล้ายกันปรากฏในงานวิจัย SoundReactor
Distillation
- ใช้โมเดล CFG เป็นโมเดลครูเพื่อกลั่นเป็นโมเดลนักเรียนแบบน้ำหนักเบา
- ตรึง MLP head ของโมเดลครูไว้ แล้วให้โมเดลนักเรียนเรียนรู้ z ด้วยL2 loss
- สามารถย่อจากโมเดลครู 24 ชั้น → โมเดลนักเรียน 6 ชั้นได้
บทสรุป
- Pocket TTS เป็นโมเดล TTS แบบน้ำหนักเบาที่สามารถสังเคราะห์เสียงคุณภาพสูงแบบเรียลไทม์ได้แม้บน CPU
- ผสานสถาปัตยกรรมบนปริภูมิแฝงแบบต่อเนื่อง, เทคนิคการฝึกที่มีประสิทธิภาพ, และความสามารถด้านการโคลนเสียง
- เปิดซอร์สภายใต้ไลเซนส์ MIT มอบทั้งการทำซ้ำผลลัพธ์และความสามารถในการต่อยอดให้แก่นักพัฒนาและนักวิจัย
4 ความคิดเห็น
ดูเหมือนว่าจะยังไม่ค่อยเห็นโมเดล TTS แบบโอเพนที่รองรับภาษาเกาหลีเท่าไรนะครับ
ก่อนหน้านี้มี Kokoro-82M ที่บอกว่ารองรับภาษาเกาหลี แต่ก็เคยได้ยินมาว่าคุณภาพน่าจะยังไม่ค่อยดีเท่าไร
ลองหาดูคร่าว ๆ ก็เห็นว่าถ้าทำและใช้งานด้วย GPT-Sovits หรือใช้พวก Edge-TTS ก็ดูเหมือนว่าจะออกมาใช้ได้โอเคพอสมควรเหมือนกันครับ
ช่วงนี้ถ้าเอาไปประกบกับ Whisper ตอน vibe coding ก็น่าจะมีอะไรสนุก ๆ ออกมาได้อยู่ แต่ยังนึกไอเดียไม่ออกเลย ฮ่า
ช่วงนี้ Supertonic ก็เพิ่งปล่อยโมเดลที่รองรับภาษาเกาหลีด้วย ลองไปหาดูกันได้เลยครับ
ผมลองทำไลบรารีแบบกดคลิกเดียวไว้ด้วยครับ!
https://www.npmjs.com/package/easy-supertonic-tts
เจ๋งมากครับ แต่ถ้าระหว่างทำมีที่อยู่ของทรัพยากรเป้าหมายแนบมาด้วยก็น่าจะดี เพราะจะให้ติดตั้งแบบมั่ว ๆ เลยก็คงไม่ได้ 55
ความคิดเห็นจาก Hacker News
ดีใจมากที่โพสต์ของฉันได้รับความสนใจขนาดนี้
ฉันเป็นส่วนหนึ่งของทีมที่ปารีสซึ่งกำลังพัฒนา โซลูชันเสียงระดับองค์กรบนพื้นฐานงานวิจัยของ Kyutai
ถ้าใครกำลังสร้างอะไรอยู่ในสายนี้ ฉันอยากแชร์โมเดลและฟีเจอร์ที่กำลังจะมา
ติดต่อมาได้ทางอีเมลในโปรไฟล์ของฉัน
ระหว่างอ่านเคสสตัดดียาว ๆ ก็รู้ตัวว่าต้องมีส่วนขยายเบราว์เซอร์ เลยลองทำอินเทอร์เฟซบนเบราว์เซอร์ขึ้นมาเอง
ผลลัพธ์คือ Pocket Reader
มันน่าสนใจมากจนฉันทำเป็น เซิร์ฟเวอร์ MCP ทันที และตั้งให้ Claude แจ้งเมื่อทำงานเสร็จ
speak_when_done
ฉันก็เคยทำเครื่องมือคล้ายกันโดยรันคำสั่ง
sayเป็นโปรเซสเบื้องหลัง แต่การตั้งค่าให้ได้เสียงที่ดีอย่างสม่ำเสมอนั้นยากเหมือนเสียงธรรมชาตินั้นถูกซ่อนไว้อยู่ที่ไหนสักแห่ง
speak-mcp
ตอนนี้คงจะลองใช้เซิร์ฟเวอร์ของคุณด้วย
คราวนี้คุณภาพโค้ดดีมากจริง ๆ
ปกติโค้ดเบสของโมเดลใหม่ ๆ มักเต็มไปด้วย กองพะเนินของ dependency ที่ไม่จำเป็น แต่รอบนี้ยอดเยี่ยมในแง่วิศวกรรมซอฟต์แวร์ด้วย
ขอบคุณที่แชร์! ฉันเป็น แฟนของ Kokoro ก็เลยสร้างผู้ช่วยเสียงแบบโลคัลขึ้นมาเอง
โปรเจกต์ ova
จะลองใช้ Pocket TTS แน่นอน
แต่ Pocket TTS เป็นแบบปิด เลยตรวจสอบฟีเจอร์โคลนเสียงไม่ได้
แค่อยากรู้ว่าใช้ mlx เป็นฐานหรือ Hugging Face transformers เป็นฐาน
สงสัยว่าโปรเจกต์นี้จะสามารถแจกจ่ายเป็น ไบนารีแบบสแตติกขนาดเล็ก ได้ไหม
ตอนนี้ dependency ค่อนข้างใหญ่
ชอบมากจริง ๆ
แต่เห็นระบุว่าเป็นไลเซนส์ MIT ขณะที่ใน README มีส่วน Prohibited Use แยกต่างหาก เลยสับสนว่ามันจะกลายเป็นซอฟต์แวร์ไม่เสรีหรือเปล่า
เช่นเดียวกับรูปภาพหรือเสียง โมเดล ML อาจไม่ถูกมองว่าเป็นซอฟต์แวร์
ในหน้าการ์ดโมเดลของ Hugging Face ก็มีข้อห้ามแบบเดียวกัน
เพราะงั้นข้อห้ามใน README อาจ ขัดกันในทางกฎหมาย
ฉันลองรัน
uvx pocket-tts serveบน M1 Macโดยให้มันอ่าน ย่อหน้าแรกของ A Tale of Two Cities เพื่อทดสอบ แต่พบว่าเสียง Javert มีปัญหา ข้ามบางประโยค ไปกลางทาง
ตัวอย่างเช่นวลีอย่าง “it was the age of foolishness” ถูกละไป
ทำให้ความน่าเชื่อถือลดลง
ฉันเปิด issue ที่เกี่ยวข้องไว้ ที่นี่
ปกติฉันไม่ได้ใช้โมเดลเสียงมากนัก แต่ Pocket TTS ทำให้ฉันได้รู้จัก unmute.sh
มันเป็นโอเพนซอร์สและดูเหมือนทำโดยบริษัทเดียวกัน
โมเดลพวกนี้ดูเหมือนจะ ใช้งานได้คุ้มค่าแม้ในสภาพแวดล้อม homelab
โมเดลโอเพนซอร์สตอนนี้ยกระดับขึ้นมาเยอะจนแทบมีตัวเลือกที่เหมาะกับเกือบทุกงานแล้ว
เหมือนว่าสายที่ยังมีอุปสรรคในการเข้าถึงจริง ๆ เหลืออยู่แค่ โมเดลสำหรับเขียนโค้ด
ก็น่าสนใจว่า Deepseek 4 จะเอาชนะ Claude Sonnet ได้หรือไม่
ฉันรวมมันเข้ากับ ปลั๊กอิน Codex ของตัวเอง ให้มันอ่านสรุปตอนจบของแต่ละเทิร์น ซึ่งทำงานได้ดีอย่างน่าทึ่ง
มันรันบน MacBook ของฉันได้ ลื่นกว่า Samantha มาก
agentify-sh/speak