GN⁺: 모시: 실시간 대화를 위한 음성-텍스트 기반 모델
(github.com/kyutai-labs)Moshi: 실시간 대화를 위한 음성-텍스트 기반 모델
Moshi 소개
- Moshi는 실시간 대화를 위한 음성-텍스트 기반 모델이자 양방향 음성 대화 프레임워크임
- 최첨단 스트리밍 신경 오디오 코덱인 Mimi를 사용함
- Mimi는 24 kHz 오디오를 12.5 Hz로 변환하며, 대역폭은 1.1 kbps로 유지하면서도 80ms의 지연 시간으로 스트리밍 방식으로 처리함
- 기존의 비스트리밍 코덱인 SpeechTokenizer(50Hz, 4kbps)나 SemantiCodec(50Hz, 1.3kbps)보다 성능이 뛰어남
Moshi의 작동 방식
- Moshi는 두 개의 오디오 스트림을 모델링함: 하나는 Moshi, 다른 하나는 사용자
- 추론 시, 사용자의 스트림은 오디오 입력에서 가져오고, Moshi의 스트림은 모델의 출력에서 샘플링됨
- 이 두 오디오 스트림과 함께, Moshi는 자신의 음성에 해당하는 텍스트 토큰을 예측함
- 작은 Depth Transformer가 주어진 시간 단계에서 코드북 간의 종속성을 모델링하고, 큰 7B 파라미터 Temporal Transformer가 시간적 종속성을 모델링함
- Moshi는 이론적으로 160ms의 지연 시간을 달성하며, 실제로는 L4 GPU에서 200ms 이하의 지연 시간을 가짐
Mimi의 특징
- Mimi는 SoundStream과 EnCodec 같은 이전 신경 오디오 코덱을 기반으로 하며, 인코더와 디코더에 Transformer를 추가함
- Mimi는 텍스트 토큰의 평균 프레임 속도(~3-4 Hz)에 더 가깝게 맞추기 위해 스트라이드를 조정함
- Mimi는 WavLM의 자가 지도 표현과 일치하도록 첫 번째 코드북 토큰을 맞추는 증류 손실을 사용함
- Mimi는 적대적 훈련 손실과 기능 매칭만을 사용하여 낮은 비트레이트에도 주관적 품질에서 큰 개선을 보임
저장소 구성
- 이 저장소에는 세 가지 버전의 Moshi 추론 스택이 있음
- PyTorch를 사용하는 Python 버전은
moshi/
디렉토리에 있음 - M 시리즈 Mac을 위한 MLX를 사용하는 Python 버전은
moshi_mlx/
디렉토리에 있음 - 프로덕션에서 사용되는 Rust 버전은
rust/
디렉토리에 있음
- PyTorch를 사용하는 Python 버전은
- 라이브 데모 코드는
client/
디렉토리에 제공됨
모델
- 세 가지 모델을 공개함
- 음성 코덱 Mimi
- 남성 합성 음성으로 미세 조정된 Moshi (Moshiko)
- 여성 합성 음성으로 미세 조정된 Moshi (Moshika)
- 각 모델은 HuggingFace 저장소에서 제공됨
- 모든 모델은 CC-BY 4.0 라이선스로 공개됨
요구 사항
- 최소 Python 3.10이 필요하며, Python 3.12를 권장함
- 특정 요구 사항은 각 백엔드 디렉토리를 참조
- PyTorch 및 MLX 클라이언트 설치 명령어 제공
Python (PyTorch)
- PyTorch 기반 API는
moshi
디렉토리에 있음 - 스트리밍 오디오 토크나이저(mimi)와 언어 모델(moshi)을 제공함
- 인터랙티브 모드에서 실행하려면 서버를 시작해야 함
Python (MLX) for macOS
-
moshi_mlx
를 설치한 후 로컬 추론을 실행할 수 있음 - 명령줄 인터페이스는 기본적이며, 에코 취소 기능이 없음
Rust
- Rust 추론 서버를 실행하려면
rust
디렉토리에서 명령어를 사용 - macOS에서는
--features cuda
대신--features metal
을 사용할 수 있음
클라이언트
- 웹 UI 사용을 권장하며, 추가적인 에코 취소 기능을 제공함
- 명령줄 인터페이스도 제공됨
개발
- 저장소를 클론하여 설치하고 개발할 수 있음
FAQ
- 문제를 열기 전에 자주 묻는 질문 섹션을 확인
라이선스
- Python 부분은 MIT 라이선스, Rust 백엔드는 Apache 라이선스
- 웹 클라이언트 코드는 MIT 라이선스
- 모델 가중치는 CC-BY 4.0 라이선스
인용
- Mimi 또는 Moshi를 사용할 경우, 논문을 인용
GN⁺의 정리
- Moshi는 실시간 대화를 위한 혁신적인 음성-텍스트 모델로, 낮은 지연 시간과 높은 품질을 자랑함
- Mimi 코덱은 기존 코덱보다 효율적이며, Transformer를 통해 성능을 극대화함
- 다양한 플랫폼에서 사용 가능하며, PyTorch, MLX, Rust 등 여러 버전을 제공함
- 실시간 대화 애플리케이션 개발자에게 매우 유용하며, 특히 낮은 지연 시간이 중요한 경우에 적합함
- 유사한 기능을 가진 다른 프로젝트로는 Google의 WaveNet과 OpenAI의 Jukebox가 있음
Hacker News 의견
-
첫 번째 의견
- 지연 시간이 매우 짧아 오픈 소스 모델로서는 큰 성과임
- 최근 매우 우수한 LLM들에 비해 응답 품질이 떨어짐
- 2019년의 LLM을 연상케 함
- 오디오 측면에서는 충분히 잘했으나, 응답 품질에 더 집중해야 함
-
두 번째 의견
- YouTube에서 몇 달 전의 재미있는 데모를 발견함
- 지금은 개선되었을 것이라고 확신함
-
세 번째 의견
- 실시간 음성 -> LLM -> 음성 출력 솔루션을 개발 중임
- 스트리밍 신경 오디오 코덱이 가장 흥미로움
- 제품 관점에서는 LLM에 바로 연결하기보다는 도구/기능 호출 단계가 필요함
- tincans 개발이 종료되었지만, 이 방향으로의 발전 가능성이 큼
-
네 번째 의견
- Moshi는 CC-BY 라이선스임
- 최근 Apache v2로 출시된 유사한 7b 모델이 있음
-
다섯 번째 의견
- iPad의 a-shell 터미널에서 TTS 인터페이스를 제공하는 편리한 방법이 있는지 궁금함
-
여섯 번째 의견
- 최근 음성 지원 LM 분야에서 많은 발전이 있었음
- 관련 프로젝트로 LLaMA-Omni와 mini-omni가 있음
-
일곱 번째 의견
- 추론 서버는 Rust로 작성되었고, huggingface의 Candle crate를 사용함
- Moshi 저자 중 한 명이 Candle의 주요 저자임
- Candle을 기반으로 한 추론 스택을 구축 중임
-
여덟 번째 의견
- 사용해본 결과, 즉시 응답하지만 실제 질문에 대한 답변은 나중에 제공됨
- 때로는 루프에 빠질 수 있음
-
아홉 번째 의견
- 지연 시간이 약 200ms로 매우 짧음
- 7B 트랜스포머 모델을 사용하여 매우 똑똑하지는 않음
- 더 큰 모델을 사용하면 지연 시간이 길어질 수 있음
- 시스템 아키텍처에서 중간 단계의 응답을 제공하는 방법이 필요함
-
열 번째 의견
- 응답 속도는 인상적이나, 응답의 품질은 그렇지 않음
- Moshi와의 대화 예시를 제공함
- "2019년"이라는 잘못된 응답을 제공함
- COVID-19에 대한 잘못된 정보를 제공함