LLaMA-Omni - การโต้ตอบด้วยเสียงกับ LLM อย่างราบรื่น
(github.com/ictnlp)- LLaMA-Omni เป็นโมเดลเสียง-ภาษาที่อิงกับ Llama-3.1-8B-Instruct ที่รับคำสั่งเสียงเป็นอินพุต แล้วสร้างคำตอบทั้งข้อความและเสียงพร้อมกัน
- เป้าหมายหลักคือ การโต้ตอบด้วยเสียงที่หน่วงต่ำและคุณภาพสูง โดยตาม README เวลาแฝงอาจต่ำได้ถึง 226ms
- โมเดลถูกฝึกด้วย GPU เพียง 4 ตัวในเวลาน้อยกว่า 3 วัน และรันโดยใช้
Llama-3.1-8B-Omni,Whisper-large-v3และ unit-based HiFi-GAN vocoder - เดโม Gradio มีโครงสร้างที่รัน controller, web server และ model worker แยกกัน และเนื่องจากการเล่นเสียงแบบสตรีมมิงของ Gradio ยังไม่เสถียร จึง ไม่ได้เปิดใช้งานการเล่นอัตโนมัติ
- โค้ดเป็น Apache-2.0 แต่โมเดลมีไว้ เพื่อวัตถุประสงค์ด้านการวิจัยเชิงวิชาการเท่านั้น ห้ามใช้เชิงพาณิชย์ และต้องติดต่อสอบถามใบอนุญาตเชิงพาณิชย์แยกต่างหาก
LLaMA-Omni ทำอะไร
- LLaMA-Omni เป็นโมเดลเสียง-ภาษาที่อิงกับ Llama-3.1-8B-Instruct
- รับคำสั่งเสียงเป็นอินพุตและ สร้างคำตอบทั้งข้อความและเสียงพร้อมกัน
- มีเป้าหมายเพื่อการโต้ตอบด้วยเสียงที่หน่วงต่ำและคำตอบคุณภาพสูง โดยตามไฮไลต์ใน README เวลาแฝงอยู่ที่ ต่ำสุด 226ms
- บทความวิจัยที่เกี่ยวข้องเผยแพร่ไว้ที่ arXiv:2409.06666
โมเดลและชุดข้อมูลที่เผยแพร่
- โมเดลเผยแพร่บน Hugging Face, ModelScope, Wisemodel และ Replicate
- ชุดข้อมูลเผยแพร่ในชื่อ Multiturn-Speech-Conversations
- ในอัปเดตเดือนพฤษภาคม 2025 ได้เผยแพร่
InstructS2S-200Kที่ปรับปรุงแล้ว โดยขยายเป็น บทสนทนาหลายรอบ และเพิ่มความหลากหลายของโทนเสียงอินพุต
อัปเดตล่าสุด
- เดือนพฤษภาคม 2025, LLaMA-Omni 2 ได้รับการตอบรับใน ACL 2025 Main Conference
- เดือนเมษายน 2025, LLaMA-Omni2 ถูกเผยแพร่
- เป็นซีรีส์โมเดลภาษาเสียงตั้งแต่ 0.5B ถึง 32B พารามิเตอร์
- ปรับปรุงคุณภาพคำตอบและคุณภาพการสร้างเสียง
- เดือนมกราคม 2025, LLaMA-Omni ได้รับการตอบรับใน ICLR 2025
การติดตั้งและลำดับการรัน
- การติดตั้งทำโดยโคลน repository แล้วติดตั้งแพ็กเกจในสภาพแวดล้อม conda ของ Python 3.10
- หลังติดตั้ง
pip==24.0ให้รันpip install -e .
- หลังติดตั้ง
- ต้องติดตั้ง dependency เพิ่มเติมคือ fairseq และ flash-attn
- การเริ่มต้นอย่างรวดเร็วต้องเตรียม 3 อย่าง
- ดาวน์โหลดโมเดล
Llama-3.1-8B-Omni - ดาวน์โหลดโมเดล
Whisper-large-v3 - ดาวน์โหลด unit-based HiFi-GAN vocoder และ
config.json
- ดาวน์โหลดโมเดล
เดโม Gradio และการอนุมานในเครื่อง
- เดโม Gradio ประกอบด้วย 3 โปรเซส
- controller:
omni_speech.serve.controller - Gradio web server:
omni_speech.serve.gradio_web_server - model worker:
omni_speech.serve.model_worker
- controller:
- หลังรันเดโม สามารถโต้ตอบกับ
LLaMA-3.1-8B-Omniได้ที่localhost:8000 - เนื่องจากการเล่นเสียงแบบสตรีมมิงของ Gradio ไม่เสถียร จึง มีการใช้งานเฉพาะการสังเคราะห์เสียงแบบสตรีมมิง และไม่ได้เปิดใช้งานการเล่นอัตโนมัติ
- การอนุมานในเครื่องทำโดยจัดไฟล์คำสั่งเสียงให้ตรงกับรูปแบบ
omni_speech/infer/examplesแล้วรันด้วยbash omni_speech/infer/run.sh omni_speech/infer/examples
ใบอนุญาตและข้อจำกัดการใช้งาน
- โค้ดเผยแพร่ภายใต้ Apache-2.0 License
- โมเดลสามารถใช้ได้เฉพาะเพื่อวัตถุประสงค์ด้านการวิจัยเชิงวิชาการ และ ห้ามใช้เชิงพาณิชย์
- ในสภาพแวดล้อมทางวิชาการ สามารถใช้งาน แก้ไข และเผยแพร่ได้ แต่ต้องอ้างอิงบทความต้นฉบับ
- สำหรับการสอบถามการใช้งานเชิงพาณิชย์หรือการขอรับใบอนุญาตเชิงพาณิชย์ ให้ติดต่อ
fengyang@ict.ac.cn
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
โมเดลนี้ทำ เสียงที่ไม่สามารถถ่ายทอดเป็นข้อความได้ ด้วยไหม? เช่น คำขออย่าง “ลองทำเสียงไก่ให้ฟังหน่อย”
แต่จะทำได้ทั้งการพูดคำว่า “กุ๊ก ๆ กะต๊าก” และการทำเสียงกะต๊ากจริง ๆ ไหม?
ยังไม่ค่อยเข้าใจว่าโมเดลแบบนี้มีข้อดีหรือศักยภาพอะไรเหนือกว่าวิธีเอา การรู้จำเสียงพูด/การสังเคราะห์เสียงพูด ไปต่อกับโมเดลข้อความล้วน
ถ้าโมเดลซับซ้อนขึ้น ประเด็นหลักคือการตีความหรือสร้างสิ่งอย่างโทนเสียง จังหวะ และอารมณ์ ที่หายไปในการสังเคราะห์เสียงพูดให้ถูกต้องหรือเปล่า?
โมเดลรู้จำเสียงพูดอาจฟังคำผิดได้ แต่ audio LLM อาจเข้าใจคำจริงได้เพราะมีบริบทกว้างกว่า โมเดลสังเคราะห์เสียงพูดต้องเดาโทนเสียง จึงอาจผิดไปเลยได้ แต่ audio LLM สามารถเรียนรู้ได้อย่างเป็นธรรมชาติว่าควรพูดด้วยน้ำเสียงแบบไหน เช่น ถ้าเป็นการพูดแทรก อาจใช้น้ำเสียงสูงขึ้น
แค่เรื่องการพูดแทรกอย่างเดียว ระบบรู้จำ/สังเคราะห์เสียงพูดก็มักพึ่งพาการตรวจจับกิจกรรมเสียงพูดและ heuristic เพื่อตัดสินใจว่าจะพูดเมื่อไร จึงมักมีกฎว่าต้องพูดหลังผู้ใช้หยุดพูดแล้วเท่านั้น audio LLM อาจเรียนรู้บทสนทนาที่เป็นธรรมชาติ วิธีไม่ครองเวลาสนทนามากเกินไป และวิธีพูดร่วมกับหลายคนได้ด้วย
audio LLM ยังอาจสร้างเพลงหรือเสียง หรือบอกได้ว่าเพลงที่ฮัมอยู่คือเพลงอะไร มีความเป็นไปได้ใหม่ ๆ มากมาย
แต่ที่บอกว่า “อาจเรียนรู้ได้” ก็เพราะต้องมีข้อมูลฝึกที่ดี เท่าที่รู้ โมเดลส่วนใหญ่ตอนนี้นำชุดข้อมูลข้อความทั่วไปมาแปลงเป็นเสียงสังเคราะห์เพื่อฝึก จึงแทบไม่ได้ดีกว่าระบบรู้จำ/สังเคราะห์เสียงพูดทั่วไป เหมาะสำหรับพิสูจน์โครงสร้าง แต่ยังไม่แสดงศักยภาพทั้งหมด
แค่ความสามารถในการพูดเร็วหรือช้าก็เป็นสิ่งที่ระบบสังเคราะห์เสียงพูดแบบเดิมทำไม่ได้แล้ว ในทางทฤษฎี มันยังบอกได้ด้วยว่าการออกเสียงของฉันถูกต้องไหม และอาจแก้ให้โดยทวนสิ่งที่ฉันออกเสียงผิด แล้วให้ฟังการออกเสียงที่ถูกต้อง
ยังไม่รู้ว่า advanced voice mode ของ OpenAI ทำสิ่งนี้ได้ดีแค่ไหน เพราะยังไม่เห็นการทดสอบจริงจัง แต่อยากลองใช้เอง ถ้าโมเดลเสียงอื่นไปถึงระดับนี้ได้ ก็น่าจะสุดยอดมากในฐานะ เครื่องมือเรียนภาษา
ปัจจัยใหญ่ข้อหนึ่งคือ latency ที่เกิดจาก batching ทำให้แทรกจังหวะของเอเจนต์อย่างเหมาะสมได้ยาก บทสนทนาจริงจึงยิ่งดูฝืน และใช่ multimodal เข้าใจได้ดีกว่า อย่างไรก็ตาม ยังไม่เคยเห็นการวิเคราะห์เรื่องการรับรู้อารมณ์ เลยสงสัยว่ามีใครเคยเห็นการวิเคราะห์ความสามารถนี้ของ GPT-O ไหม
นอกจากนี้ยังอาจมีข้อดีเสริมอื่น ๆ เช่น ลด latency ของคำตอบ ปรับปรุงการแยกผู้พูด และตอบสนองต่อการหยุดพูดกลางบทสนทนาได้ดีขึ้น
ต่อให้เขียนว่า “Really?” หรือ “Really!” ก็ยังมีช่องให้ตีความอยู่ดี ถ้าอินเทอร์เฟซเสียงจะประสบความสำเร็จจริง ๆ ต้องมีจังหวะเหมือนยุคก่อน Google ที่การค้นหาแย่มากแล้วเปลี่ยนมาเป็น Google และถ้าแกนหลักของมันคือการตีความและสร้างโทนเสียง·จังหวะ·อารมณ์ การสร้างโมเดลแบบนี้ก็ค่อนข้างสมเหตุสมผล
มี เครื่องมือรันโมเดล อย่าง Ollama, LM Studio, llama.cpp ตัวไหนรองรับสิ่งนี้ไหม?
งั้นมันไม่ใช่โครงสร้างแบบ การรู้จำเสียงพูด → LLM → การสังเคราะห์เสียงพูด ใช่ไหม? ถ้าตะโกนเสียง Chewbacca เป็นอินพุต โมเดลจะรับรู้ว่าเป็นอินพุตไร้สาระ หรือจะตีความเป็นคำมั่ว ๆ เหมือนระบบรู้จำเสียงพูดห่วย ๆ?
รู้สึกว่าภาษาวรรณยุกต์จะได้ผลเป็นพิเศษ
เสียงสังเคราะห์ ในคลิปเดโมฟังดูคล้าย Ellen McLain ซึ่งเป็นนักพากย์ของ Valve อย่างน่าประหลาดใจ
https://en.m.wikipedia.org/wiki/Ellen_McLain
ความเร็วดูค่อนข้างดี ช่วงหลังได้ลอง แชตเสียงแบบโลคัล ด้วย LMStudio + AnythingLLM แต่ยังช้ากว่าที่ต้องการเล็กน้อย และเสียงของ PiperTTS ก็ดีกว่านี้
ถือว่าไม่แย่สำหรับ การฝึก 3 วัน คุณภาพเสียงเอาต์พุตยังต้องปรับอีก แต่ก็น่าสนใจว่าถ้าฝึกเพิ่มจะเปลี่ยนไปอย่างไร
อยากให้มีโค้ดสำหรับฝึกหรือ fine-tuning สำหรับการใช้งานเชิงพาณิชย์ การ fine-tune เสียง ดูเหมือนเป็นข้อกำหนดสำคัญ
มีแค่ฉันไหมที่ถ้าใน README ของ GitHub repo มี กราฟแนวโน้มดาว โง่ ๆ นั่นแล้วความน่าเชื่อถือจะลดลงมาก?
มี เดโม ที่แสดงประสิทธิภาพไหม?