Chatterbox TTS - โมเดลแปลงข้อความเป็นเสียงแบบโอเพนซอร์ส
(github.com/resemble-ai)- Chatterbox คือชุดโมเดลแปลงข้อความเป็นเสียงแบบโอเพนซอร์สรุ่นล่าสุดที่ Resemble AI เปิดเผย รองรับการโคลนเสียงและการสร้างเสียงหลายภาษา
- Chatterbox Multilingual V3 รุ่นล่าสุดคงขนาดโมเดลไว้ที่ 0.5B พร้อมตั้งเป้าปรับปรุงความคล้ายคลึงของผู้พูด ลดอาการหลอน และให้เสียงสนทนาหลายภาษาที่เป็นธรรมชาติมากขึ้น
- Chatterbox-Turbo เป็นโมเดล 350M สำหรับเอเจนต์เสียงภาษาอังกฤษแบบหน่วงต่ำ โดยลดการสร้างของ speech-token-to-mel decoder จาก 10 ขั้นตอนเหลือ 1 ขั้นตอน และรองรับ paralinguistic tag เช่น
[laugh],[cough] - โครงสร้างโมเดลแบ่งเป็น Turbo, Multilingual V3, Single Language Pack และ Chatterbox รุ่นเดิม โดยโมเดลหลายภาษารองรับ 23 ภาษา รวมถึงภาษาเกาหลี และ Single Language Pack มีการ fine-tuning เฉพาะ 6 แบบ
- ไฟล์เสียงทั้งหมดที่สร้างขึ้นมี PerTh watermark ของ Resemble AI และระบุว่ายังคงตรวจจับได้แม่นยำเกือบ 100% แม้หลังการบีบอัด MP3 การตัดต่อเสียง และการปรับแต่งทั่วไป
ภาพรวม Chatterbox TTS
- Chatterbox คือชุดโมเดลแปลงข้อความเป็นเสียงแบบโอเพนซอร์สของ Resemble AI
- มีตัวอย่างเดโม, Hugging Face Space, การประเมิน Podonos และลิงก์ Discord ให้พร้อมกัน
รีลีสล่าสุด: Chatterbox Multilingual V3
- Chatterbox Multilingual V3 คือโมเดล TTS หลายภาษาอเนกประสงค์รุ่นล่าสุดในตระกูล Chatterbox
- V3 ปรับปรุงสิ่งต่อไปนี้โดยยังคง ขนาดโมเดล 0.5B เท่าเดิม
- ความคล้ายคลึงของผู้พูด
- การลดอาการหลอน
- เสียงสนทนาที่เป็นธรรมชาติมากขึ้นในหลายภาษา
- เช่นเดียวกับ V2 โมเดลนี้ตั้งเป้าครอบคลุมภาษากว้างขวาง แต่ถูกออกแบบให้สร้างเสียงที่เสถียรและถ่ายทอดอารมณ์ได้ดีกว่า
- เป็นโมเดลหลายภาษาที่แนะนำสำหรับผู้ใช้ที่ต้องการโมเดลโคลนเสียงหนึ่งตัวซึ่งทำงานได้ในหลายภาษา
Single Language Pack
- Single Language Pack คือชุดโมเดล fine-tuning เฉพาะสำหรับภาษาที่มีลำดับความสำคัญ
- ใช้เมื่อต้องการพฤติกรรมเฉพาะภาษาที่แข็งแรงกว่าโมเดลหลายภาษาอเนกประสงค์ การควบคุมคุณภาพที่เข้มงวดกว่า และการสร้างเสียงที่รับรู้สำเนียงถิ่น
- โมเดลเฉพาะที่มีให้มี 6 แบบ
Chatterbox-Turbo
- Chatterbox-Turbo เป็นโมเดลที่มีประสิทธิภาพที่สุดสำหรับเอเจนต์เสียงภาษาอังกฤษแบบหน่วงต่ำ
- ใช้สถาปัตยกรรมที่ทำให้เรียบง่ายขนาด 350M พารามิเตอร์ และถูกออกแบบให้สร้างเสียงคุณภาพสูงด้วยการคำนวณและ VRAM น้อยกว่ารุ่นก่อนหน้า
- ทำ distillation ส่วนคอขวดอย่าง speech-token-to-mel decoder เพื่อลดขั้นตอนการสร้างจาก 10 ขั้นตอนเหลือ 1 ขั้นตอน
- Turbo รองรับ paralinguistic tag เช่น
[cough],[laugh],[chuckle]เป็นค่าเริ่มต้น ช่วยเพิ่มการแสดงออกที่สมจริง - การใช้งานหลักคือเอเจนต์เสียงแบบหน่วงต่ำ แต่ระบุว่าเหมาะกับงานบรรยายและเวิร์กโฟลว์สร้างสรรค์ด้วย
- บริการ TTS เชิงพาณิชย์ให้ประสิทธิภาพหน่วงต่ำมากต่ำกว่า 200ms และแนะนำว่าเหมาะกับการใช้งาน production สำหรับเอเจนต์ แอปพลิเคชัน และสื่ออินเทอร์แอคทีฟ
โครงสร้างโมเดล
| โมเดล | ขนาด | ภาษา | ฟีเจอร์หลัก | เหมาะกับการใช้งาน |
|---|---|---|---|---|
| Chatterbox-Turbo | 350M | English | paralinguistic tag, การคำนวณ·VRAM ต่ำ | เอเจนต์เสียง zero-shot, production |
| Chatterbox-Multilingual V3 | 500M | 23+ | ปรับปรุงความคล้ายคลึงของผู้พูด, ลดอาการหลอน, เสียงหลายภาษาที่เป็นธรรมชาติ | แอปทั่วโลก, localization, การโคลนเสียงข้ามภาษา |
| Single Language Pack | อย่างละ 500M | fine-tuning เฉพาะ 6 แบบ | การควบคุมคุณภาพตามภาษา·ภูมิภาค | แอปที่ให้ความสำคัญกับภาษาและไวต่อสำเนียงถิ่น |
| Chatterbox | 500M | English | การปรับ CFG และ exaggeration | TTS zero-shot ทั่วไปที่มีการควบคุมเชิงสร้างสรรค์ |
การติดตั้งและการรัน
- ติดตั้งแพ็กเกจด้วย
pip install chatterbox-tts - รองรับการติดตั้งจากซอร์สด้วย
git clone https://github.com/resemble-ai/chatterbox.git cd chatterbox pip install -e . - สภาพแวดล้อมพัฒนา·ทดสอบคือ Python 3.11 และ Debian 11 โดยเวอร์ชัน dependency ถูกตรึงไว้ใน
pyproject.toml - ในโหมดติดตั้งจากซอร์ส สามารถแก้ไขโค้ดหรือ dependency ได้
วิธีใช้งาน
- Chatterbox-Turbo โหลดโมเดลด้วย
ChatterboxTurboTTS.from_pretrained(device="cuda")และส่งพาธคลิปอ้างอิงผ่านaudio_prompt_pathเพื่อโคลนเสียง - ตัวอย่าง Turbo สร้างประโยคที่มี paralinguistic tag เช่น
[chuckle] - โมเดลภาษาอังกฤษทั่วไปใช้
ChatterboxTTSส่วนโมเดลหลายภาษาใช้ChatterboxMultilingualTTS - โหลด Multilingual V3 ด้วย
ChatterboxMultilingualTTS.from_pretrained(device=device, t3_model="v3")- หากต้องการใช้ checkpoint V2 แบบ legacy ให้ละ
t3_modelหรือส่ง"v2"
- หากต้องการใช้ checkpoint V2 แบบ legacy ให้ละ
- หากต้องการสังเคราะห์ด้วยเสียงอื่น ให้ระบุไฟล์เสียงอ้างอิงใน
audio_prompt_path - ตัวอย่างเพิ่มเติมอยู่ใน
example_tts.pyและexample_vc.py
ภาษาที่รองรับ
- โมเดล Chatterbox Multilingual อเนกประสงค์รองรับ 23 ภาษา ดังนี้
- Arabic
ar - Danish
da - German
de - Greek
el - English
en - Spanish
es - Finnish
fi - French
fr - Hebrew
he - Hindi
hi - Italian
it - Japanese
ja - Korean
ko - Malay
ms - Dutch
nl - Norwegian
no - Polish
pl - Portuguese
pt - Russian
ru - Swedish
sv - Swahili
sw - Turkish
tr - Chinese
zh
- Arabic
เคล็ดลับการปรับแต่ง Chatterbox รุ่นเดิม
- คลิปอ้างอิง ควรตรงกับแท็กภาษาที่ระบุ
- มิฉะนั้น เอาต์พุตการถ่ายโอนภาษาอาจรับสำเนียงของภาษาจากคลิปอ้างอิงมาด้วย
- เพื่อลดปัญหานี้ ให้ตั้ง
cfg_weightเป็น0
- ค่าเริ่มต้นคือ
exaggeration=0.5,cfg_weight=0.5และทำงานได้ดีในพรอมป์ต์และภาษาส่วนใหญ่ - หากผู้พูดอ้างอิงพูดเร็ว การลด
cfg_weightลงเหลือประมาณ0.3อาจช่วยควบคุมความเร็วได้ - สำหรับเสียงที่มีการแสดงออกหรือดราม่า ให้ลองใช้
cfg_weightต่ำและexaggerationตั้งแต่0.7ขึ้นไปexaggerationที่สูงมีแนวโน้มทำให้ความเร็วการพูดเร็วขึ้น- การลด
cfg_weightช่วยชดเชยให้ความเร็วช้าลงและระมัดระวังมากขึ้น
PerTh watermark ในตัว
- ไฟล์เสียงทั้งหมดที่สร้างด้วย Chatterbox จะมี watermark Perth ของ Resemble AI
- watermark นี้เป็น watermark แบบ neural ที่ตรวจจับไม่ได้ อิงตาม Perceptual Threshold
- ระบุว่ายังคงอยู่หลังการบีบอัด MP3 การตัดต่อเสียง และการปรับแต่งทั่วไป พร้อมรักษาความแม่นยำในการตรวจจับได้เกือบ 100%
- การสกัด watermark ทำด้วย
perth.PerthImplicitWatermarker()และget_watermark()- ผลลัพธ์จะแสดงเป็นไม่มี watermark
0.0หรือมี watermark1.0
- ผลลัพธ์จะแสดงเป็นไม่มี watermark
การประเมิน
- Chatterbox Turbo ได้รับการประเมินด้วย Podonos ซึ่งเป็นแพลตฟอร์มประเมินเสียงเชิงอัตวิสัยที่ทำซ้ำได้
- ระบบ TTS คู่แข่งเป็นกลุ่มเปรียบเทียบ และจุดเน้นของการประเมินคือความชอบโดยรวม ความเป็นธรรมชาติ และการถ่ายทอดอารมณ์
- มีรายงานการประเมินสาธารณะให้ดู
- การประเมินทั้งหมดทำภายใต้เงื่อนไขเดียวกัน และเปิดให้เข้าถึงสาธารณะผ่าน Podonos
หมายเหตุอื่นนอกจากไลเซนส์
- README ระบุว่า “อย่าใช้โมเดลนี้ทำเรื่องไม่ดี”
- ระบุว่าพรอมป์ต์นำมาจากข้อมูลที่เข้าถึงได้อย่างอิสระบนอินเทอร์เน็ต
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูเดโมได้ที่นี่: https://resemble-ai.github.io/chatterbox_demopage/
ถ้าไม่ใช่ตัวอย่างที่คัดมาอย่างดีเกินไป ก็ถือเป็นรีลีสที่ค่อนข้างดี ผมพูดเรื่องเดิมทุกครั้ง แต่พอลองทดลองเองแล้ว คอขวดของ AI เสียงไม่ได้อยู่ที่ การสังเคราะห์เสียง แต่อยู่ที่ คุณภาพการถอดเสียง มากกว่า ไม่รู้ว่าช่วงหลังเปลี่ยนไปหรือยัง
ยังไม่ได้ลองให้ทรานสคริปต์ทางเลือกหรือคะแนนความเชื่อมั่นกับ LLM ไปพร้อมกัน แต่ดูมีแนวโน้มสูงว่าจะใช้ประโยชน์จากสิ่งนั้นได้ดีด้วย
ควรมีฟังก์ชันเทียบกับรายการวลีที่พบบ่อยด้วย การที่ LLM ออกเสียง “live feed” หรือ “live here” ผิดนั้นแก้ตัวได้ยาก
https://huggingface.co/nvidia/parakeet-tdt-0.6b-v2
ผมใช้กับแชตสดและการสร้างซับไตเติล และบน 3090 ประมวลผลรายการทีวีหนึ่งตอนได้ในไม่ถึง 1 นาที ส่วน Whisper สำหรับผมมีอาการ hallucination เยอะเกินไป และมีประโยชน์กว่าเมื่อใช้เป็นตัวจำแนกประเภท
ลองรันฟรีได้ที่นี่: https://huggingface.co/spaces/ResembleAI/Chatterbox
ถ้าต้องการโมเดลที่ “เปิด” มากกว่านี้ ในแง่การโคลนเสียงแบบสุ่ม MaskGCT, MegaTTS3 ฟังดูดีกว่า และในแง่การแปลงเสียง Seed-VC, MegaTTS3 ฟังดูดีกว่า อย่างไรก็ตาม มีเพียง Seed-VC เท่านั้นที่มีโค้ดเทรน/fine-tuning ถ้ายังไงก็ต้องใช้โมเดลที่ fine-tune ไม่ได้ และต้องการการโคลนแบบสุ่มที่เข้ากับเสียงของตัวเองมากกว่า ใช้ฝั่งนี้แทน Chatterbox จะดีกว่า โดยเฉพาะ MegaTTS3 ของ ByteDance นั้นแข็งแกร่งมาก นักวิจัยของ ByteDance นำหน้าทีมวิจัย TTS ส่วนใหญ่ไปไกลมาก ยกเว้น ElevenLabs และยังมีทั้งเงินทุน นักวิจัยระดับปริญญาเอก และข้อมูลเทรนมากกว่ามาก
แต่สำเนียงออสเตรเลียของผมถูกทำให้เป็นอังกฤษมาก ๆ แถมเหมือนสำเนียง RP หรู ๆ ด้วย ฟังดูเป็นธรรมชาติมากก็จริง แต่ไม่สามารถจำลองสำเนียงของผมได้ ถึงอย่างนั้น ถ้าไม่ได้พยายามเลียนแบบใครจริง ๆ ก็ชัดเจนอย่างน่าทึ่งและเหมาะกับ งาน TTS ส่วนใหญ่
Chatterbox ยอดเยี่ยมมาก
ผมทำ API wrapper ที่ช่วยให้ติดตั้งง่ายขึ้น และรองรับ Docker ด้วย: https://github.com/travisvn/chatterbox-tts-api/
จากประสบการณ์ของผม นี่เป็นตัวเลือก โคลนเสียง ที่ใช้ในเครื่องได้ดีที่สุดอย่างชัดเจน
ขออภัยถ้าคำถามต่อไปนี้เป็นระดับพื้นฐาน ผมหาคำสั่ง CLI ง่าย ๆ สำหรับระบุไฟล์ข้อความในเครื่องแทนการใช้ออบเจ็กต์
inputแบบอินไลน์อยู่ แต่หาไม่เจอ ถ้ามีคำใบ้จะขอบคุณมากดูเหมือนจะทำมาโดยอิงกับ 2.6
"chatterbox-tts 0.1.2 requires torch==2.6.0, but you have torch 2.7.0+cu128 which is incompatible. chatterbox-tts 0.1.2 requires torchaudio==2.6.0, but you have torchaudio 2.7.0+cu128 which is incompatible."ระบุว่าไฟล์เสียงทั้งหมดที่ Chatterbox สร้างขึ้นจะมี วอเตอร์มาร์ก Perth ของ Resemble AI อยู่ด้วย
ว่ากันว่าเป็นวอเตอร์มาร์กแบบโครงข่ายประสาทที่มนุษย์รับรู้ไม่ได้ ทนต่อการบีบอัด MP3 การตัดต่อเสียง และการดัดแปลงทั่วไป และยังคงความแม่นยำในการตรวจจับไว้ได้เกือบ 100% แต่ถ้าผมไม่ได้เข้าใจผิด แค่คอมเมนต์การเรียก
apply_watermarkในtts.pyก็ปิดวอเตอร์มาร์กได้ง่าย ๆ ไม่ใช่หรือ? https://github.com/resemble-ai/chatterbox/blob/master/src/ch...ผมเคยคิดว่าแก่นสำคัญของวอเตอร์มาร์กแบบนี้คือมันควรถูกฝังไว้ใน weight ของโมเดลอย่างใดอย่างหนึ่ง จนแยกออกได้ไม่ง่าย ถ้าจะปล่อยโมเดลโอเพนซอร์สแล้วใส่วอเตอร์มาร์กเป็นขั้นตอน post-processing แยกต่างหาก ก็ไม่เข้าใจว่าตั้งแต่แรกใส่วอเตอร์มาร์กไปทำไม
หรืออาจมีจุดประสงค์เพื่อป้องกันไม่ให้ข้อมูลแปลก ๆ หลุดปนเข้าไปโดยไม่ตั้งใจในแง่ของข้อมูลฝึกสอนก็ได้
--no-watermarkด้วย ผมนึกว่าใส่มาเพื่อให้ผู้ใช้ปลายทางที่เอาไปใช้ในผลิตภัณฑ์ที่ใหญ่กว่าใช้เป็น “ฟีเจอร์”ผู้นำในตลาด TTS นั้นชัดเจนและปักหลักลึกแล้ว ดังนั้นบริษัทอย่าง Resemble, Play(HT) จึงต้องให้ weight และปรับเข้าหานักพัฒนาอย่างจริงจัง [1] ส่วนการทำวอเตอร์มาร์กคือกลไกปัดความรับผิดชอบต่อเรื่องนั้น ถ้าไม่มีวอเตอร์มาร์ก ความกังวลเรื่องการนำไปใช้ในทางที่ผิดจะถูกหยิบมาพูดอย่างหนัก โดยมีสื่อสายต่อต้าน AI อย่าง 404Media เป็นศูนย์กลาง [2]
[1] นี่คือวิธีที่ถูกต้อง ต้องให้ซอร์สโค้ดและ weight พร้อมทั้งมี API ของตัวเองและบริการ fine-tuning ด้วย เพื่อไม่ให้นักพัฒนาต้องยุ่งยาก แบบนั้นจึงจะดึงส่วนแบ่งตลาดบางส่วนกลับมาได้
[2] https://www.404media.co/wikipedia-pauses-ai-generated-summar...
อาจเป็นคำถามโง่ ๆ แต่ ฮาร์ดแวร์ขั้นต่ำ ที่รันได้ต้องประมาณไหน?
เผื่อจะมีประโยชน์ ขอจดปัญหาไว้: ใช้ Python 3.13 ไม่ได้ แต่ถ้าสร้าง virtual environment 3.12 ด้วย
uvก็แก้ได้ มีข้อความว่าไม่มี numpy 1.26.4 ทั้งที่จริง ๆ มีอยู่ และuv pipกำลังค้นหาเฉพาะใน repository ของ PyTorch ต้องใส่ flag--index-strategyเพื่อให้ตรวจ repository อื่นด้วย เวอร์ชันpip install chatterbox-ttsมีบั๊กในโหมด CPU-only จึงต้อง clone Git repository และ main เวอร์ชันล่าสุดต้องใช้protobuf-compilerบน Debian สุดท้ายเจอ CMake error ที่ตีความยาก แต่ดูเหมือนจะบ่นว่าไม่มี Python development headers ผมจะทำ inference ไม่ได้จะคอมไพล์ Python ทำไมถึงต้องใช้ก็ไม่รู้รู้ว่าบ่นไปก็ไม่สร้างสรรค์ แต่แทบทุกครั้งที่รันโปรเจกต์ Python ของคนอื่นก็เจอประสบการณ์แบบนี้ เจอปัญหาหนึ่งแล้วถอย เจออีกปัญหาแล้วถอย ผ่านไปชั่วโมงหนึ่งก็ยังรันไม่ได้อยู่ดี
ถ้าโมเดลดี ก็น่าจะมีใครสักคนหาวิธี optimize ให้รันด้วยทรัพยากรน้อยกว่านี้ได้
แก้ไข: ลองรันบน Nvidia 2060 รุ่นเก่าแล้ว และดูเหมือนการใช้ VRAM สูงสุดจะอยู่ราว 5GB
ในสภาพค่าเริ่มต้น ถ้าจะให้รันได้เร็วพอสมควร ดูเหมือนต้องใช้ฮาร์ดแวร์ผู้บริโภคที่ค่อนข้างแรง แต่ก็น่าจะยังมีช่องให้ปรับปรุงอีกมาก และผมไม่ใช่ผู้เชี่ยวชาญ
[1]: https://github.com/resemble-ai/chatterbox/issues/127
ต่อให้รันได้ฟรี แต่ถ้าเช่าใช้ถูกกว่า การรันเองก็หมดความหมาย
ฟีเจอร์ ขยายอารมณ์ให้เด่นขึ้น น่าสนใจ แต่ยังไม่เห็นอะไรที่อเนกประสงค์และ “ปั้น” เสียงได้ง่ายเท่า ElevenLabs ที่สร้างเสียงจากแค่คำอธิบายเสียงที่ต้องการ
SparkTTS มีพารามิเตอร์เพิ่มเติมบางอย่าง และถ้าดู placeholder ในโค้ดโปรเจกต์ GitHub ก็เห็นความเป็นไปได้ว่าโมเดลอาจถูกพัฒนาให้ควบคุมอารมณ์ได้ละเอียดขึ้น ตอนนี้ผมก็เคยประสบความสำเร็จอยู่บ้างด้วยการใส่ cue ในข้อความเพื่อชี้นำจังหวะและโทนอย่างแรง แล้วเอาผลลัพธ์นั้นกลับเข้าไปแปลงเสียงอีกทีเพื่อให้เข้าใกล้ผลที่ต้องการ แต่มันเป็นกระบวนการที่ยุ่งยากกว่า ElevenLabs มาก
กับสำเนียงที่พบได้บ่อยมาก ๆ ทำได้ยอดเยี่ยม แต่สำเนียงอื่น ๆ ที่ก็พบได้ค่อนข้างบ่อย กลับอาจถูกตรึงไปเป็นสำเนียงอื่นได้ง่าย
เช่น ไฟล์อัดเสียงสกอตแลนด์บางไฟล์ออกมาเป็นสำเนียงออสเตรเลีย และสำเนียงยอร์กเชียร์ที่ค่อนข้างอ่อนก็เป็นแบบเดียวกัน
สิ่งพวกนี้ดีพอที่จะอ่านหนังสือให้ฟังได้อย่างน่าเชื่อถือแล้วหรือยัง? หรือพอพูดไปได้ไม่กี่ย่อหน้า ความสม่ำเสมอของเสียง ก็พังลง?
สำหรับงานเขียนยาว ๆ ควรแบ่งสร้างเป็นแบตช์ระดับย่อหน้า แล้วค่อยนำมาต่อกันในตอนท้าย นอกจากนี้ ถ้าไฟล์ WAV ตัวอย่างแบบ one-shot ไม่สะอาดมากพอ Chatterbox ก็เคยสร้างเสียงฟิ้วที่ดูเหมือนเสียงหยาบคายแบบสุ่มที่ท้ายเสียงที่สร้างออกมา ถ้ากำลังอัด Dante's Inferno อยู่ ก็อาจถือเป็นโบนัสได้
ต้องคอยเตือนเพื่อนและครอบครัวเป็นระยะ ๆ ให้สงสัย สายโทรศัพท์ มากขึ้น
โอกาสที่เพื่อนที่บอกว่าต้องการบัตรของขวัญ Walmart ด่วน ๆ จะไม่ใช่เพื่อนจริง ๆ มีมากขึ้นเรื่อย ๆ
การแอบอ้างตัวตนทำได้ง่ายและถูกเกินไป จนในอนาคตอันใกล้แทบเป็นไปไม่ได้ที่จะไม่เกิดสายหลอกลวงแบบนี้ท่วมท้น
ถ้าแทรกกลางคันว่า “ช่วยแต่งกลอนเกี่ยวกับ x ให้หน่อยได้ไหม?” จะคัดกรองได้ค่อนข้างแน่นอน แต่ ความหน่วงในการตอบสนอง ยังเห็นได้ชัดเกินไป
ถ้าเป็นสถานการณ์จริง อีกฝ่ายก็ควรรู้รหัสนั้น จึงใช้ยืนยันตัวตนได้ ต้องคอยย้ำให้จำไว้ว่ารหัสนี้จะช่วยป้องกันการแอบอ้างตัวตนในยุคใหม่ที่ทำได้ทั้งเสียงและวิดีโอ AI
ตอนนี้แนวหน้าของ TTS หลายภาษา แบบโอเพนซอร์สไปถึงระดับไหนแล้ว? Kokoro ทำได้ยอดเยี่ยมในภาษาอังกฤษ แต่ผมยังมองหาวิธีที่ดีสำหรับภาษาฝรั่งเศส ญี่ปุ่น และเยอรมันอยู่