2 poin oleh GN⁺ 2024-09-20 | 1 komentar | Bagikan ke WhatsApp
  • LLaMA-Omni adalah model suara-bahasa berbasis Llama-3.1-8B-Instruct yang menerima instruksi suara sebagai input dan menghasilkan respons teks serta suara secara bersamaan
  • Tujuan utamanya adalah interaksi suara berlatensi rendah dan berkualitas tinggi; menurut README, latensi dapat turun hingga serendah 226 ms
  • Model ini dilatih dalam kurang dari 3 hari hanya dengan 4 GPU, dan dijalankan menggunakan Llama-3.1-8B-Omni, Whisper-large-v3, serta HiFi-GAN vocoder berbasis unit
  • Demo Gradio memiliki struktur yang menjalankan controller, web server, dan model worker secara terpisah; karena pemutaran audio streaming di Gradio tidak stabil, pemutaran otomatis tidak diaktifkan
  • Kodenya berlisensi Apache-2.0, tetapi modelnya khusus untuk tujuan riset akademik; penggunaan komersial dilarang dan perlu menghubungi pihak terkait untuk lisensi komersial terpisah

Apa yang dilakukan LLaMA-Omni

  • LLaMA-Omni adalah model suara-bahasa berbasis Llama-3.1-8B-Instruct
  • Menerima instruksi suara sebagai input dan menghasilkan respons teks serta respons suara secara bersamaan
  • Menargetkan interaksi suara berlatensi rendah dan respons berkualitas tinggi; berdasarkan sorotan di README, latensinya serendah 226 ms
  • Makalah terkait tersedia di arXiv:2409.06666

Model dan dataset yang dirilis

Pembaruan terbaru

  • Pada Mei 2025, LLaMA-Omni 2 diterima di konferensi utama ACL 2025
  • Pada April 2025, LLaMA-Omni2 dirilis
    • Ini adalah seri model bahasa suara dengan parameter dari 0,5B hingga 32B
    • Meningkatkan kualitas respons dan kualitas generasi suara
  • Pada Januari 2025, LLaMA-Omni diterima di ICLR 2025

Alur instalasi dan eksekusi

  • Instalasi dilakukan dengan mengkloning repositori lalu memasang paket di lingkungan conda Python 3.10
    • Setelah memasang pip==24.0, jalankan pip install -e .
  • Dependensi tambahan fairseq dan flash-attn harus dipasang
  • Quick start membutuhkan tiga komponen persiapan
    • Unduh model Llama-3.1-8B-Omni
    • Unduh model Whisper-large-v3
    • Unduh HiFi-GAN vocoder berbasis unit dan config.json

Demo Gradio dan inferensi lokal

  • Demo Gradio terdiri dari tiga proses
    • controller: omni_speech.serve.controller
    • Gradio web server: omni_speech.serve.gradio_web_server
    • model worker: omni_speech.serve.model_worker
  • Setelah demo dijalankan, Anda dapat berinteraksi dengan LLaMA-3.1-8B-Omni di localhost:8000
  • Karena pemutaran audio streaming di Gradio tidak stabil, hanya sintesis audio streaming yang diimplementasikan, dan pemutaran otomatis tidak diaktifkan
  • Inferensi lokal dijalankan dengan menyusun file instruksi suara sesuai format omni_speech/infer/examples, lalu menjalankan bash omni_speech/infer/run.sh omni_speech/infer/examples

Lisensi dan batasan penggunaan

  • Kode dirilis dengan Apache-2.0 License
  • Model hanya dapat digunakan untuk tujuan riset akademik, dan penggunaan komersial dilarang
  • Dalam lingkungan akademik, penggunaan, modifikasi, dan distribusi diperbolehkan, tetapi makalah asli harus dikutip
  • Untuk pertanyaan penggunaan komersial atau memperoleh lisensi komersial, hubungi fengyang@ict.ac.cn

