[Baca koran] [Demo] [Memeluk Wajah]
Moshi adalah model dasar teks pidato dan kerangka dialog lisan dupleks penuh . Ia menggunakan Mimi, codec audio saraf streaming yang canggih. Mimi memproses audio 24 kHz, hingga representasi 12,5 Hz dengan bandwidth 1,1 kbps, dengan cara streaming penuh (latensi 80 md, ukuran bingkai), namun berkinerja lebih baik daripada codec non-streaming yang ada seperti SpeechTokenizer (50 Hz) , 4kbps), atau SemantiCodec (50 Hz, 1,3kbps).
Moshi memodelkan dua aliran audio : satu berhubungan dengan Moshi, dan satu lagi berhubungan dengan pengguna. Sebagai kesimpulan, aliran dari pengguna diambil dari masukan audio, dan aliran untuk Moshi diambil sampelnya dari keluaran model. Di sepanjang dua aliran audio ini, Moshi memprediksi token teks yang sesuai dengan ucapannya sendiri, monolog batinnya , yang sangat meningkatkan kualitas pembuatannya. Transformator Kedalaman kecil memodelkan ketergantungan antar buku kode untuk langkah waktu tertentu, sedangkan Transformator Temporal parameter 7B yang besar memodelkan ketergantungan temporal. Moshi mencapai latensi teoretis 160 md (80 md untuk ukuran bingkai Mimi + penundaan akustik 80 md), dengan latensi keseluruhan praktis serendah 200 md pada GPU L4.
Bicaralah dengan Moshi sekarang di demo langsung kami.
Mimi membangun codec audio neural sebelumnya seperti SoundStream dan EnCodec, menambahkan Transformer di encoder dan decoder, dan mengadaptasi langkahnya agar sesuai dengan kecepatan frame keseluruhan 12,5 Hz. Hal ini memungkinkan Mimi untuk mendekati kecepatan bingkai rata-rata token teks (~3-4 Hz), dan membatasi jumlah langkah autoregresif di Moshi. Mirip dengan SpeechTokenizer, Mimi menggunakan kerugian distilasi sehingga token buku kode pertama cocok dengan representasi yang diawasi sendiri dari WavLM, yang memungkinkan pemodelan informasi semantik dan akustik dengan satu model. Menariknya, meskipun Mimi sepenuhnya bersifat kausal dan streaming, Mimi belajar mencocokkan representasi non-kausal dari WavLM dengan cukup baik, tanpa menimbulkan penundaan apa pun. Terakhir, dan mirip dengan EBEN, Mimi hanya menggunakan adversarial training loss , bersama dengan pencocokan fitur, menunjukkan peningkatan yang kuat dalam hal kualitas subjektif meskipun bitrate-nya rendah.
Ada tiga versi terpisah dari tumpukan inferensi moshi di repo ini.
Versi Python menggunakan PyTorch ada di direktori moshi/
.
Versi Python yang menggunakan MLX untuk Mac seri M ada di direktori moshi_mlx/
.
Versi Rust yang digunakan dalam produksi ada di direktori rust/
. Ini khususnya berisi implementasi Mimi di Rust, dengan binding Python tersedia sebagai rustymimi
.
Terakhir, kode untuk demo langsung disediakan di direktori client/
.
Kami merilis tiga model:
codec ucapan kami Mimi,
Moshi menyempurnakan suara sintetis pria (Moshiko),
Moshi menyempurnakan suara sintetis wanita (Moshika).
Tergantung pada backend, format file dan kuantisasi yang tersedia akan bervariasi. Berikut adalah daftar repo HuggingFace dengan masing-masing model. Mimi dibundel di masing-masingnya, dan selalu menggunakan format pos pemeriksaan yang sama.
Moshika untuk PyTorch (bf16): kyutai/moshika-pytorch-bf16.
Moshiko untuk PyTorch (bf16): kyutai/moshiko-pytorch-bf16.
Moshika untuk MLX (int4, int8, bf16): kyutai/moshika-mlx-q4, kyutai/moshika-mlx-q8, kyutai/moshika-mlx-bf16.
Moshiko untuk MLX (int4, int8, bf16): kyutai/moshiko-mlx-q4, kyutai/moshiko-mlx-q8, kyutai/moshiko-mlx-bf16.
Moshika untuk Karat/Lilin (int8, bf16): kyutai/moshika-candle-q8, kyutai/moshika-mlx-bf16.
Moshiko untuk Karat/Lilin (int8, bf16): kyutai/moshiko-candle-q8, kyutai/moshiko-mlx-bf16.
Semua model dirilis di bawah lisensi CC-BY 4.0.
Anda memerlukan setidaknya Python 3.10, dengan direkomendasikan 3.12. Untuk persyaratan spesifik, silakan periksa masing-masing direktori backend. Anda dapat menginstal klien PyTorch dan MLX dengan yang berikut:
pip install moshi # moshi PyTorch, dari PyPIpip install moshi_mlx # moshi MLX, dari PyPI, paling baik dengan Python 3.12.# Atau versi terbaru untuk Moshi dan Moshi-MLX.pip install -e "git+https://git@github .com/kyutai-labs/moshi.git#egg=moshi&subdirectory=moshi"pip install -e "git+https://[email protected]/kyutai-labs/moshi.git#egg=moshi_mlx&subdirectory=moshi_mlx"pip install Rustymimi # mimi, implementasi karat dengan binding Python dari PyPI
Jika Anda tidak menggunakan Python 3.12, Anda mungkin mendapatkan kesalahan saat menginstal moshi_mlx
atau rustymimi
(yang bergantung pada moshi_mlx
). Kemudian, Anda perlu menginstal toolchain Rust, atau beralih ke Python 3.12.
Meskipun kami berharap basis kode ini dapat berfungsi di Windows, kami tidak menyediakan dukungan resmi untuk itu. Kami telah menguji versi MLX di MacBook Pro M3. Saat ini, kami tidak mendukung kuantisasi untuk versi PyTorch, jadi Anda memerlukan GPU dengan jumlah memori yang besar (24 GB).
Untuk menggunakan backend Rust, Anda memerlukan toolchain Rust versi terbaru. Untuk mengkompilasi dukungan GPU, Anda juga memerlukan CUDA yang terpasang dengan benar untuk GPU Anda, khususnya dengan nvcc
.
API berbasis PyTorch dapat ditemukan di direktori moshi
. Ini menyediakan versi streaming tokenizer audio (mimi) dan model bahasa (moshi).
Untuk berjalan dalam mode interaktif, Anda perlu memulai server yang akan menjalankan model, Anda kemudian dapat menggunakan UI web atau klien baris perintah.
Mulai server dengan:
python -m moshi.server [--gradio-tunnel] [--hf-repo kyutai/moshika-pytorch-bf16]
Dan kemudian akses UI web di localhost:8998. Jika GPU Anda berada di mesin yang jauh, ini tidak akan berfungsi karena situs web yang menggunakan http tidak diperbolehkan menggunakan api worklet audio. Ada dua cara untuk menyiasatinya:
Teruskan port 8998 jarak jauh ke localhost Anda menggunakan flag ssh -L
. Kemudian sambungkan ke localhost:8998 seperti yang disebutkan sebelumnya.
Gunakan argumen --gradio-tunnel
, ini menyiapkan terowongan dengan URL yang dapat diakses dari mana saja. Perlu diingat bahwa terowongan ini melewati AS dan dapat menambah latensi yang signifikan (hingga 500 ms dari Eropa). Anda dapat menggunakan --gradio-tunnel-token
untuk menyetel token rahasia tetap dan menggunakan kembali alamat yang sama seiring waktu.
Anda dapat menggunakan --hf-repo
untuk memilih model terlatih lainnya, dengan mengatur repositori Hugging Face yang tepat.
Mengakses server yang bukan localhost melalui http dapat menyebabkan masalah dengan penggunaan mikrofon di UI web (di beberapa browser, hal ini hanya diperbolehkan menggunakan https).
Klien lokal juga tersedia, seperti
python -m moshi.klien [--url URL_TO_GRADIO]
Namun perhatikan bahwa, tidak seperti browser web, klien ini bersifat barebone: klien ini tidak melakukan pembatalan gema apa pun, juga tidak mencoba mengkompensasi kelambatan yang semakin besar dengan melewatkan frame.
Untuk informasi lebih lanjut, khususnya cara menggunakan API secara langsung, silakan checkout moshi/README.md.
Setelah Anda menginstal moshi_mlx
, Anda dapat menjalankannya
python -m moshi_mlx.local -q 4 # bobot dikuantisasi menjadi 4 bitspython -m moshi_mlx.local -q 8 # bobot dikuantisasi menjadi 8 bit# Dan menggunakan model terlatih yang berbeda:python -m moshi_mlx.local -q 4 --hf- repo kyutai/moshika-mlx-q4 python -m moshi_mlx.local -q 8 --hf-repo kyutai/moshika-mlx-q8# hati-hati untuk selalu mencocokkan flag `-q` dan `--hf-repo`.
Antarmuka baris perintah ini juga barebone. Ia tidak melakukan pembatalan gema apa pun, juga tidak mencoba mengkompensasi kelambatan yang semakin besar dengan melewatkan frame.
Alternatifnya, Anda dapat menjalankan python -m moshi_mlx.local_web
untuk menggunakan UI web, koneksinya melalui http dan akan berada di localhost:8998.
Untuk menjalankan server inferensi Rust, gunakan perintah berikut dari dalam direktori rust
:
menjalankan kargo --fitur cuda --bin moshi-backend -r -- --config moshi-backend/config.json mandiri
Saat menggunakan macOS, Anda dapat mengganti --features cuda
dengan --features metal
.
Alternatifnya, Anda dapat menggunakan config-q8.json
daripada config.json
untuk menggunakan model q8 terkuantisasi. Anda dapat memilih model terlatih lain, misalnya Moshika, dengan mengubah kunci "hf_repo"
di salah satu file.
Setelah server mencetak 'pekerja mandiri mendengarkan', Anda dapat menggunakan UI web. Secara default server Rust menggunakan https sehingga berada di localhost:8998.
Anda akan mendapat peringatan tentang situs tersebut tidak aman. Saat menggunakan chrome, Anda dapat melewatinya dengan memilih "Detail" atau "Lanjutan", lalu "Kunjungi situs tidak aman ini" atau "Lanjutkan ke localhost (tidak aman)".
Kami merekomendasikan penggunaan UI web karena menyediakan pembatalan gema tambahan yang membantu kualitas model secara keseluruhan. Perhatikan bahwa sebagian besar perintah akan langsung menyajikan UI ini di URL yang disediakan, dan secara umum tidak ada lagi yang bisa dilakukan.
Alternatifnya, kami menyediakan antarmuka baris perintah untuk versi Rust dan Python, protokolnya sama dengan UI web sehingga tidak ada perubahan di sisi server.
Sebagai referensi, berikut adalah daftar klien Moshi.
Dari dalam direktori rust
, jalankan perintah berikut:
menjalankan kargo --bin moshi-cli -r -- tui --host localhost
python -m moshi.klien
buruh pelabuhan menulis
Memerlukan Toolkit Kontainer NVIDIA
UI web dapat dibuat dari repo ini melalui langkah-langkah berikut (ini memerlukan instalasi npm
).
klien cd instalasi npm npm jalankan pembangunan
UI web kemudian dapat ditemukan di direktori client/dist
.
Jika Anda ingin menginstal dari tiruan repositori ini, mungkin untuk mengembangkan Moshi lebih lanjut, Anda dapat melakukan hal berikut:
# Dari root klon repopip install -e 'moshi[dev]'pip install -e 'moshi_mlx[dev]'pre-commit install
Jika Anda ingin membangun rustymimi
secara lokal (dengan asumsi Anda telah menginstal Rust dengan benar):
pip instal jatuh tempo dewasa dev -r -m karat/mimi-pyo3/Cargo.toml
Periksa bagian Pertanyaan Umum sebelum membuka terbitan.
Kode ini disediakan di bawah lisensi MIT untuk bagian Python, dan lisensi Apache untuk backend Rust. Kode klien web disediakan di bawah lisensi MIT. Perhatikan bahwa sebagian kode ini didasarkan pada AudioCraft, yang dirilis di bawah lisensi MIT.
Anak timbangan untuk model ini dirilis di bawah lisensi CC-BY 4.0.
Jika Anda menggunakan Mimi atau Moshi, harap kutip makalah berikut,
@techreport{kyutai2024moshi, title={Moshi: a speech-text foundation model for real-time dialogue}, author={Alexandre D'efossez and Laurent Mazar'e and Manu Orsini and Am'elie Royer and Patrick P'erez and Herv'e J'egou and Edouard Grave and Neil Zeghidour}, year={2024}, eprint={2410.00037}, archivePrefix={arXiv}, primaryClass={eess.AS}, url={https://arxiv.org/abs/2410.00037}, }