- hertz-dev เปิดตัวเป็นโมเดลพื้นฐานสำหรับเสียงโดยเฉพาะแบบ full-duplex ขนาด 8.5B พารามิเตอร์ ที่รองรับสถานการณ์ที่คนสองคนพูดพร้อมกันได้ จึงเป็นจุดเริ่มต้นสำหรับงานวิจัยเอเจนต์เสียงแบบเรียลไทม์
- โครงสร้างแบ่งเป็น hertz-codec และ hertz-ar โดยแปลงเสียง 16kHz เป็น latent representation ที่ 8Hz จากนั้นทำนาย latent ของเสียงถัดไปแบบ autoregressive จากค่า latent ในอดีต
- บน RTX 4090 เครื่องเดียว ค่า latency เฉลี่ยจริง benchmark ได้ที่ 120ms และระบุว่า latency เฉลี่ยเชิงทฤษฎีคือ 80ms ต่ำกว่าระดับดีที่สุดก่อนหน้า 2 เท่า
- hertz-codec สร้าง latent 32 มิติ 1 ค่าในทุกเฟรม 125ms ส่วน hertz-ar ใช้ decoder-only transformer 40 เลเยอร์ 8.4B พารามิเตอร์ และ context ประมาณ 4.5 นาที
- ไม่ใช่โมเดลเชิงผลิตภัณฑ์ที่ปรับด้วย reinforcement learning เพื่อลดความกว้างของ distribution การตอบสนอง แต่เป็น โมเดลพื้นฐานที่ทำนาย distribution ของข้อมูลฝึก จึงทำให้นักวิจัย fine-tune ให้เหมาะกับงานเสียงแบบโต้ตอบได้ง่าย
ปัญหาเสียงแบบโต้ตอบที่ Hertz-dev มุ่งแก้
- สำหรับเอเจนต์แบบ interactive ที่เป็นธรรมชาติ audio modality ที่ตอบสนองทันทีมีความสำคัญมากกว่าข้อความ
- แนวทาง generative audio แบ่งได้กว้าง ๆ เป็นแบบ diffusion-based และ autoregressive โดย diffusion model แข็งแกร่งสำหรับการสร้างเพลงหรือ sample สั้น ๆ แต่สำหรับเสียงสนทนาแบบโต้ตอบจริง ๆ วิธี autoregressive เหมาะสมกว่า
- โจทย์หลักที่โมเดลสนทนาต้องแก้มี 2 ข้อ
- การสร้างเสียงที่ฟังดูเหมือนมนุษย์ และการจัดการ interruption อย่างเป็นธรรมชาติ
- การจัดการสถานการณ์ที่ช่องสัญญาณเรียลไทม์สองช่องสร้างข้อมูลพร้อมกัน เหมือนการสนทนาของมนุษย์ทั่วไป
โมเดลที่เปิดเผยและ latency
- hertz-dev เป็นโมเดลพื้นฐานสำหรับเสียงโดยเฉพาะแบบ full-duplex ขนาด 8.5B พารามิเตอร์
- ออกแบบให้เข้ากับรูปแบบผู้พูดสองคน จึง parse และสร้างเสียงของผู้พูดสองคนที่ซ้อนทับกันได้
- ทำงานใน latent space ที่ใช้บิตเชิง phonetics แบบ quantized และ sample เพียง latent ค่าเดียวในแต่ละ timestep
- มีการระบุ latency ดังนี้
- latency เฉลี่ยเชิงทฤษฎี: 80ms
- benchmark จริงบน RTX 4090 เครื่องเดียว: 120ms
- เป็นตัวเลขที่ต่ำกว่าระดับดีที่สุดก่อนหน้า 2 เท่า
โครงสร้างโมเดล: hertz-codec และ hertz-ar
- hertz-dev แบ่งเป็น 2 ส่วนประกอบ
- hertz-codec: encode เสียงเป็น latent แล้ว reconstruct กลับเป็นเสียง
- hertz-ar: ทำนาย latent ในอนาคตโดย condition จาก latent ในอดีต
- latent ของเสียงถูกมองเป็น pre-trained representation ที่มีข้อมูลสมบูรณ์และใช้กับ downstream task ได้หลายแบบ
-
hertz-codec
- hertz-codec เป็น convolutional audio VAE ที่รับเสียง mono 16kHz แล้ว encode เป็น latent representation 8Hz
- ใช้ bitrate 1kbps ที่ regularize ด้วย KL
- สำหรับ streaming inference ใช้ causal convolution และในเชิงฟังก์ชันจะเพิ่ม padding ทางซ้ายของ sequence
- codec ส่งออกพารามิเตอร์ Gaussian ของ mean และ variance แล้ว sample เป็น latent 32 มิติ ค่าเดียวในทุกเฟรม 125ms
- ในการประเมินเชิงอัตวิสัย hertz-codec ได้รับการประเมินว่าเหนือกว่า Soundstream และ Encodec ที่ 6kbps และอยู่ในระดับใกล้เคียงกับ DAC ที่ 8kbps
- มีจำนวน token ต่อวินาทีต่ำกว่า tokenizer ยอดนิยม จึงเอื้อต่อ language modeling
- องค์ประกอบพารามิเตอร์
- Encoder: 5M พารามิเตอร์
- Decoder: 95M พารามิเตอร์
- checkpoint ที่เปิดเผย
- inference_apatosaurus_95000.pt: weight ของ
hertz-codecที่ฝึกด้วย mixed reconstruction, adversarial loss และ KL regularization loss - inference_volcano_3.pt:
hertz-codec quantizerที่ distill บิตสำคัญทาง phonetics 15 บิตจากแต่ละ latent
- inference_apatosaurus_95000.pt: weight ของ
-
hertz-ar
- hertz-ar เป็น decoder-only transformer 40 เลเยอร์ 8.4B พารามิเตอร์
- context อินพุตมี 2048 token เทียบเท่าประมาณ 4.5 นาที
- latent เอาต์พุตสามารถส่งต่อไปยัง hertz-codec ได้
- 32 เลเยอร์แรกใช้ latent history เป็นอินพุต เพื่อทำนาย projection แบบ quantized 15 บิต ของ token latent เสียงถัดไป
- ส่วน 32 เลเยอร์นี้เรียกว่า
hertz-lmและสามารถฝึกแยกต่างหากหรือ initialize จาก weight ของ language model ได้ - 8 เลเยอร์สุดท้ายใช้ latent history และ latent quantized 15 บิต เพื่อทำนาย token latent เสียงในอนาคต
- เสียงแบบ duplex ถูกจัดการเป็นงานหลังการฝึก
- ต่อ projection head สองชุดเข้าด้วยกันแล้วแยกออก
- ประมวลผลด้วย quantized projection pipeline สองชุดที่ condition ด้วย residual ของแต่ละฝ่าย
- checkpoint ที่เปิดเผย
- inference_caraway_112000.pt: weight ของ
hertz-lmที่ initialize จาก language model ซึ่งฝึกด้วย token 2T - inference_syrup_110000.pt: weight ของ
hertz-lmที่ initialize แบบสุ่มแล้วฝึกจนเต็มด้วย latent ของเสียง - inference_whip_72000.pt: weight ของ
hertz-arสำหรับ 8 เลเยอร์สุดท้าย - inference_care_50000.pt, inference_scion_54000.pt: checkpoint แบบ duplex สำหรับ
hertz-ar
- inference_caraway_112000.pt: weight ของ
การสร้าง sample และตัวเลือกการฝึก
- มีการให้ sample การสร้างแบบช่องสัญญาณเดียว, การสร้างแบบสองช่องสัญญาณ และการสนทนา live ระหว่างมนุษย์กับโมเดล เพื่อแสดงความสามารถด้าน audio modeling ของโมเดล
- sample แบบ interactive มี prompt 9 วินาที รวมอยู่ด้วย
- ตัวเลือกการฝึกหลักมีดังนี้
- hertz-codec ใช้ Causal ConvNets เพื่อการ decode แบบขนานและการควบคุมการสร้าง latent ที่ละเอียดกว่า
- latent quantized 15 บิตถูกฝึกช่วงต้นให้มีข้อมูล phonetics เพื่อชักนำให้โมเดลสร้างถ้อยคำที่ถูกต้องทาง syntax
- การ quantize ทำโดยใส่ MLP projection เป็น Finite Scalar Quantization layer
- สำหรับ
hertz-lmมีการทำ ablation กับกลยุทธ์การ initialize สองแบบ และระบุว่าเรียนรู้ linguistics ได้อย่างมีประสิทธิภาพไม่ว่าจะ initialize จากโมเดลข้อความหรือไม่
วิธี inference แบบเรียลไทม์
- ระหว่าง live inference โมเดลจะทำ forward pass 8 ครั้งต่อวินาที และสร้างต่อเนื่องแบบ autoregressive
- อินพุตเป็นช่องสัญญาณแยกสองช่อง แต่ในการสนทนาจะส่งคืนเพียงช่องเดียว
- ในแต่ละ step จะ tokenize เสียงของมนุษย์เป็น latent แล้วรวมกับ latent ล่าสุดที่โมเดลสร้าง ก่อนป้อนเข้า
hertz-ar - latency วัดเป็นเวลาเฉลี่ยระหว่างคำพูดของผู้ใช้กับการตอบสนองของโมเดล
- ค่า latency เฉลี่ยเชิงคำนวณคือ 62.5ms โดยรวมเวลาเฉลี่ยระหว่างการพูดแบบสุ่มกับการจบหนึ่ง token, เวลา forward pass และ round-trip internet latency
- เมื่อรันบน RTX 4090 แบบ local latency เฉลี่ยจริงโดยทั่วไปคือ 120ms
- latency ต่ำเป็นเงื่อนไขสำหรับการสร้างโมเดลที่โต้ตอบเหมือนมนุษย์ ไม่ให้รู้สึกเหมือนการคุยโทรศัพท์ที่ดีเลย์และสะดุด
ลักษณะการเปิดเผยและตำแหน่งการใช้งาน
- hertz-dev ถูกแนะนำว่าเป็นโมเดลพื้นฐานแบบเปิดตัวแรกสำหรับเสียงแบบโต้ตอบ
- ในที่นี้ โมเดลพื้นฐานหมายถึงโมเดลที่ทำนาย distribution ของข้อมูลฝึกได้อย่างแม่นยำ ไม่ใช่โมเดลที่ถูกปรับด้วย reinforcement learning จน distribution การสร้างแคบลงมาก
- ด้วยลักษณะนี้ จึงเหมาะเป็นจุดเริ่มต้นสำหรับ fine-tuning ใน downstream task หลายแบบ
- ทรัพยากรที่เกี่ยวข้อง
1 ความคิดเห็น
ความเห็นจาก Hacker News
นี่เจ๋งมาก ข้อมูลประกอบคือพวก เอนจินสังเคราะห์เสียงแบบโอเพนซอร์ส ที่มีอยู่ก่อนหน้านี้ ถ้าเทียบกับสิ่งที่แสดงไว้ที่นี่ถือว่ายังห่างพอสมควร ตอนนี้แม้จะเป็นแบบเสียงต่อเสียง แต่ถ้าขยายเป็นมัลติโหมดที่รับข้อความได้ด้วย ก็น่าจะมีความต้องการสูงมาก
พูดอีกแบบคือมันจะกลายเป็นทั้งโมเดลเสียงต่อเสียงที่ยอดเยี่ยม และเป็น TTS ที่ดีมากไปด้วย อาจมีคนพยายามเลี่ยงด้วยการ fine-tune ให้เอาต์พุตแบบ Piper เล่นออกมาด้วยจังหวะและน้ำเสียงที่เป็นธรรมชาติมากขึ้น แต่ฟีเจอร์ที่ รับข้อความแบบเนทีฟ น่าจะมีประโยชน์มากกว่าการต่อท่อข้อความ LLM → Piper → Hertz-dev เยอะ
แต่ก็ไม่จำเป็นว่าทีมนี้ต้องเป็นคนทำเองโดยตรง
เขาบอกว่า Hertz เป็นตัวแรก แต่จริง ๆ แล้ว Moshi ที่ออกเมื่อต้นปีนี้ก็เป็นโมเดลเสียงสองทางที่ทำงานคล้ายกัน และรันบน MacBook ได้ด้วย: https://github.com/kyutai-labs/moshi
ส่วน Hertz เองก็เหมือนจะมีแค่โน้ตบุ๊กสำหรับ inference 3 อันกับโค้ดโมเดลที่เต็มไปด้วย
no_gradแต่ไม่มีโค้ดฝึก ไม่มี paper ด้วย เลยเข้าใจได้ยากว่าฝึกมายังไงและสถาปัตยกรรมเป็นแบบไหน ถ้าผมไม่ได้พลาดอะไรไปก็ยังเรียกว่าเป็นมิตรกับงานวิจัยได้ไม่เต็มปากmoshi https://github.com/kyutai-labs/moshi เป็นโมเดลแบบเสียง-ข้อความที่ใช้ Mimi ซึ่งเป็นสตรีมมิง neural audio codec รุ่นใหม่ ส่วน Mini-Omni https://github.com/gpt-omni/mini-omni เป็นมัลติโหมด LLM บนฐาน Qwen2 ที่รองรับอินพุตและเอาต์พุตเสียง และ Ichigo https://github.com/homebrewltd/ichigo เป็นโครงการวิจัยแบบเปิดที่ขยาย LLM แบบข้อความให้มีความสามารถในการฟังแบบเนทีฟด้วยเทคนิค early fusion
ที่ Tesla ตัด lidar กับเซนเซอร์อื่นออกไปก่อน แล้วโฟกัสกับ การขับขี่อัตโนมัติที่อิงภาพล้วน ก็ดูเหมือนเป็นกลยุทธ์เพื่อทำให้เทคโนโลยีเข้าถึงง่ายขึ้นและขยายได้ดีขึ้น
ถ้าโฟกัสกับโมเดล vision-only ก็อาจเปิดใช้งานได้เร็ว เก็บข้อมูลขนาดใหญ่ได้ และวนปรับปรุงได้ไวขึ้นด้วย ถ้าระบบที่อิงภาพพัฒนาจนสุกงอมพอแล้ว Tesla ก็อาจกลับมาผสานข้อมูลจากเซนเซอร์อย่าง lidar หรือเรดาร์อีกครั้ง เพื่อทำให้ชุดผลิตภัณฑ์ขับขี่อัตโนมัติแข็งแรงและสมบูรณ์ขึ้น
ผมเคยคิดคล้าย ๆ กันกับระบบโต้ตอบด้วยเสียง ตอนนี้ส่วนใหญ่จะเปลี่ยนเสียงเป็นข้อความ สร้างคำตอบเป็นข้อความ แล้วค่อยแปลงกลับเป็นเสียง แต่ถ้าฝึกให้ ตอบกลับเป็นเสียงได้โดยตรง โดยไม่ผ่านข้อความ ก็อาจให้คำตอบที่เป็นธรรมชาติและสดกว่าได้ เพราะคำพูดธรรมชาติมีทั้งโครงสร้างเฉพาะ จังหวะ ความต่างของสำเนียงและโทน ดังนั้นระบบที่เรียนจากเสียงล้วนก็น่าจะดูเป็นมนุษย์และน่าสนใจกว่า
ผมเลยสงสัยว่าโมเดลโต้ตอบด้วยเสียงในปัจจุบันยังทำตามกระบวนการมาตรฐานแบบเสียง→ข้อความ→เสียงอยู่ หรือกำลังสำรวจการประมวลผลแบบเสียงต่อเสียงกันแล้ว
เจ๋งมาก ตอนนี้ผมกำลังดูเรื่อง VUI (voice user interface) อยู่ น่าจะมีประโยชน์
ผมอาจมีอคติหน่อยเพราะเคยทำปริญญาเอกด้านการศึกษาว่า VUI ใช้วิธีโน้มน้าวคนอย่างไร แต่ผมคิดว่า VUI คืออนาคตของการปฏิสัมพันธ์กับคอมพิวเตอร์ อย่างน้อยถึงไม่ใช่อนาคตทั้งหมด มันก็อาจเปิดผู้ใช้กลุ่มใหม่อย่างเด็กและผู้สูงอายุได้
ถ้ามีคนเขียนโมเดลเสียงหรือทำงานแนวนี้อยู่ ผมสงสัยว่าพวกคุณเคยรู้สึกไหมว่าเสียงที่ออกมาจากระบบมันฟังดูน่าขนลุก หรือมี ผลกระทบทางสรีรวิทยา บางอย่าง
มันเป็น LLM ชนิดหนึ่งใช่ไหม โดย prompt ก็เป็นเสียง และผลลัพธ์ที่สร้างออกมาก็เป็นเสียง เป็น audio LLM ประมาณนั้นหรือเปล่า?
ผมสงสัยว่าไอเดียเรื่อง “การยุบตัวของการแจกแจงเชิงกำเนิด” เป็นหัวข้อที่มีการวิจัยกันหรือเปล่า ถ้ามีอยากรู้ว่ามันถูกเรียกว่าอะไร
ประเด็นที่ว่าโมเดลฐานเรียนรู้การแจกแจงของข้อมูลฝึกได้แม่นยำ ขณะที่โมเดลที่ผ่านการปรับด้วย reinforcement learning หนัก ๆ จะทำให้การแจกแจงของผลลัพธ์แคบลง เลยทำให้โมเดลฐานเป็นจุดเริ่มที่ดีกว่าสำหรับการ fine-tune ไปทำหลายงาน ฟังดูน่าสนใจมาก ดูจะเกี่ยวกับ continual learning และวิธี fine-tune ที่ถูกต้องด้วย
ถ้าอยาก pretrain hertz-dev base model เป็นภาษาอื่น ต้องทำอย่างไร? มีข้อมูลเกี่ยวกับเรื่องนี้ให้ดูจากที่ไหนบ้าง
เสียงฟังดูเพี้ยนเล็กน้อย และมี noise อยู่เบื้องหลังบ่อยมาก โดยเฉพาะตอนที่เสียงหยุดจะสังเกตได้ชัดว่า noise นี้หายไป
ผมสงสัยว่านี่เป็น ข้อจำกัดของโมเดล หรือเป็นปัญหาคุณภาพของข้อมูลฝึก
มีผู้เขียนคนไหนช่วยอธิบายได้ไหมว่าประโยคนี้ในบทความจริง ๆ หมายถึงอะไร
hertz-vae: ทรานส์ฟอร์มเมอร์ดีโคเดอร์ขนาด 1.8 พันล้านพารามิเตอร์ที่ทำหน้าที่เป็น prior ที่เรียนรู้แล้วของ audio VAE ใช้ latent representation ที่สุ่มมา 8192 ตัว หรือบริบทความยาว 17 นาที และทำนายเฟรมเสียงที่ถูกเข้ารหัสถัดไปด้วย Gaussian mixture โดยข้อมูล quantization 15 บิตของโทเค็นถัดไปทำหน้าที่เป็นฐานความหมายที่ช่วยชี้นำการสร้างแบบสตรีมได้codecดูเหมือนจะบีบอัดเสียง sample rate 16k ให้เหลือ 8 ตัวอย่างต่อวินาทีด้วย convolution แล้วทำ vector quantization เป็น 128 บิตเพื่อให้ได้ codecจำนวนบิตระดับนี้ไม่พอจะใช้แทนเสียงจริงได้เลย น่าจะตั้งใจใช้แทนสิ่งอย่างหน่วยเสียงมากกว่า
vaeดูเหมือนโมเดล diffusion ที่อิง VAE โดยใช้ codec เป็น prompt และdevก็ดูเหมือนเป็นโมเดลที่ทำนาย codec ถัดไปภาพรวมของกระบวนการน่าจะเป็นการ tokenize prompt ด้วย
codecแล้วถ้าต้องการเสียงเพิ่มอีก s วินาที ก็ใช้devทำนายโทเค็นเพิ่มอีก 8 * s ตัว จากนั้นใช้โมเดล diffusion ในvaeแปลงกลับเป็นเสียง