1 poin oleh GN⁺ 2024-09-20 | 1 komentar | Bagikan ke WhatsApp

Moshi: Model berbasis suara-teks untuk percakapan real-time

Pengenalan Moshi

  • Moshi adalah model berbasis suara-teks untuk percakapan real-time sekaligus kerangka kerja percakapan suara dua arah
  • Menggunakan Mimi, codec audio neural streaming mutakhir
  • Mimi mengubah audio 24 kHz menjadi 12.5 Hz, dan memprosesnya secara streaming dengan latensi 80 ms sambil mempertahankan bandwidth 1.1 kbps
  • Kinerjanya lebih baik daripada codec non-streaming yang sudah ada seperti SpeechTokenizer (50Hz, 4kbps) atau SemantiCodec (50Hz, 1.3kbps)

Cara kerja Moshi

  • Moshi memodelkan dua aliran audio: satu milik Moshi, satu lagi milik pengguna
  • Saat inferensi, aliran pengguna diambil dari input audio, dan aliran Moshi di-sampling dari output model
  • Bersama dua aliran audio ini, Moshi memprediksi token teks yang sesuai dengan suaranya sendiri
  • Depth Transformer kecil memodelkan dependensi antar-codebook pada langkah waktu tertentu, dan Temporal Transformer besar dengan 7B parameter memodelkan dependensi temporal
  • Secara teoretis Moshi mencapai latensi 160 ms, dan dalam praktiknya memiliki latensi di bawah 200 ms pada GPU L4

Karakteristik Mimi

  • Mimi dibangun di atas codec audio neural sebelumnya seperti SoundStream dan EnCodec, dengan menambahkan Transformer pada encoder dan decoder
  • Mimi menyesuaikan stride agar lebih mendekati rata-rata frame rate token teks (~3-4 Hz)
  • Mimi menggunakan loss distilasi yang menyelaraskan token codebook pertama dengan representasi self-supervised dari WavLM
  • Mimi hanya menggunakan adversarial training loss dan feature matching, namun tetap menunjukkan peningkatan besar pada kualitas subjektif di bitrate rendah

Struktur repositori

  • Repositori ini memiliki tiga versi stack inferensi Moshi
    • Versi Python yang menggunakan PyTorch ada di direktori moshi/
    • Versi Python yang menggunakan MLX untuk Mac seri M ada di direktori moshi_mlx/
    • Versi Rust yang digunakan di produksi ada di direktori rust/
  • Kode demo langsung disediakan di direktori client/

Model

  • Tiga model dirilis
    • Codec suara Mimi
    • Moshi yang di-fine-tune dengan suara sintetis pria (Moshiko)
    • Moshi yang di-fine-tune dengan suara sintetis wanita (Moshika)
  • Setiap model tersedia di repositori HuggingFace
  • Semua model dirilis dengan lisensi CC-BY 4.0

Persyaratan

  • Minimal memerlukan Python 3.10, dan Python 3.12 direkomendasikan
  • Untuk persyaratan spesifik, lihat masing-masing direktori backend
  • Disediakan perintah instalasi klien PyTorch dan MLX

Python (PyTorch)

  • API berbasis PyTorch ada di direktori moshi
  • Menyediakan tokenizer audio streaming (mimi) dan language model (moshi)
  • Untuk menjalankan dalam mode interaktif, server harus dijalankan terlebih dahulu

Python (MLX) untuk macOS

  • Setelah menginstal moshi_mlx, Anda dapat menjalankan inferensi lokal
  • Antarmuka baris perintah masih dasar dan tidak memiliki fitur echo cancellation

Rust

  • Untuk menjalankan server inferensi Rust, gunakan perintah di direktori rust
  • Di macOS, Anda dapat menggunakan --features metal alih-alih --features cuda

Klien

  • Disarankan menggunakan web UI, yang menyediakan fitur echo cancellation tambahan
  • Antarmuka baris perintah juga tersedia

Pengembangan

  • Anda dapat meng-clone repositori lalu menginstalnya untuk pengembangan

FAQ

  • Periksa bagian pertanyaan yang sering diajukan sebelum membuka issue

Lisensi

  • Bagian Python menggunakan lisensi MIT, backend Rust menggunakan lisensi Apache
  • Kode web client menggunakan lisensi MIT
  • Bobot model menggunakan lisensi CC-BY 4.0

Sitasi

  • Jika menggunakan Mimi atau Moshi, mohon sitasi makalahnya

Ringkasan GN⁺

  • Moshi adalah model suara-teks inovatif untuk percakapan real-time, dengan latensi rendah dan kualitas tinggi
  • Codec Mimi lebih efisien daripada codec sebelumnya, dan memaksimalkan performa lewat Transformer
  • Dapat digunakan di berbagai platform, dengan beberapa versi seperti PyTorch, MLX, dan Rust
  • Sangat berguna bagi pengembang aplikasi percakapan real-time, terutama saat latensi rendah menjadi hal penting
  • Proyek lain dengan fungsi serupa antara lain WaveNet dari Google dan Jukebox dari OpenAI

1 komentar

 
GN⁺ 2024-09-20
Komentar Hacker News
  • Komentar pertama

    • Latensinya sangat rendah, sebuah pencapaian besar untuk model open source
    • Kualitas respons kalah dibanding LLM yang sangat unggul belakangan ini
    • Mengingatkan pada LLM tahun 2019
    • Dari sisi audio hasilnya sudah cukup baik, tetapi perlu lebih fokus pada kualitas respons
  • Komentar kedua

    • Menemukan demo menarik dari beberapa bulan lalu di YouTube
    • Yakin sekarang sudah membaik
  • Komentar ketiga

    • Sedang mengembangkan solusi real-time suara -> LLM -> keluaran suara
    • Codec audio neural streaming adalah bagian yang paling menarik
    • Dari sudut pandang produk, diperlukan tahap pemanggilan tool/fungsi alih-alih langsung menyambungkannya ke LLM
    • Pengembangan tincans telah dihentikan, tetapi arah ini punya potensi besar untuk berkembang
  • Komentar keempat

    • Moshi menggunakan lisensi CC-BY
    • Ada model 7b serupa yang baru-baru ini dirilis dengan Apache v2
  • Komentar kelima

    • Bertanya-tanya apakah ada cara praktis untuk menyediakan antarmuka TTS di terminal a-shell pada iPad
  • Komentar keenam

    • Belakangan ini ada banyak kemajuan di bidang LM yang mendukung suara
    • Proyek terkait mencakup LLaMA-Omni dan mini-omni
  • Komentar ketujuh

    • Server inferensi ditulis dalam Rust dan menggunakan crate Candle dari huggingface
    • Salah satu penulis Moshi adalah penulis utama Candle
    • Sedang membangun stack inferensi berbasis Candle
  • Komentar kedelapan

    • Setelah dicoba, respons muncul seketika, tetapi jawaban untuk pertanyaan sebenarnya diberikan belakangan
    • Kadang bisa terjebak dalam loop
  • Komentar kesembilan

    • Latensinya sangat rendah, sekitar 200ms
    • Tidak terlalu pintar karena menggunakan model transformer 7B
    • Jika memakai model yang lebih besar, latensi bisa menjadi lebih lama
    • Pada arsitektur sistem, dibutuhkan cara untuk memberikan respons tahap menengah
  • Komentar kesepuluh

    • Kecepatan respons mengesankan, tetapi kualitas responsnya tidak demikian
    • Memberikan contoh percakapan dengan Moshi
    • Memberikan jawaban yang salah, yaitu "2019"
    • Memberikan informasi yang keliru tentang COVID-19