Proyek dasar dan sitasi

  • Codebase didasarkan pada LLaVA
  • Sebagian kode terkait encoder suara dan adapter suara dipinjam dari SLAM-LLM
  • Jika bermanfaat untuk riset, makalah LLaMA-Omni: Seamless Speech Interaction with Large Language Models harus dikutip
  • Pertanyaan dapat diajukan melalui GitHub issue atau ke fangqingkai21b@ict.ac.cn

1 komentar

 
GN⁺ 2024-09-20
Pendapat di Hacker News
  • Apakah model ini juga bisa mengeluarkan suara yang tidak bisa direpresentasikan sebagai teks? Misalnya permintaan seperti “coba tirukan suara ayam”

    • Kalau bisa membuat suara yang dikaitkan dengan notasi kata non-ucapan, sepertinya tidak ada alasan khusus mengapa onomatope akan terhalang
    • Apakah model ini juga bisa memahami suara seperti itu? Saya penasaran apakah ia bisa membedakan pelafalan kata atau intonasi yang benar dan salah
    • Hampir pasti tidak. Terdengar seperti vocoder lama yang dibuat hanya untuk menghasilkan ucapan manusia
    • Maksudnya suara seperti “kukuruyuk”?
      Tapi apakah ia bisa melakukan keduanya: mengucapkan kata “kukuruyuk” dan benar-benar membuat suara berkokok/berketuk?
  • Saya belum begitu paham apa keunggulan atau potensi model seperti ini dibanding pendekatan yang menambahkan speech recognition/speech synthesis ke model teks murni
    Jika modelnya makin canggih, apakah poin utamanya adalah mampu menafsirkan atau menghasilkan hal-hal seperti intonasi, ritme, dan emosi yang hilang dalam sintesis suara?

    • Dalam speech recognition/speech synthesis ada banyak kehilangan informasi dan tebakan
      Model speech recognition bisa salah mengenali kata, tetapi audio LLM mungkin bisa memahami kata sebenarnya berkat konteks yang luas. Model speech synthesis harus menebak intonasi sehingga bisa benar-benar keliru, tetapi audio LLM dapat belajar secara alami nada seperti apa yang harus digunakan. Misalnya jika itu berupa interupsi, ia bisa memakai nada yang lebih tinggi
      Untuk interupsi saja, sistem speech recognition/synthesis biasanya bergantung pada voice activity detection dan heuristik untuk memutuskan kapan berbicara, sehingga banyak aturannya baru berbicara setelah pengguna berhenti bicara. Audio LLM bisa belajar percakapan alami, cara tidak mengambil terlalu banyak jatah waktu bicara, dan cara berbicara bersama beberapa orang
      Audio LLM juga bisa membuat musik atau suara, atau memberi tahu lagu apa yang sedang disenandungkan. Ada banyak kemungkinan baru
      Namun alasan saya mengatakan “bisa belajar” adalah karena dibutuhkan data pelatihan yang baik. Sejauh yang saya tahu, sebagian besar model seperti ini saat ini dilatih dengan mengubah dataset teks umum menjadi speech synthesis, jadi pada dasarnya tidak lebih baik dari sistem speech recognition/synthesis biasa. Itu bagus untuk membuktikan arsitekturnya, tetapi tidak menunjukkan seluruh kemampuannya
    • Secara pribadi, saya sangat menantikan penggunaan model suara seperti advanced voice mode OpenAI untuk belajar bahasa
      Kemampuan berbicara cepat atau lambat saja sudah merupakan hal yang tidak bisa dilakukan sistem speech synthesis tradisional. Secara teori, ia juga bisa memberi tahu apakah pelafalan saya tepat, mengulang pelafalan saya yang salah, lalu memperdengarkan pelafalan yang benar untuk mengoreksinya
      Saya belum melihat pengujian yang benar-benar memadai tentang seberapa baik advanced voice mode OpenAI melakukan hal ini, jadi belum tahu, tetapi saya ingin mencobanya sendiri. Kalau model suara lain juga mencapai level ini, sepertinya akan luar biasa sebagai alat belajar bahasa
    • Topik ini sudah banyak dibahas; misalnya lihat makalah -O dari OpenAI
      Salah satu faktor besarnya adalah latensi yang muncul karena batching. Sulit untuk memotong agen dengan benar, sehingga percakapan nyata jadi terasa lebih canggung. Dan benar, multimodal lebih memahami. Namun saya belum pernah melihat analisis tentang pengenalan emosi; saya penasaran apakah ada yang pernah melihat analisis tentang kemampuan GPT-O ini
    • Pada dasarnya ada kehilangan informasi dalam konversi audio→teks. Kadang itu tidak penting, tetapi kadang bisa meningkatkan kualitas keluaran secara bermakna
      Selain itu, mungkin ada keunggulan sampingan seperti latensi jawaban yang lebih baik, diarization pembicara yang lebih baik, dan respons yang lebih baik terhadap jeda dalam percakapan
    • Kalau hanya menulis “Really”, tidak ada yang tahu intonasinya
      Bahkan kalau ditulis “Really?” atau “Really!”, masih ada ruang interpretasi. Agar antarmuka suara benar-benar berhasil, diperlukan momen seperti ketika pencarian sebelum Google yang kacau berubah dengan hadirnya Google; jika inti momen itu adalah menafsirkan dan menghasilkan intonasi, ritme, dan emosi, maka membuat model seperti ini cukup masuk akal
  • Apakah ada alat menjalankan model seperti Ollama, LM Studio, atau llama.cpp yang mendukung ini?

  • Jadi ini bukan arsitektur speech recognition → LLM → speech synthesis? Kalau saya berteriak dengan suara Chewbacca sebagai input, apakah model akan mengenalinya sebagai input yang tidak masuk akal, atau akan menafsirkannya sebagai kata-kata sembarang seperti speech recognition yang buruk?

    • Secara arsitektur memang bukan begitu, tetapi kemungkinan besar ia tidak akan bisa mengenalinya sebagai input yang tidak masuk akal. Menurut makalahnya

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      Model ini hanya dilatih dengan pertanyaan yang dibacakan lewat speech synthesis, dan belum pernah melihat ataupun mendengar suara yang tidak masuk akal. Kemungkinan besar, alih-alih bertanya “Anda baik-baik saja?”, ia akan berhalusinasi bahwa kamu mengajukan suatu pertanyaan lalu membuat jawabannya. Tidak banyak dataset audio suara asli, dan tidak ada versi audio StackOverflow yang bisa di-scrape

    • Dulu saya sering bermain-main dengan hal semacam itu. Saya mengatur Google Translate ke bahasa yang tidak saya ketahui seperti bahasa Mandarin, lalu membuat suara asal-asalan, dan keluarlah kalimat bahasa Inggris yang konsisten tetapi benar-benar gila
      Rasanya ini bekerja lebih baik terutama pada bahasa tonal
  • Suara speech synthesis di klip demo terdengar sangat mirip dengan Ellen McLain, yaitu pengisi suara Valve
    https://en.m.wikipedia.org/wiki/Ellen_McLain

    • Terdengar seperti dilatih dengan dataset LJ Speech. Itu salah satu dataset terbaik dan sangat umum digunakan
  • Kecepatannya terlihat cukup bagus. Baru-baru ini saya mencoba chat suara lokal dengan LMStudio + AnythingLLM, tetapi masih sedikit lebih lambat dari yang saya inginkan, dan suara PiperTTS lebih baik daripada ini

  • Tidak buruk untuk pelatihan 3 hari. Kualitas output suara masih perlu dipoles lagi, tetapi menarik melihat apa yang akan berubah jika pelatihannya ditambah

  • Saya berharap ada kode pelatihan atau fine-tuning. Untuk penggunaan komersial, fine-tuning suara tampaknya menjadi kebutuhan utama

  • Apakah hanya saya yang merasa kepercayaan jadi jauh berkurang kalau README repositori GitHub mencantumkan grafik tren bintang yang bodoh itu?

    • Itu agak aneh. Orang boleh saja bangga dengan karya mereka
  • Apakah ada demo yang menunjukkan performanya?