1P by neo 2달전 | favorite | 댓글 1개

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/ 디렉토리에 있음
  • 라이브 데모 코드는 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에 대한 잘못된 정보를 제공함