2 คะแนน โดย GN⁺ 2024-09-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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
  • หลังรันเดโม สามารถโต้ตอบกับ 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

โปรเจกต์พื้นฐานและการอ้างอิง

  • codebase อิงจาก LLaVA
  • โค้ดบางส่วนที่เกี่ยวกับตัวเข้ารหัสเสียงและตัวปรับเสียงยืมมาจาก SLAM-LLM
  • หากมีประโยชน์ต่องานวิจัย ควรอ้างอิงบทความ LLaMA-Omni: Seamless Speech Interaction with Large Language Models
  • สามารถสอบถามได้ผ่าน GitHub issue หรือ fangqingkai21b@ict.ac.cn

1 ความคิดเห็น

 
GN⁺ 2024-09-20
ความคิดเห็นบน Hacker News
  • โมเดลนี้ทำ เสียงที่ไม่สามารถถ่ายทอดเป็นข้อความได้ ด้วยไหม? เช่น คำขออย่าง “ลองทำเสียงไก่ให้ฟังหน่อย”

    • ถ้าสร้างเสียงที่เชื่อมโยงกับการเขียนคำที่ไม่ใช่คำพูดได้ ก็ดูไม่มีเหตุผลพิเศษอะไรที่จะทำ คำเลียนเสียงธรรมชาติ ไม่ได้
    • แล้วมัน เข้าใจ เสียงแบบนั้นได้ด้วยไหม? สงสัยว่ามันแยกได้ไหมว่าการออกเสียงคำหรือโทนเสียงถูกหรือผิด
    • แทบจะแน่นอนว่าไม่น่าจะได้ ฟังเหมือน vocoder รุ่นเก่า ที่ถูกทำมาให้สร้างเฉพาะเสียงพูดของคน
    • หมายถึงเสียงแบบ “กุ๊ก ๆ กะต๊าก” เหรอ?
      แต่จะทำได้ทั้งการพูดคำว่า “กุ๊ก ๆ กะต๊าก” และการทำเสียงกะต๊ากจริง ๆ ไหม?
  • ยังไม่ค่อยเข้าใจว่าโมเดลแบบนี้มีข้อดีหรือศักยภาพอะไรเหนือกว่าวิธีเอา การรู้จำเสียงพูด/การสังเคราะห์เสียงพูด ไปต่อกับโมเดลข้อความล้วน
    ถ้าโมเดลซับซ้อนขึ้น ประเด็นหลักคือการตีความหรือสร้างสิ่งอย่างโทนเสียง จังหวะ และอารมณ์ ที่หายไปในการสังเคราะห์เสียงพูดให้ถูกต้องหรือเปล่า?

    • ในการรู้จำเสียงพูด/การสังเคราะห์เสียงพูดมี การสูญเสียข้อมูล และการคาดเดาเยอะมาก
      โมเดลรู้จำเสียงพูดอาจฟังคำผิดได้ แต่ audio LLM อาจเข้าใจคำจริงได้เพราะมีบริบทกว้างกว่า โมเดลสังเคราะห์เสียงพูดต้องเดาโทนเสียง จึงอาจผิดไปเลยได้ แต่ audio LLM สามารถเรียนรู้ได้อย่างเป็นธรรมชาติว่าควรพูดด้วยน้ำเสียงแบบไหน เช่น ถ้าเป็นการพูดแทรก อาจใช้น้ำเสียงสูงขึ้น
      แค่เรื่องการพูดแทรกอย่างเดียว ระบบรู้จำ/สังเคราะห์เสียงพูดก็มักพึ่งพาการตรวจจับกิจกรรมเสียงพูดและ heuristic เพื่อตัดสินใจว่าจะพูดเมื่อไร จึงมักมีกฎว่าต้องพูดหลังผู้ใช้หยุดพูดแล้วเท่านั้น audio LLM อาจเรียนรู้บทสนทนาที่เป็นธรรมชาติ วิธีไม่ครองเวลาสนทนามากเกินไป และวิธีพูดร่วมกับหลายคนได้ด้วย
      audio LLM ยังอาจสร้างเพลงหรือเสียง หรือบอกได้ว่าเพลงที่ฮัมอยู่คือเพลงอะไร มีความเป็นไปได้ใหม่ ๆ มากมาย
      แต่ที่บอกว่า “อาจเรียนรู้ได้” ก็เพราะต้องมีข้อมูลฝึกที่ดี เท่าที่รู้ โมเดลส่วนใหญ่ตอนนี้นำชุดข้อมูลข้อความทั่วไปมาแปลงเป็นเสียงสังเคราะห์เพื่อฝึก จึงแทบไม่ได้ดีกว่าระบบรู้จำ/สังเคราะห์เสียงพูดทั่วไป เหมาะสำหรับพิสูจน์โครงสร้าง แต่ยังไม่แสดงศักยภาพทั้งหมด
    • ส่วนตัวตั้งตารอมากที่จะใช้โมเดลเสียงอย่าง advanced voice mode ของ OpenAI ในการเรียนภาษา
      แค่ความสามารถในการพูดเร็วหรือช้าก็เป็นสิ่งที่ระบบสังเคราะห์เสียงพูดแบบเดิมทำไม่ได้แล้ว ในทางทฤษฎี มันยังบอกได้ด้วยว่าการออกเสียงของฉันถูกต้องไหม และอาจแก้ให้โดยทวนสิ่งที่ฉันออกเสียงผิด แล้วให้ฟังการออกเสียงที่ถูกต้อง
      ยังไม่รู้ว่า advanced voice mode ของ OpenAI ทำสิ่งนี้ได้ดีแค่ไหน เพราะยังไม่เห็นการทดสอบจริงจัง แต่อยากลองใช้เอง ถ้าโมเดลเสียงอื่นไปถึงระดับนี้ได้ ก็น่าจะสุดยอดมากในฐานะ เครื่องมือเรียนภาษา
    • เรื่องนี้ถูกพูดถึงไปเยอะแล้ว เช่น ดู งานวิจัย -O ของ OpenAI ได้
      ปัจจัยใหญ่ข้อหนึ่งคือ latency ที่เกิดจาก batching ทำให้แทรกจังหวะของเอเจนต์อย่างเหมาะสมได้ยาก บทสนทนาจริงจึงยิ่งดูฝืน และใช่ multimodal เข้าใจได้ดีกว่า อย่างไรก็ตาม ยังไม่เคยเห็นการวิเคราะห์เรื่องการรับรู้อารมณ์ เลยสงสัยว่ามีใครเคยเห็นการวิเคราะห์ความสามารถนี้ของ GPT-O ไหม
    • โดยพื้นฐานแล้วมีการสูญเสียข้อมูลในการแปลง เสียง→ข้อความ บางครั้งก็ไม่สำคัญ แต่บางครั้งก็อาจยกระดับคุณภาพเอาต์พุตได้อย่างมีนัยสำคัญ
      นอกจากนี้ยังอาจมีข้อดีเสริมอื่น ๆ เช่น ลด latency ของคำตอบ ปรับปรุงการแยกผู้พูด และตอบสนองต่อการหยุดพูดกลางบทสนทนาได้ดีขึ้น
    • ถ้าเขียนไว้แค่ “Really” ก็ไม่มีใครรู้โทนเสียง
      ต่อให้เขียนว่า “Really?” หรือ “Really!” ก็ยังมีช่องให้ตีความอยู่ดี ถ้าอินเทอร์เฟซเสียงจะประสบความสำเร็จจริง ๆ ต้องมีจังหวะเหมือนยุคก่อน Google ที่การค้นหาแย่มากแล้วเปลี่ยนมาเป็น Google และถ้าแกนหลักของมันคือการตีความและสร้างโทนเสียง·จังหวะ·อารมณ์ การสร้างโมเดลแบบนี้ก็ค่อนข้างสมเหตุสมผล
  • มี เครื่องมือรันโมเดล อย่าง Ollama, LM Studio, llama.cpp ตัวไหนรองรับสิ่งนี้ไหม?

  • งั้นมันไม่ใช่โครงสร้างแบบ การรู้จำเสียงพูด → LLM → การสังเคราะห์เสียงพูด ใช่ไหม? ถ้าตะโกนเสียง Chewbacca เป็นอินพุต โมเดลจะรับรู้ว่าเป็นอินพุตไร้สาระ หรือจะตีความเป็นคำมั่ว ๆ เหมือนระบบรู้จำเสียงพูดห่วย ๆ?

    • ในเชิงโครงสร้างไม่ใช่แบบนั้น แต่ก็น่าจะมีโอกาสสูงที่มันจะรับรู้ว่าเป็นอินพุตไร้สาระไม่ได้ ตามงานวิจัยระบุว่า

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      มันฝึกจากคำถามที่ถูกอ่านด้วยเสียงสังเคราะห์เท่านั้น และไม่เคยเห็นหรือได้ยินเสียงไร้สาระเลย อาจมีโอกาสสูงที่จะ hallucinate ว่าคุณถามอะไรสักอย่างแล้วสร้างคำตอบ แทนที่จะถามว่า “คุณโอเคไหม?” ชุดข้อมูลเสียงของเสียงคนจริง ๆ มีไม่มาก และก็ไม่มี StackOverflow เวอร์ชันเสียงให้ไปกวาดข้อมูลได้

    • เมื่อก่อนเคยเล่นอะไรแบบนั้นอยู่ ตั้งค่า Google Translate เป็นภาษาที่ไม่รู้จักอย่างภาษาจีน แล้วส่งเสียงมั่ว ๆ ก็จะได้ประโยคภาษาอังกฤษที่สอดคล้องกันแต่บ้าบอมาก
      รู้สึกว่าภาษาวรรณยุกต์จะได้ผลเป็นพิเศษ
  • เสียงสังเคราะห์ ในคลิปเดโมฟังดูคล้าย Ellen McLain ซึ่งเป็นนักพากย์ของ Valve อย่างน่าประหลาดใจ
    https://en.m.wikipedia.org/wiki/Ellen_McLain

    • ฟังเหมือนฝึกด้วย ชุดข้อมูล LJ Speech เป็นหนึ่งในชุดข้อมูลที่ดีที่สุดและใช้กันทั่วไปมาก
  • ความเร็วดูค่อนข้างดี ช่วงหลังได้ลอง แชตเสียงแบบโลคัล ด้วย LMStudio + AnythingLLM แต่ยังช้ากว่าที่ต้องการเล็กน้อย และเสียงของ PiperTTS ก็ดีกว่านี้

  • ถือว่าไม่แย่สำหรับ การฝึก 3 วัน คุณภาพเสียงเอาต์พุตยังต้องปรับอีก แต่ก็น่าสนใจว่าถ้าฝึกเพิ่มจะเปลี่ยนไปอย่างไร

  • อยากให้มีโค้ดสำหรับฝึกหรือ fine-tuning สำหรับการใช้งานเชิงพาณิชย์ การ fine-tune เสียง ดูเหมือนเป็นข้อกำหนดสำคัญ

  • มีแค่ฉันไหมที่ถ้าใน README ของ GitHub repo มี กราฟแนวโน้มดาว โง่ ๆ นั่นแล้วความน่าเชื่อถือจะลดลงมาก?

    • อันนั้นก็แปลกไปหน่อย คนเราภูมิใจกับงานของตัวเองได้
  • มี เดโม ที่แสดงประสิทธิภาพไหม?