Moshi: Mô hình dựa trên giọng nói-văn bản cho hội thoại thời gian thực
Giới thiệu về Moshi
- Moshi là một mô hình dựa trên giọng nói-văn bản cho hội thoại thời gian thực, đồng thời là một framework hội thoại giọng nói hai chiều
- Sử dụng Mimi, một codec âm thanh thần kinh streaming tiên tiến nhất
- Mimi chuyển đổi âm thanh 24 kHz thành 12.5 Hz và xử lý theo kiểu streaming với độ trễ 80ms trong khi vẫn giữ băng thông ở mức 1.1 kbps
- Hiệu năng vượt trội hơn các codec không streaming trước đây như SpeechTokenizer (50Hz, 4kbps) hay SemantiCodec (50Hz, 1.3kbps)
Cách Moshi hoạt động
- Moshi mô hình hóa hai luồng âm thanh: một của Moshi, một của người dùng
- Khi suy luận, luồng của người dùng được lấy từ đầu vào âm thanh, còn luồng của Moshi được lấy mẫu từ đầu ra của mô hình
- Cùng với hai luồng âm thanh này, Moshi dự đoán các token văn bản tương ứng với giọng nói của chính nó
- Một Depth Transformer nhỏ mô hình hóa sự phụ thuộc giữa các codebook tại một bước thời gian nhất định, và một Temporal Transformer lớn 7B tham số mô hình hóa sự phụ thuộc theo thời gian
- Về mặt lý thuyết, Moshi đạt độ trễ 160ms và trong thực tế có độ trễ dưới 200ms trên GPU L4
Đặc điểm của Mimi
- Mimi dựa trên các codec âm thanh thần kinh trước đó như SoundStream và EnCodec, đồng thời bổ sung Transformer vào encoder và decoder
- Mimi điều chỉnh stride để khớp gần hơn với tốc độ khung hình trung bình của token văn bản (~3-4 Hz)
- Mimi sử dụng hàm mất mát chưng cất để căn chỉnh token codebook đầu tiên với biểu diễn tự giám sát của WavLM
- Mimi chỉ sử dụng hàm mất mát huấn luyện đối kháng và feature matching nhưng vẫn cho thấy cải thiện lớn về chất lượng cảm nhận ở bitrate thấp
Cấu trúc kho lưu trữ
- Kho lưu trữ này có ba phiên bản của stack suy luận Moshi
- Phiên bản Python dùng PyTorch nằm trong thư mục
moshi/
- Phiên bản Python dùng MLX cho máy Mac dòng M nằm trong thư mục
moshi_mlx/
- Phiên bản Rust dùng trong production nằm trong thư mục
rust/
- Mã demo trực tiếp được cung cấp trong thư mục
client/
Mô hình
- Công bố ba mô hình
- Codec giọng nói Mimi
- Moshi được fine-tune với giọng tổng hợp nam (Moshiko)
- Moshi được fine-tune với giọng tổng hợp nữ (Moshika)
- Mỗi mô hình đều được cung cấp trong kho HuggingFace
- Tất cả các mô hình được phát hành theo giấy phép CC-BY 4.0
Yêu cầu
- Cần tối thiểu Python 3.10 và khuyến nghị Python 3.12
- Xem từng thư mục backend để biết các yêu cầu cụ thể
- Cung cấp lệnh cài đặt client PyTorch và MLX
Python (PyTorch)
- API dựa trên PyTorch nằm trong thư mục
moshi
- Cung cấp tokenizer âm thanh streaming (mimi) và language model (moshi)
- Để chạy ở chế độ tương tác, cần khởi động server
Python (MLX) cho macOS
- Sau khi cài
moshi_mlx, có thể chạy suy luận cục bộ
- Giao diện dòng lệnh còn cơ bản và không có tính năng khử tiếng vọng
Rust
- Để chạy server suy luận Rust, sử dụng lệnh trong thư mục
rust
- Trên macOS, có thể dùng
--features metal thay cho --features cuda
Client
- Khuyến nghị dùng web UI, có cung cấp thêm tính năng khử tiếng vọng
- Cũng có cung cấp giao diện dòng lệnh
Phát triển
- Có thể clone kho lưu trữ để cài đặt và phát triển
FAQ
- Hãy kiểm tra mục câu hỏi thường gặp trước khi mở issue
Giấy phép
- Phần Python dùng giấy phép MIT, backend Rust dùng giấy phép Apache
- Mã web client dùng giấy phép MIT
- Trọng số mô hình dùng giấy phép CC-BY 4.0
Trích dẫn
- Nếu sử dụng Mimi hoặc Moshi, hãy trích dẫn bài báo
Tóm tắt của GN⁺
- Moshi là một mô hình giọng nói-văn bản đột phá cho hội thoại thời gian thực, nổi bật với độ trễ thấp và chất lượng cao
- Codec Mimi hiệu quả hơn các codec trước đây và tối đa hóa hiệu năng thông qua Transformer
- Có thể sử dụng trên nhiều nền tảng, với các phiên bản PyTorch, MLX, Rust và hơn thế nữa
- Rất hữu ích cho các nhà phát triển ứng dụng hội thoại thời gian thực, đặc biệt phù hợp khi độ trễ thấp là yếu tố quan trọng
- Các dự án khác có chức năng tương tự bao gồm WaveNet của Google và Jukebox của OpenAI
1 bình luận
Ý kiến trên Hacker News
Ý kiến thứ nhất
Ý kiến thứ hai
Ý kiến thứ ba
Ý kiến thứ tư
Ý kiến thứ năm
Ý kiến thứ sáu
Ý kiến thứ bảy
Ý kiến thứ tám
Ý kiến thứ chín
Ý kiến thứ mười