Audio-008, Moshi: a speech-text foundation model for real-time dialogue, Preprint 2024
◼ Comment
- https://naver.me/FK0Mj2zM
- 학습할때, TrTemp에 이전 스텝의 토큰들 임베딩이 더해져서 들어가서 zs을 출력하고,
- 이것이 TrDepth에 들어가서 word, speaker semantic, speaker acoustic, user semantic, user acoustic을 순차적으로 예측하도록 학습됨
Abstract
본 논문에서는 음성-텍스트 기반의 기초 모델이자 전이중(Full-Duplex) 음성 대화 프레임워크인 "Moshi"를 소개한다. 기존의 음성 대화 시스템은 일반적으로 독립적인 구성 요소들, 예를 들어 음성 활동 감지(VAD), 음성 인식(ASR), 텍스트 기반 대화 시스템, 텍스트 음성 합성(TTS) 등의 파이프라인을 기반으로 구축되어 있다.
- 이러한 프레임워크는 실제 대화의 경험을 충분히 재현할 수 없다. 우선, 복잡한 구조로 인해 상호작용 간에 수 초의 지연(latency)이 발생한다.
- 둘째, 텍스트가 대화의 중간 매개체로 사용되면서 감정이나 비언어적 음향과 같이 의미에 영향을 주는 비언어적 정보가 상실된다.
- 마지막으로 기존 시스템은 화자 교대(speaker turn)를 기준으로 세그먼트를 분할하여 발화 중첩(overlapping speech), 끼어들기(interruption), 맞장구(interjection) 등을 반영하지 못한다.
Moshi는 음성 대화를 "음성-음성 생성(speech-to-speech generation)"이라는 형태로 접근하여 위의 문제들을 통합적으로 해결한다.
Moshi는 텍스트 언어 모델을 기반으로 신경 오디오 코덱(neural audio codec)의 잔차 양자화(residual quantizer) 토큰으로 음성을 생성하며, 자체 발화와 사용자 발화를 병렬 스트림으로 각각 모델링한다. 이를 통해 명시적인 화자 교대의 개념을 제거하고, 임의적인 대화 역동성을 효과적으로 모델링할 수 있다.
또한 이전 연구에서 제안된 계층적 의미-음향 토큰 생성을 확장하여 오디오 토큰 이전에 시간 정렬된 텍스트 토큰을 먼저 예측하는 "Inner Monologue(내적 독백)" 방식을 제안한다. 이 방법은 생성된 음성의 언어적 품질을 크게 향상시킬 뿐만 아니라, 스트리밍 형태의 음성 인식 및 텍스트 음성 합성까지 가능함을 보여준다.
그 결과 Moshi 모델은 최초의 실시간 전이중(full-duplex) 음성 기반 대규모 언어 모델(LLM)로, 이론적으로는 160ms, 실제로는 200ms의 지연(latency)을 달성하였다. 본 모델은 github.com/kyutai-labs/moshi에서 사용할 수 있다.
주요 키워드: 음성, 텍스트, 멀티모달, 파운데이션 모델, 음성 대화
1 소개(Introduction)
음성 인터페이스는 Alexa, Siri, Google 어시스턴트와 같은 초기 대화 시스템에서 사용하기 편리한 인터페이스를 제공해왔다. 일반적으로 사용자가 특정 "웨이크 워드(wake word)"를 발화하면, 자동 음성 인식(ASR) 시스템이 이후 사용자의 요청을 전사(transcription)한다. 이어서 자연어 이해(NLU) 파이프라인이 전사된 요청을 구조화된 포맷으로 변환하고, 자연어 생성(NLG)을 통해 텍스트 기반의 응답을 만든다. 최종적으로 텍스트 음성 변환(TTS) 시스템이 생성된 답변을 사용자에게 전달하는 방식이다. 이러한 프로세스는 특정 행동을 실행하거나 특정 사실을 검색하는 등 짧고 제한적인 상호작용에 대해서는 효과적이었으나, 최근 대규모 언어 모델(LLM)의 등장으로 인해 보다 개방적이고 다중턴(multi-turn)을 요구하는 대화로 음성 인터페이스의 역할을 확장하는 과제가 떠올랐다.
이 도전 과제를 해결하기 위한 하나의 방법은 LLM을 통해 NLU와 NLG를 수행하고, ASR과 TTS는 각각 사용자의 음성 입력과 시스템의 음성 출력을 담당하는 인터페이스로 사용되는 것이다.
- 현재 세대의 음성 기반 대화 시스템인 Gemini나 ChatGPT 같은 시스템들이 이 프레임워크를 기반으로 만들어졌다.
- LLM앞뒤에 모듈을 붙여서 만들었었다고? 이렇게 했다고 공개한적이 있었나보네
하지만 이런 인터페이스들이 제공하는 경험은 여전히 자연스러운 실제 대화와는 거리가 있다.
- 우선, 많은 구성 요소로 이루어진 복잡한 파이프라인으로 인해 지연(latency)이 축적되며, 결과적으로 보통 수 초 정도의 긴 지연이 발생한다.
- 이는 수백 밀리초(ms) 내로 이루어지는 자연스러운 인간의 대화와는 매우 다르다.
- 둘째로, 언어 이해와 생성이 텍스트 영역에서 이루어지므로, 텍스트로 표현되지 않은 모든 정보는 모델에 의해 무시된다.
- 여기에는 감정이나 억양과 같은 준언어적 정보(paralinguistic information)와, 주변의 음향 이벤트와 같은 비언어적 정보(non-speech audio)들이 포함된다.
- 마지막으로, 이러한 모델들은 근본적으로 턴(turn)을 기반으로 설계되었으며, 대화를 명확하게 정의된 단일 화자 세그먼트의 연속으로 간주한다.
- 이 패러다임은 텍스트 기반의 대화에는 적합하지만, 발화 중첩(overlapping speech)이나 끼어들기, 맞장구(backchanneling, 예를 들어 “OK”, “알겠어요” 등의 끼어들지 않는 짧은 발화)와 같은 음성 기반 대화의 주요 측면을 충분히 모델링하지 못한다.
- 실제로 발화 중첩은 전체 발화 시간의 약 10~20%를 차지한다는 연구 결과도 있다.
- latency가 생김
- 텍스트로 표현못하는 정보들이 존재
- 중간에 끼어들기가 힘들어짐
본 논문에서는 이러한 문제점들—즉 지연 문제, 텍스트 기반 정보 병목현상(information bottleneck), 턴 기반 모델링의 한계—를 해결하기 위한 음성-텍스트 기초 모델이자 실시간 음성 대화 시스템인 Moshi를 소개한다.
Moshi는 텍스트 기반 대규모 언어 모델(LLM)을 기반으로 작은 규모의 오디오 언어 모델(audio language model)을 추가한 구조로 설계되었으며, 오디오 언어 모델은 이산적인(discrete) 오디오 단위를 입력받고 예측한다.
이를 통해 입력을 이해하고 출력을 생성하는 작업이 오디오 영역에서 직접 이루어지므로 텍스트 기반의 정보 병목 현상을 제거할 수 있으며, 기반이 되는 텍스트 LLM이 가진 지식과 추론 능력은 여전히 활용할 수 있다. 또한 본 논문은 기존의 오디오 언어 모델 연구를 확장하여 스트리밍(streaming)이 가능한 계층적 아키텍처를 설계하였다.
이 모델의 이론적인 지연은 160ms로, 10개 언어에 대해 측정된 자연스러운 대화의 평균 응답 시간인 230ms보다 더 짧다.
텍스트 기반 LLM에다가 오디오 토큰을 넣어서 추가학습한거 같고, 이 때 streaming이 가능한 구조로 제안함. 일반적으로 자연스러운 응답시간은 230ms인가봄. 이 모델은 160ms임
나아가 본 논문은 최초의 다중 스트림(multi-stream) 오디오 언어 모델을 제안하는데, 이 모델은 입력 오디오 스트림(사용자 음성)과 출력 오디오 스트림(Moshi의 음성)을 두 개의 병렬 토큰 스트림으로 명시적으로 모델링한다. 이를 통해 명시적인 화자 교대 개념을 제거하고, 중첩 발화나 끼어들기를 포함한 자연스러운 대화 역동성을 반영하는 방식으로 모델을 학습할 수 있다. 그 결과, 개발된 Moshi 모델은 최초의 완전한 전이중(full-duplex), 즉 항상 듣고 항상 음성(발화 또는 침묵)을 생성하는 실시간 대화형 LLM이 되었다.
본 논문의 주요 기여점을 다음과 같이 요약한다:
-
먼저, 공개 영어 데이터 2.1T 토큰으로 사전 학습된 70억 파라미터의 텍스트 LLM인 Helium을 제안한다. (3.2절에서 모델 구조 및 학습법, 4.1절에서 사전 학습 데이터 수집 및 필터링 방법 설명)
-
오디오를 이산적인(discrete) 토큰으로 변환하여 다시 복원할 수 있는 Mimi라는 신경 오디오 코덱(neural audio codec)을 개발하였다. 이는 Moshi에서 예측하는 오디오 토큰의 생성을 담당한다. (3.3절에서 Mimi 모델 구조와 학습법, 5.2절에서 세부적인 Ablation 연구)
-
계층적이고 스트리밍 가능한 방식으로 오디오 토큰을 예측하기 위해 Helium 모델에 작은 규모의 Transformer를 추가한 Moshi라는 새로운 오디오 언어 모델 구조를 제안하였다. 이를 통해 스트리밍 형태로 음성 품질 및 오디오 일관성을 기존 비스트리밍 모델을 능가하는 성능으로 실현했다. 또한 다중 스트림 구조를 통해 복잡한 전이중 대화의 손쉬운 처리 방식을 구현하였다. (3.4절에서 구조 설명)
-
오디오 토큰 이전에 시간 정렬된 텍스트 토큰을 예측함으로써 생성된 음성의 사실성과 언어적 품질을 크게 개선하는 "Inner Monologue(내적 독백)" 방식을 제안하였다. 이를 통해 Moshi는 비언어적 정보를 처리하면서도, 동시에 텍스트 출력을 생성할 수 있다. (3.4.4절에서 소개 및 설명)
-
Moshi의 텍스트 이해, 음성 품질, 오디오 품질 및 음성 기반 질의응답 성능에 대해 여러 방면으로 평가를 수행하여 우수성을 입증하였다. (5절의 실험에서 보고됨)
이 논문에서 제안하는 Moshi 모델은 온라인 데모로 직접 체험할 수 있다(https://moshi.chat).
2 관련 연구(Related Work)
오디오 언어 모델링(Audio Language Modeling)
초기 음성 기반 기초 모델(speech foundation model)의 발전은 자동 음성 인식(ASR), 화자 검증, 음성 분류 등 다양한 판별적 작업(discriminative tasks)에 걸쳐 음성 이해 성능을 향상시켰다. 이러한 발전의 핵심 요소 중 하나는 자기 지도 학습(self-supervised learning)으로, 이를 통해 범용적이고 판별적 성격을 갖는 음성 표현을 학습할 수 있게 되었다. 자기 지도 학습 방법은 이전의 텍스트 기반 마스크 언어 모델링(masked language modeling) 연구로부터 영향을 받았다. 생성적 텍스트 사전 학습은 비슷하게 음성 생성 모델에도 큰 영감을 주었다. 특히 자기 지도 학습으로 얻어진 표현들을 양자화하는 방법이 제안되었는데, 이를 통해 음성 조각을 카테고리형 변수가 연결된 이산적인 오디오 토큰(discrete audio tokens)으로 표현할 수 있게 되었으며, 음성 생성 문제를 언어 모델링 과제로 변환할 수 있었다. 나아가 AudioLM은 이러한 의미(semantic) 토큰을 신경 오디오 코덱(neural audio codec)으로부터 나온 음향(acoustic) 토큰과 결합하여, 임의의 음성, 녹음 환경, 비언어적 음향까지도 모델링할 수 있도록 했다. 이러한 오디오 언어 모델들은 텍스트 음성 변환(TTS), 음성-음성 번역, 음성 향상(speech enhancement) 분야에서 뛰어난 성능을 보이며 최신의 기술 수준을 정의했다. 또한 감독 학습(supervised tasks) 외에도, 음성 생성 과제에 대해 오디오 전용 모델을 비지도 방식으로 학습하고 확장하려는 연구도 병행되어왔다. 그 결과 초기에는 짧은 문장 단위로 제한된 음성을 생성하던 모델이, 계층적 의미·음향 토큰 모델링 방법을 통해 수십 초 이상 의미 있고 일관된 음성 연속체를 임의의 음성과 조건에서 생성하는 수준까지 발전하였다.
그러나 음성 데이터는 의미 있는 출력을 생성하기 위해 수 분 길이의 긴 시퀀스를 모델링해야 하며, 오디오 잠재 표현(latent representation)은 일반적으로 텍스트 표현보다 덜 압축적인 특성이 있어, 신경 오디오 코덱에서 얻어지는 이산적 표현(discrete representations)을 자기회귀적(autoregressive) 방식으로 모델링할 때 매 타임스텝마다 다중 예측이 필요해진다.
일부 연구는 잠재 디퓨전 모델(latent diffusion)을 사용하여 계층적 이산 토큰의 필요성을 완화하려 하였으나, 스트리밍 방식으로는 활용이 어렵다는 한계가 있다.
Copet 등(2023)은 각 레벨 토큰 간 지연(delay)을 도입하여 자기회귀 단계 수를 줄이고 병렬 예측을 수행함으로써 이러한 문제를 완화하였다. 본 연구에서는 이러한 이전 연구들을 확장하여 실시간 오디오 생성이 가능하고 수 분의 컨텍스트를 다룰 수 있는 확장 가능한 계층적 오디오 토큰 모델링을 제안한다.
하지만, 음성 전용 모델은 사실적인 지식 및 추론 능력이 부족하므로, 텍스트 모델의 지식 및 추론 능력을 음성 생성 모델과 결합한 음성-텍스트 모델 개발로 이어졌다.
텍스트 모델위에 오디오 능력을 입히는 식의 학습방식을 한듯
음성-텍스트 모델(Speech-text Models)
음성-텍스트 모델은 일반적으로 사전 훈련된 텍스트 언어 모델을 시작점으로 하여, 이를 오디오를 예측하도록 미세 조정하거나(fine-tuning), 음성과 텍스트 전환 과제를 수행하는 형태로 미세 조정한다.
예를 들어, AudioPALM은 사전 훈련된 PALM 모델의 텍스트 어휘를 음성 의미 토큰(semantic audio tokens)으로 확장하고, TTS, ASR, 음성-음성 번역 등 다양한 음성-텍스트 과제로 학습된다.
VoxTLM 또한 유사한 접근을 취하여 TTS와 ASR을 다룬다.
한편, Spirit-LM은 음성과 전사(transcript)의 시간 정렬을 통해 모달리티 전환(modality switch)을 수행하여, 텍스트나 음성 표현과 관계없이 일관된 언어 표현을 학습한다.
또 다른 접근법은 Spectron, SpeechGPT, PSLM 등에서 제안된 방식으로, 계층적(hierarchical)으로 음성과 텍스트를 결합하는 방식이다. Spectron 및 SpeechGPT는 Chain-of-Modality 방식으로, 텍스트 토큰을 먼저 생성한 후 음성으로 이어서 생성하지만, 이는 실시간 생성과 근본적으로 양립 불가능하다.
PSLM은 이러한 제약을 완화하여 텍스트 및 음성 토큰을 병렬로 모델링한다.
본 연구는 "내적 독백(Inner Monologue)"을 제안하여, 음성과 텍스트 데이터를 정렬하여 결합하는 주요 아키텍처 및 학습 방식을 소개한다.
- Inner Monologue 방식은 음성을 텍스트, 의미, 음향 토큰의 계층으로 분해하여 모델링하며, 이로 인해 스트리밍 생성과 호환 가능하다.
- 게다가 Inner Monologue와 토큰 간의 지연(delay)을 결합하여 Moshi에서 스트리밍 TTS와 ASR 시스템을 생성하는 방법을 추가로 제안한다.
- 또한 기존 모델이 명확한 턴 분할을 요구했던 반면, Moshi는 다중 스트림 구조를 통해 화자 턴 개념 없이 모든 유형의 중첩 발화나 끼어들기를 처리할 수 있다.
Inner Monolouge 방식이라 여기서 부르는 듯
음성 대화 모델(Spoken Dialogue Models)
음성 대화는 음성 생성 연구에서 가장 적게 탐구된 과제 중 하나이다. 이는 여러 도전 과제를 해결해야 하기 때문이며, 실시간 실행, 전이중(full-duplex) 처리, 준언어적(paralinguistic) 소통, 지식 및 추론 능력 등을 포함한다.
기존의 Spectron이나 PSLM은 전이중(full-duplex)을 처리하지 못하며, 사용자 음성을 ASR로 처리하여 준언어적 정보가 제거된다. Wang 등(2024)은 더 복잡한 시나리오를 모델링하지만, 여전히 폭포식(cascaded) 파이프라인을 사용한다. 이전에 제안된 유일한 전이중 시스템인 dGSLM은 Siamese 구조를 제안했으나 온라인 실행 불가능, 지식 부족, 음향 정보 모델링 미지원 등의 한계가 있었다. Moshi는 이러한 제한을 모두 해결하여, 최초로 성공적으로 위의 다양한 도전 과제를 해결한 음성 대화 모델이다.
3 모델(Model)
3.1 개요(Overview)
Moshi는 혁신적인 구조를 가진 다중 스트림(multi-stream) 음성-음성 변환(speech-to-speech) Transformer 모델로, 사용자가 실시간으로 전이중(full-duplex) 음성 대화를 수행할 수 있게 한다. Moshi 모델의 구조는 그림 1에 개략적으로 나타나 있다.
Moshi의 기초가 되는 것은 텍스트 기반 언어 모델(LLM)인 Helium이며(3.2절에서 설명), 이를 위해 높은 품질의 텍스트 데이터를 사용하여 모델이 강력한 추론 능력을 갖도록 하였다.
또한 우리는 "내적 독백(Inner Monologue)"이라 불리는 학습 및 추론 프로세스를 제안하여 텍스트 및 오디오 토큰을 공동으로 모델링한다(3.4.4절).
이를 통해 모델은 텍스트에서 얻어진 지식을 완벽하게 활용하면서도 음성-음성 시스템으로 동작할 수 있게 된다.
실시간 대화를 가능하게 하기 위해 Moshi는 처음부터 다중 스트림 아키텍처로 설계되었다(3.4.3절).
- 이를 통해 모델은 사용자와 동시에 듣고 말할 수 있으며, 명시적인 화자 턴(turn)을 모델링할 필요가 없다.
- 이와 더불어 사용자로부터의 입력 음성 및 Moshi로부터 출력되는 음성의 품질과 효율성을 보장하기 위해 Mimi라는 신경 오디오 코덱(neural audio codec)을 제안하였다(3.3절).
- Mimi는 잔차 벡터 양자화(residual vector quantization)와 지식 증류(knowledge distillation)를 통해 의미(semantic) 및 음향(acoustic) 정보를 단일한 토크나이저(tokenizer)에 결합하는 역할을 수행한다.
Moshi와 사용자 간의 오디오 스트림, 그리고 Moshi의 텍스트 토큰을 공동으로 모델링하기 위해 스트리밍 추론과 호환 가능한 Depth Transformer를 사용한다(3.4.1 및 3.4.2절).
본 장에서는 위에서 설명한 구성 요소들 각각에 대해 상세히 기술한다. 이후 4장에서는 Moshi 모델을 학습하기 위해 사용한 데이터셋과 다양한 학습 단계를 설명하고, 5장에서는 Moshi가 가진 언어적 및 음향적 능력과 주요 구성 요소들의 성능에 대한 철저한 평가 결과를 제시한다. 또한 6장에서는 시스템의 안전성에 대한 분석을 추가로 다룬다.
3.2 Helium 텍스트 언어 모델(Helium Text Language Model)
3.2.1 아키텍처(Architecture)
Helium은 자기회귀(autoregressive) 언어 모델로서, Transformer 아키텍처를 기반으로 한다. 기존 Transformer 구조를 바탕으로 다음과 같은 변경 사항을 적용하였다:
첫째, 어텐션(attention) 블록의 입력부, 피드 포워드(feed-forward) 블록, 그리고 모델의 출력 선형 레이어(output linear layer)에 RMS 정규화(RMS normalization)를 적용하였다. 위치 정보를 임베딩하는 방식으로는 회전 위치 임베딩(Rotation Positional Embedding, RoPE)을 사용하였으며, 컨텍스트 길이는 4,096개의 토큰으로 설정하였다. 학습 효율을 위해 FlashAttention을 사용했다.
또한 피드 포워드 블록의 아키텍처를 변경하여 SiLU 활성화 함수를 게이팅(gating) 함수로 활용한 게이티드 선형 유닛(Gated Linear Units, GLU)을 사용하였다.
토크나이저(tokenizer)는 SentencePiece의 유니그램(unigram) 모델을 기반으로 하며, 대부분 영어에 최적화된 32,000개의 어휘(vocabulary)를 포함하고 있다. 모든 숫자는 개별 숫자(digit) 단위로 나누었으며, 바이트 단위로 분해하는 방식(byte-backoff)을 사용하여 토크나이저가 정보를 잃지 않도록 보장했다.
모델의 학습 시 옵티마이저(optimizer)로는 AdamW를 사용했으며, 고정된 학습률(learning rate)을 유지한 후 cosine 방식으로 학습률을 감소시켰다(cosine learning rate decay).
- 이 조직에서 직접 만든 텍스트 모델인고, 논문은 없고 그냥 허깅페이스나 블로그 같은데에 있음
- https://huggingface.co/kyutai/helium-1-preview-2b
3.2.2 사전 학습 데이터 필터링(Pre-training data filtering)
학습 데이터는 LLM을 학습하는 데 매우 중요한 요소이다. 이 절에서는 크고 품질 높은 텍스트 데이터셋을 확보하기 위해 우리가 사용한 방법을 설명한다.
우리는 Wikipedia, Stack Exchange, 과학 논문 모음 등 높은 품질의 데이터 소스를 이용하여 데이터 수집을 시작하였다. 그러나 이런 소스로부터 얻을 수 있는 데이터의 양이 LLM 학습에 충분하지 않았기에, 우리는 웹 크롤링(web crawling)을 통해 얻어진 데이터—특히 CommonCrawl 데이터—를 활용하여 데이터셋의 규모를 늘렸다. 데이터 소스에 대한 세부 사항은 4.1절에서 다룬다.
웹 데이터는 고품질 학습 데이터셋을 얻기 위해 추가적인 정제 작업을 필요로 한다. 우리는 중복 제거(deduplication), 언어 식별(language identification), 품질 필터링(quality filtering)을 수행하였다. 각각의 절차에 대한 자세한 내용은 다음과 같다.
중복 제거(Deduplication)
먼저, 우리는 CommonCrawl 프로젝트에서 추출한 웹페이지 텍스트 내용이 포함된 WET 파일을 시작점으로 삼았다. 이 형식은 페이지의 모든 텍스트를 포함하고 있기에 내비게이션 메뉴와 같은 불필요한 보일러플레이트(boilerplate)를 포함한다. 따라서 파이프라인의 첫 번째 단계는 각 샤드(shard, 데이터 단위; 크롤당 약 100개의 샤드 존재) 내에서 라인(line) 수준의 중복을 제거하여 이러한 보일러플레이트를 삭제하는 것이다. 이를 위해 우리는 각 라인의 해시값(hash)을 FNV-1a 해시를 통해 계산하고, 블룸 필터(bloom filter)를 사용하여 중복된 라인을 제거하였다. 또한 중복과 비중복을 판별하기 위해 fastText 분류기를 훈련시켜 퍼지 중복 제거(fuzzy deduplication)를 수행하였다. 이 단계에서는 최소 3줄 이상의 연속된 블록이 중복으로 분류될 경우에만 제거했다.
언어 식별(Language identification)
중복 제거가 끝나면, 우리는 영어 데이터만 유지하기 위해 fastText 기반의 언어 식별기를 적용하였다. 언어 식별은 문서(document) 수준에서 수행되었으며, 특정 문서가 영어일 확률이 설정된 임계값(0.85)을 초과하는 문서들만 보존하였다.
영어만 되는 모델을 만드는게 목적이었나봄
품질 필터링(Quality filtering)
마지막 단계에서는 고품질의 웹페이지 데이터만 남기기 위해 남은 데이터를 필터링하였다. 이 단계에서는 높은 품질의 데이터 소스에서 얻은 라인과 무작위로 선택된 CommonCrawl 웹페이지 라인으로 구성된 데이터를 사용하여 fastText 분류기를 훈련하였다. 우리는 총 9개의 범주로 분류되는 분류기를 얻었는데, 이 범주들은 Wikipedia, Wikibooks 등 다양한 고품질 데이터 소스뿐만 아니라 STEM, 인문학(humanities) 등 StackExchange의 하위집합에도 대응된다. 이렇게 분류기를 설계한 목적은 문서를 유지할지 여부를 결정할 때 단순히 고품질 데이터와의 유사성뿐 아니라 문서의 도메인까지도 더 세밀하게 제어할 수 있도록 하는 데 있다. 이 분류기는 라인 수준에서 적용되었으며, 각 라인의 평균 점수(weighted by length)를 계산하여 문서 단위의 점수를 얻었다. 마지막으로, 설정된 임계값 이상 점수를 가진 문서들만 보존하였다.
3.3 오디오 토큰화(Audio Tokenization)
우리는 오디오 웨이브폼(waveform)을 오디오 토큰으로 변환하기 위해 신경 오디오 코덱(Neural Audio Codec)인 Mimi를 소개한다. Mimi는 이산적인 병목(discrete bottleneck)을 가진 오토인코더(autoencoder) 구조로 동작한다.
문헌에서는 이러한 유형의 토큰을 "음향 토큰(acoustic tokens)"이라 부르며, 이는 세부적인 오디오 특징을 모델링하여 고품질의 오디오 복원에 최적화된 토큰이다.
- 음향 토큰은 텍스트 음성 변환(TTS) 또는 텍스트 음악 변환(text-to-music) 같은 조건부 모델(conditional model)의 표적으로 적합하지만,
- 조건이 없는(unconditioned) 음성 생성의 경우 자기 지도 학습 음성 모델(self-supervised speech models)에서 추출된 의미 토큰(semantic tokens)과 결합하는 것이 필수적이다.
의미 토큰은 고품질 오디오를 복원하지는 못하지만 언어적 내용과 강하게 상관 관계를 가지기 때문에, 이를 통해 텍스트 조건이 없어도 일관되고 이해 가능한 음성 생성을 가능하게 한다.
- 그러나 이런 혼합된 토큰화 방법은 실시간 생성(real-time generation)과는 호환되지 않는다.
- 의미 토큰은 일반적으로 인과적(causal)이지 않기 때문에 오프라인 방식으로만 계산할 수 있으며, 음향 및 의미 토큰을 각각 별도의 인코더(encoder)로 생성하는 방식은 상당한 연산 비용을 초래한다.
따라서 본 논문에서는 SpeechTokenizer에서 영감을 얻어, Mimi가 비인과적이고 고수준의 의미 정보를 인과적(causal) 모델이 생성한 토큰으로 증류(distillation)하도록 하여, 의미-음향 토큰(semantic-acoustic tokens)의 스트리밍 인코딩 및 디코딩을 가능하게 하였다.
- 보통 기존의 방법들에서는 음향 토큰과 의미 토큰 2개의 토큰을 통해 오디오 시그널을 압축하여 사용했었다.
- 의미 토큰
- 정의: 언어적 정보, 즉 말의 내용과 밀접하게 연결된 고수준의 추상적 토큰입니다.
- 목적: 의미 토큰은 문맥적 의미, 어휘 정보, 발화 내용 등 언어적으로 중요한 정보를 담고 있습니다.
- 대신에 non-causal 함. HuBERT은 것을 사용해서 bidirectional 하게 뽑음
- 음향 토큰
- 정의: 발화자의 음색, 억양, 배경 잡음 등과 같은 음향적인 디테일을 포함한 저수준의 오디오 정보를 나타내는 토큰입니다.
- 목적: 오디오의 세부적인 재구성(reconstruction)에 사용됩니다. 음향 토큰은 고품질의 음성 복원에 필수적입니다.
- SoundStream, RVQGAN 등을 이용해서 casual하게 뽑음
3.3.1 아키텍처(Architecture)
우리가 제안하는 기본 아키텍처는 SoundStream(Zeghidour 외, 2022) 및 Encodec(Défossez 외, 2023)의 구조로부터 영감을 받은 것으로, SeaNet(Tagliasacchi 외, 2020) 오토인코더(autoencoder)와 Residual Vector Quantizer (RVQ; Zeghidour 외, 2022)로 구성된다. 인코더는 잔차 컨볼루션(residual convolution) 블록들을 연속적으로 연결하여 단일 채널의 파형(waveform) ($x \in \mathbb{R}^{L}$)을 잠재 공간 표현(latent representation) ($enc(x) \in \mathbb{R}^{S\times D}$)으로 사영(projection)한다.
이 과정에서 dilation 컨볼루션(van den Oord 외, 2016)과 stride 컨볼루션이 교차(interleave)로 배치되며, 비선형 활성화 함수로는 ELU(Clevert 외, 2016), 정규화(normalization) 방법으로는 Weight Normalization(Salimans & Kingma, 2016)을 사용한다.
모든 컨볼루션은 인과적(causal)이므로, 오토인코더 전체가 스트리밍 방식으로 작동할 수 있다. 컨볼루션 블록 4개와 stride 인자 (4, 5, 6, 8)을 순차적으로 사용하고, 마지막에는 stride 2인 1D 컨볼루션을 적용하여, Mimi 인코더는 24kHz의 파형을 초당 12.5 프레임 및 (D=512) 차원을 갖는 잠재 표현으로 사영한다.
디코더는 인코더와 구조가 대칭적이지만, stride 컨볼루션 대신 transpose 컨볼루션을 사용하여 잠재 표현을 다시 24kHz 오디오로 복원한다. 잠재 공간은 Residual Vector Quantizer(RVQ)를 통해 이산화(discretize)되며, RVQ는 이전 양자화 단계에서 남은 잔차(residual)에 대해 벡터 양자화(vector quantization)를 반복적으로 적용한다. RVQ는 (Q)개의 양자화기를 갖추고 있으며, 각 코드북(codebook)은 ($N_A$)개의 중심(centroid)을 포함하므로, RVQ는 잠재 공간을 (${1, \dots, N_A}^{S\times Q}$) 형태로 이산화한다.
이 모델의 기준선(baseline) 학습은 Encodec 설정(Défossez 외, 2023)을 따라 reconstruction loss 및 adversarial loss의 조합을 사용하며, Mimi에서는 아래와 같이 몇 가지 중요한 변경을 가하였다.
Soundstream 방식의 토크나이저를 사용해서, RVQ 코드북으로 매칭하여 인코더 구성함
Transformer 기반 병목(Transformer-based bottleneck)
Mimi가 음성을 압축 표현하면서도 고품질 오디오를 재구성할 수 있도록 개선하기 위해, 양자화 직전 및 직후 병목 부분에 Transformer 모듈을 추가하였다.
- 이 부분이 SoundStream 과 다른 점인듯? 아래 SoundStream 그림 첨부
- 그림의 RVQ 앞뒤로 Transformer 추가한거 같음
Transformer는 8개의 레이어, 8개의 어텐션 헤드, RoPE 위치 인코딩, 250프레임(20초) 컨텍스트 제한, GELU 활성화 함수(Hendrycks & Gimpel, 2016a), 모델 차원 512, MLP 차원 2048로 구성하였다. 안정적 학습을 위해 LayerScale(Touvron 외, 2021)을 적용하여 대각 성분(diagonal values)의 초기화를 0.01로 설정했다. 두 Transformer 모두 causal masking을 사용하므로 전체 구조가 스트리밍 추론에 적합하다.
두 Transformer는 모두 지각적(perceived) 오디오 품질 향상에 효과가 있었으며, 특히 인코더의 Transformer는 하단에 설명할 semantic distillation 성능을 향상시키는 데 도움이 되었다(구체적 실험 결과는 Table 3 참조).
SoundStream과 또 다른점
WavLM과 같은 self-supervised 학습 기반의 음성 인코더를 이용하여 semantic 정보(언어적 의미)를 별도의 벡터 양자화 단계에서 "지식 증류(distillation)" 방식으로 명시적으로 반영합니다. 즉, 첫 번째 양자화 레벨이 semantic 정보를 강력히 포함하도록 학습됩니다.
-
WavLM과 같은 비인과적(non-causal) 사전학습 모델에서 추출된 semantic 임베딩을 Mimi의 인코더로부터 생성된 양자화 벡터에 증류(distillation)하여, semantic 정보가 압축된 표현 내에 강력하게 내재됩니다.
-
이렇게 명시적으로 semantic 정보를 담는 것은 오디오 언어 모델(Audio Language Model)과의 결합을 용이하게 합니다.
인과성 및 스트리밍(Causality and streaming)
위에서 언급한 하이퍼파라미터를 사용하여 Mimi는 인과적이며, 인코딩과 디코딩 모두 스트리밍 방식으로 사용 가능하다. 최초의 프레임 크기 및 전체 stride 값은 80ms이므로, 초기 80ms 오디오 프레임 입력 시 Mimi는 첫 번째 잠재 표현을 출력하여 즉시 80ms 오디오 출력으로 디코딩할 수 있다.
최적화(Optimization)
순수 컨볼루션 기반 코덱(예: SoundStream)은 Adam 최적화기(Kingma & Ba, 2015)를 사용하지만, Mimi는 Transformer 구조가 추가되어 weight decay 정규화가 필요하므로 AdamW 최적화기(Loshchilov & Hutter, 2019)를 사용하였다. 구체적으로 Transformer의 파라미터에만 ($5 \times 10^{-2}$)의 weight decay를 적용하였다. 학습률은 ($8\times 10^{-4}$), momentum decay는 0.5, 제곱 기울기(squared gradient)의 decay는 0.9로 설정했으며, 가중치의 지수 이동 평균(exponential moving average)을 위한 decay는 0.99이다.
배치 크기 128을 사용하며, 12초 길이의 랜덤 윈도우로 오디오 데이터를 자른 후 총 4M 단계(step) 동안 학습하였다. Transformer의 컨텍스트는 인코더의 최종 다운샘플링 레이어 이전 10초(250프레임)로 제한했으며, 디코더 역시 이에 대칭적으로 설정하였다.
양자화 비율(Quantization rate)
각각 (N_A=2048)의 크기를 갖는 코드북 8개((Q=8))를 사용하여 12.5Hz의 프레임 레이트로 동작하며, 이 경우 비트레이트는 1.1kbps가 된다. 잠재 표현의 원래 차원은 512이나, RVQ를 적용하기 전에 임베딩 차원을 256으로 축소(projection)한 후 디코딩 단계 직전에 다시 512 차원으로 복원하였다.
기존 연구들과 일관되게, bitrate scalability를 위해 quantizer dropout을 적용하였다(Zeghidour 외, 2022). 추가로 Kumar 외(2023)의 연구 결과를 따라 학습 중 일정 확률로 양자화를 적용하지 않을 때 오디오 품질이 개선됨을 참고하여, 시퀀스 단위로 학습 단계의 50%에서만 양자화를 적용하였다.
- 이는 Kumar 외(2023)와 다르게 모든 양자화를 거친 임베딩이 아니라 비양자화(연속) 임베딩을 디코더에 입력으로 전달한다는 의미이다.
- 학습 중 특정 확률(50%)로 양자화를 아예 수행하지 않는 stochastic quantization 기법을 추가하여 재구성 품질 향상 효과를 얻었습니다.
Table 3에서 확인할 수 있듯이 이 기법은 품질 측정 지표를 크게 개선하였으나, 인간 평가에서는 명확한 결론을 내리기 어려웠다. 다만, 비트레이트가 낮아질수록 효과가 더욱 현저함을 관찰했다.
Adversarial-only 학습(Adversarial-only training)
기준선 모델로는 Encodec의 설정(Défossez 외, 2023)과 동일하게 reconstruction loss와 adversarial loss를 조합하여 학습하였지만, 추가적으로 adversarial loss만 사용하는 순수 adversarial 방식의 학습도 실험하였다.
adversarial-only 학습은 객관적인 품질 지표(objective metrics)는 크게 떨어뜨렸으나, 개발 과정에서 확인한 결과 재구성된 오디오가 오히려 해당 지표로 예측된 것보다 훨씬 우수한 소리를 들려주었다.
Table 4에서의 주관적 평가(subjective evaluation)는 이를 뒷받침하며, adversarial loss만으로 학습할 경우 오디오 품질에서 주목할 만한 향상이 있었다는 점을 보여준다.
- adversarial loss 만 쓰는 것도 낫배드 하긴 하다는 것. 하지만 정배는 recon loss도 사용하는 것 같기는 할듯
3.3.2 분할 RVQ를 통한 의미-음향 토큰 학습 (Learning semantic-acoustic tokens with a split RVQ)
SpeechTokenizer(Zhang et al., 2024b)와 유사하게, 우리는 self-supervised 모델(WavLM; Chen et al., 2022)에서 추출된 의미론적(semantic) 정보를 RVQ의 첫 번째 레벨에 지식 증류(distillation)를 통해 전달한다.
WavLM은 16kHz 파형을 50Hz의 샘플링 주파수로 1024차원 임베딩으로 투영하는 반면
- 50Hz의 샘플링 주파수를 사용했다는 것은, 1초를 50개의 구간으로 구분하여, 각 1/50s=20ms당 하나의 임베딩으로 매칭한다는 것
- 즉 50Hz=초당 50개의 토큰을 사용한다는 것과 같은 개념
- 여기서는 WavLM은 1초가 50x1024로 투영되는 것
- 12.5hz=1/12.5=80ms마다 임베딩 생성
- 12.5hz 샘플링 주파수로 512차원이니까 2초당 25x512로 투영되는 것
- conv stride=4, kernel size=8의 평균 풀링 사용하여 시간을 맞춤
- 50Hz → 12.5Hz (50Hz ÷ 4 = 12.5Hz)
- 이 과정에서 평균 풀링을 인과적(causal) 방식이 아닌 비인과적(non-causal) 방식으로 진행합니다.
- 비인과적(non-causal) 평균 풀링이란, 특정 시점의 임베딩을 만들 때 미래의 임베딩 정보도 활용하는 방식입니다.
- 다만, 이는 학습 중에만 사용하고 실제 추론(실시간 동작)에서는 적용하지 않습니다.
- 예시로 들면
- 2초의 오디오 신호가 있으면 wavlm은 100x1024 (wi), mimi는 25x512 벡터 (mi)가 나올것이고 여기서 100->25로 매핑을 해야한다.
- 1024 vector w1,...,w8가 conv 입력으로 들어가서 1x1024 벡터가 나오고, 이를 linear projection을 통해 1x512 (m1)로 매핑이 되도록 하고
- stride=4로 둬서 w5,...,w12가 conv 입력으로 들어가서 1x1024 벡터가 나오고, 마찬가지로 linear projiection 1x512 (m2)로 매핑이 되는 식으로 진행이 된다는 것
학습 시, 입력 파형을 16kHz로 다운샘플링한 후 WavLM 임베딩을 얻고, 이를 stride 4 및 kernel 크기 8인 평균 풀링(average pooling)을 거쳐 12.5Hz에 맞춘 뒤, 이를 증류 타겟으로 사용한다.
- 흥미롭게도, 평균 풀링을 인과적(causal)이지 않은(non-causal) 방식으로 수행하는 것이 성능에 결정적으로 중요함을 관찰했다.
- 단, 이 임베딩은 오직 학습 시에만 사용되므로 스트리밍 추론 시 호환성 문제가 발생하지는 않는다.
- 첫 번째 RVQ 레벨의 출력 벡터와 병렬적으로, 이 벡터를 1024차원으로 선형 사상(linear projection)하여 변환된 WavLM 임베딩과의 코사인 거리(cosine distance)를 계산함으로써 지식 증류를 수행한다.
- RVQ면 여러 단계가 있는데, 여기서 첫 번째 코드북과 매핑을 시도한다는 것
Table 3에서 보이듯이, 이러한 증류 손실(distillation loss)은 품질을 목표로 하는 재구성 손실(reconstruction loss) 및 adversarial loss와 서로 충돌(conflict)하는 경향을 보인다.
- 실제로, 증류(distillation)는 첫 번째 양자화 단계에서 음성 인식력(phonetic discriminability; ABX 지표로 측정)을 상당히 향상시키지만, 반면 오디오 품질에는 부정적 영향을 미친다.
- 우리는 그 원인을 semantic 정보를 하나의 RVQ 내 첫 번째 레벨에 증류하는 것에 있다고 가정한다.
- 고차원의 양자화 단계(higher-order quantizers)들은 첫 번째 레벨 양자화의 잔차(residual)에 대해 동작하기 때문에,
- 첫 번째 단계가 음성 구분 능력(phonetic discriminability)을 얻기 위해 어쩔 수 없이 오디오 품질을 일정 부분 희생해야 하기 때문이다.
- 항상 distillation이 효과적인것은 아니라는 것. distillation 학습을 통해 semantic 쪽을 강화하는 개념으로 음성 인식력은 향상 오디오 품질은 저하시킴
우리는 이러한 문제를 해결하기 위해 분할 RVQ(split RVQ)를 제안한다.
- 즉, 8개 레벨의 단일 RVQ 대신, semantic 정보를 일반적인 VQ에 별도로 증류하고, 병렬적으로 7개 레벨의 RVQ를 따로 적용한다.
- 두 가지의 출력을 합산하여 사용하되, 두 출력 모두 복원(reconstruction)에 사용할 수 있도록 하였다.
- 이를 통해, acoustic 정보가 semantic 양자화의 잔차(residual)로부터 보존되어야 한다는 제약을 제거하였다.
- 이 구조는 그림 2에서 설명되어 있으며, Table 3에서 보듯이 semantic-acoustic 균형(trade-off)을 전체적으로 더욱 향상시킬 수 있는 방법이다.
- 그림처럼, 아예 병렬적으로 코드북으로 구성.
- wavlm을 distillation 하여 semantic 강화하는것은 그냥 VQ로 접근하고, 나머지는 RVQ로 접근한다는 것
3.4 생성적 오디오 모델링 (Generative Audio Modeling)
이제 기저 Helium 모델을 Mimi 코덱으로부터 제공되는 오디오 토큰을 모델링할 수 있도록 어떻게 확장할 수 있는지 설명한다. 현실적인 음성 대화 상호작용을 목표로 하기 때문에, 단일 오디오 스트림뿐 아니라 사용자와 시스템을 나타내는 두 개의 오디오 스트림을 동시에 모델링하는 방법도 제시한다.
마지막으로, 시스템 측에서 텍스트와 오디오 모달리티를 공동 모델링하여 상호작용의 품질을 향상시키는 새로운 기능인 Inner Monologue(내적 독백)에 대해 설명한다.
3.4.1 RQ-Transformer를 이용한 계층적 자기회귀 모델링 (Hierarchical autoregressive modeling with RQ-Transformer)
이산적(discrete)이고 길이가 (S)이며 기수(cardinality)가 (N)인 랜덤 시퀀스(sequence) ($U \in {1,\dots,N}^S$)를 생각해보자. 편의상 결정론적인(deterministic) 초기 토큰 값 ($U_0=0$)을 정의하자.
- 여기서 N은 vocab size고 S의 길이를 가진다는 표현
자기회귀적 모델링(autoregressive modeling)이란 모든 단계 ($1\leq s\leq S$)에 대해 조건부 분포 ($P[U_s|U_0,\dots,U_{s-1}]$)를 추정함으로써 결합 분포 ($P[U_1,\dots,U_S]$)를 추정하는 것을 의미한다. GPT(Radford 등, 2019) 또는 Helium과 같은 텍스트 언어모델들이 이 범주에 속한다.
음성 언어를 모델링할 때, 텍스트를 토큰화(tokenized)하여 사용하는 방식은 오디오 토큰보다 훨씬 더 압축된(compact) 표현을 제공한다.
- 3.3절에서 소개된 Mimi 코덱(codec)을 이용할 경우, 초당 12.5 Hz 프레임 레이트(frame rate)에 Q=8개의 코드북(codebook)을 사용하게 되어 초당 100개의 타임스텝(timestep)을 생성해야 한다.
- 5분 분량의 오디오를 모델링하려면 총 30,000개의 타임스텝이 필요하며,
- 이는 매우 큰 계산 비용을 요구하고 초당 100개의 토큰을 생성하는 것은 스트리밍 추론(streaming inference)과도 호환되지 않는다.
- 비교하자면, 영어 발화(speech)는 초당 약 3~4개의 텍스트 토큰으로 표현될 수 있다.
- 1초의 오디오 음성, 12.5Hz 프레임 사용 => 초당 12.5개의 토큰인데, 코드북이 8개이므로 초당 100개의 토큰을 사용한다고 보면 됨.
- 5분의 음성 오디오면 30,000 토큰을 사용하는 것. 즉 이는 스트리밍 추론이 매우 힘들고, 텍스트 토큰과 비교해서 너무 많다는 문제점이 존재
우리는 단일 시퀀스 ( ($U_s$) ) 뿐 아니라 여러 하위 시퀀스(sub-sequence)들, 예를 들어 서로 다른 오디오 코드북 또는 선택적으로 텍스트 스트림까지 모델링하는 데 관심이 있다. 이를 위해 하위 시퀀스를 ( $1 \leq s \leq S $), ( $1 \leq k \leq K$ )인 ( $V_{s,k}$ )로 쌓아놓을 수 있다.
- 여기서 s는 time step, v는 depth (quantizer level)을 의미한다
- s=1, v=3 첫 번째 토큰의 3번째 코드북에 해당하는 토큰? 이런 개념임
유사하게 모든 하위 시퀀스에 대해 결정론적인 초기 토큰 값 ( $V_{0,k} = 0$ )을 정의한다. 각 ( $1 \leq s \leq S$ ), ( $1 \leq k \leq K$ )에 대해, ( $V_{s,k} \in {1,\dots,N_k}$ )이며 여기서 ( $N_k$ )는 k번째 하위 시퀀스의 기수를 의미한다. K개의 시퀀스를 하나로 펼쳐(flatten) 단일 시퀀스로 만들 수도 있지만, 이렇게 하면 예측 횟수가 K배 늘어난다. Lee 등(2022)은 시간 차원에 큰 모델을, K 차원에 더 작은 자기회귀 모델을 결합하여 RQ-Transformer를 구성하는 방식을 제안하였다. 이후 Yu 등(2024)은 바이트 수준(byte-level) 모델링에 대해 비슷한 방식을 제안했으며, Yang 등(2023) 및 Zhu 등(2024)은 이를 오디오 토큰 모델링에 적용하였다.
RQ-Transformer는 그림 3에 나타난 것처럼 두 개의 트랜스포머 모델로 구성된다. 여기에는 Temporal Transformer(시간적 트랜스포머, 예를 들어 3.2절에서 설명한 Helium과 동일한 구조를 가진 것)와 크기가 작은 Depth Transformer(깊이 트랜스포머)가 포함된다.
- Temporal Transformer의 함수를 ( $\text{TrTemp}$ ), Depth Transformer의 함수를 ( $\text{TrDepth}$ )라 한다.
- 즉 하나의 Transformer가 아닌, TrTemp와 TrDepth Transformer 2개를 사용하는 개념인데
- TrTemp은 여기서 만든 Helium 모델로 초기화 하는거 같고 TrDepth는 랜덤초기화 한다고 함
간단히 하기 위해 모든 스텝 ( $s \leq S$ )에 대해 ( $V_s=(V_{s,1},\dots,V_{s,K})$ )를 정의하여 s단계에서의 모든 하위 시퀀스의 값을 나타낸다. 주어진 시퀀스의 스텝 ( $1 \leq s \leq S$ )에 대해, Temporal Transformer는 다음과 같은 시간적 컨텍스트 벡터(context vector)를 매핑한다.
- 여기서 Vk는 즉 8개의 토큰을 가진 것이고, 각각의 토큰은 다른 코드북에 해당하는 것으로 같은 index라도 다른 벡터로 매핑이 되는 것
- 이거를 하는 이유가, V0~Vs-1의 토큰 모두에 대한 시간적 정보를 의미하는 벡터 zs을 추출한 것
- 여기서 V0, ..., Vs-1은 각각 스텝에서의 토큰 임베딩을 다 더한 값이라 보면 됨
또한 하위 시퀀스 인덱스가 ( $1<k\leq K$ )일 때, Depth Transformer는 ( $z_s$ )와 ( ($V_{s,1},\dots,V_{s,k-1})$ )을 모두 매핑하여 로짓(logit)을 추정한다.
- zs을 통해, 0~s-1 time step에 해당하는 정보를 하나로 만들고, s time step에 해당하는 토큰에서는 Vs,1...,Vs,k-1을 통해서 Vs,k을 예측하도록 학습하게 하는 것
- zs을 안쓰면 너무 많은 토큰을 사용해야 하기 때문에
추가로, ( $l_{s,1} = \text{Lin}(z_s) \in \mathbb{R}^{N_1}$ )로 정의하며, 여기서 Lin은 별도의 선형 레이어를 나타낸다. 우리는 다음 단계에 대해 이전 단계의 모든 하위 시퀀스와 현재 단계의 이전 하위 시퀀스를 조건으로 한 조건부 분포를 근사하도록 ($\text{TrTemp}, \text{TrDepth}, \text{Lin}$)을 학습시킨다.
중요한 점은 Temporal Transformer에서의 스텝 수가 항상 ( S )로 유지된다는 것이며, ( $K\cdot S$ )가 아니다. 그리고 Depth Transformer에서의 스텝 수는 최대 ( K )이다.
실제로 Temporal Transformer는 각 스텝 ( s )마다 입력으로 직전 단계의 ( $V_{s-1}$ )의 값들을 나타내는 K개의 임베딩 테이블을 합산하여 받는다.
- ( $1<k\leq K$ )일 때 Depth Transformer는 ( $z_s$ )와 이전 단계의 ($V_{s,k-1}$ )를 나타내는 임베딩의 합을 입력으로 받는다.
- 즉 Vk는 8개의 코드북 벡터를 가지게 되는데, 이를 하나의 합으로 합쳐서 Transformer 입력에 넣게 된다.
- RVQ이기 때문에 residual codebook 합은 그렇다 쳐도 semantic token까지 합을 하게 모델링을 했네
표 1에서 자세히 설명된 대로 우리의 Depth Transformer는 6개의 레이어와 1024 차원의 임베딩, 16개의 어텐션 헤드로 구성되어 있다. Lee 등(2022), Yang 등(2023), Zhu 등(2024)과 달리, 우리는 Depth Transformer 내의 선형 레이어 및 완전 연결 레이어에 대해 하위 시퀀스 인덱스 ( k )별로 서로 다른 파라미터를 사용한다. 이는 각 하위 시퀀스가 다른 변환을 요구할 수 있기 때문이다. Depth Transformer의 작은 크기로 인해, 이 파라미터 변경은 학습과 추론 시간에 큰 영향을 미치지 않으며, 표 6에서 이러한 depthwise 파라미터화가 유익하다는 것을 보여준다.
3.4.2 오디오 모델링 (Audio modeling)
3.3절에서 설명한 오디오 코덱 Mimi는 초당 12.5 프레임의 레이트(frame rate)로 총 ( Q=8 )개의 하위 시퀀스(코드북)를 출력한다. 시간 ( t ), 코드북 단계 ( q )에 대해 이 하위 시퀀스를 ( $A_{t,q} \in {1, \dots, N_A}$ )로 나타내며, 여기서 ( $T = 12.5 \times duration$ ), ( $1 \leq t \leq T$ ), ( $1 \leq q \leq Q$ )로 정의한다. 우리는 RQ-Transformer가 모델링하는 다중 시퀀스(multi-sequence) ( V ) 안에 이 오디오 하위 시퀀스를 삽입한다.
- 즉 이전 섹션에서 말한게 실제로는 As,k이고 이것이 delay을 활용해서 Vs,k로 바뀌어서 Transformer로 들어가게 된다는 것
앞서 3.3.2절에서 자세히 설명한 대로, 첫 번째 코드북 ( $A_{t,1}$ )은 semantic(의미적) 정보에 해당하며, 나머지 코드북은 acoustic(음향적) 특징을 나타낸다.
Acoustic Delay (음향적 지연)
우리는 초기 단계에서 단순히 ( V = A )로 모델링하는 실험을 진행했다. (이전 섹션처럼)
그러나 semantic(의미적) 토큰과 acoustic(음향적) 토큰 사이에 약간의 지연(delay)을 도입하는 것이 더 안정적인 생성을 유도함을 발견하였다.
- Copet et al.(2023)는 지연(delay)을 도입하는 것이 과거 정보를 조건으로 했을 때 특정 타임스텝의 하위 시퀀스 간의 의존성을 감소시켜, 더 약한(작은) 모델이 결합 분포 ($P[V_{s,k}|V_0, \dots, V_{s-1}]$)를 근사할 수 있도록 한다고 보고했다.
- Lemercier et al.(2024)는 특정 타임스텝의 하위 시퀀스 간의 상호 정보(mutual information)와 생성 품질 간의 관계를 보여주었다:
- 자연스럽게도, 하위 시퀀스 간의 상호 의존성이 더 복잡해질수록, 이를 잘 모델링하기 위해 더 강력한 모델이 필요하게 된다.
3.3절에서 설명한 바와 같이, semantic(의미적) 및 acoustic(음향적) 특징 사이에 1 또는 2 스텝의 지연(delay)을 도입하면 생성 품질이 크게 향상됨을 5.3절에서 보여준다.
- 이를 통해 더 큰 모델인 Temporal Transformer가 semantic(의미적) 및 acoustic(음향적) 특징 간의 상호 의존성을 모델링할 수 있게 된다.
- 형식적으로, 지연(delay) ($\tau \in \mathbb{N}$)가 주어졌을 때, 모든 단계 (s)에 대해 다음과 같이 나타낼 수 있다:
- time step s에서 Vs,1=As,1는 현재 스텝에 맞는 semantic 정보는 그대로 사용
- Vs,q=As-tau,q => 예로 V2,3=A1,3이 되는 것인데 (tau=1) 이전 time step의 acoustic 코드북 정보를 사용한다는 것
- tau는 1 또는 2 스텝을 사용한다는 듯
- 실제로 이게 실험적으로 좋다는 것으로 보여주긴 하지만
- 직관적으로 오디오 생성 과정은 일반적으로 semantic → acoustic의 계층적(hierarchical) 프로세스입니다.
- 즉, 의미적(semantic) 정보가 먼저 결정된 후, 그것을 바탕으로 acoustic 정보(음향적 세부사항)가 결정되는 것이 자연스러운 순서입니다.
RQ-Transformer를 이용하여 오디오를 모델링하는 방식은 Yang et al.(2023)와 Zhu et al.(2024)에서도 성공적으로 사용되었다.
- 우리는 본 연구에서 Depth Transformer에서 코드북별로 서로 다른 파라미터를 사용하는 방식과, acoustic delay(음향적 지연)의 사용법을 새롭게 소개하였다.
- Zhu et al.(2024)는 semantic 토큰을 모두 먼저 생성한 후 acoustic 토큰을 생성하는 방식이었으나, 우리는 semantic 토큰과 acoustic 토큰을 함께 동시에 생성한다.
- 이를 통해 최초로 semantic 및 acoustic 토큰을 동시에 스트리밍(streaming) 방식으로 모델링할 수 있게 되었다.
3.4.3 다중 스트림 모델링 (Multi-stream modeling)
단일 오디오 스트림만을 모델링하는 것은 완전한 대화를 표현하기에 충분하지 않다. 우리가 제안하는 프레임워크는 두 명의 화자가 참여하는 대화까지도 모델링할 수 있도록 확장될 수 있다.
두 오디오 스트림을 ( $(A_{t,q}$) ) 및 ( $(A'_{t,q})$ )라 할 때, 우리는 양쪽 오디오 스트림에 음향적 지연(acoustic delay)을 적용한 다음, 이 둘을 결합하여 하나의 시퀀스 ( V )로 확장한다.
이는 앞서 소개한 식 (4)를 확장한 형태이다. 실제로 이때 ( A )는 Moshi의 음성을 나타내고, ( A' )는 사용자의 음성을 모델링한다.
앞에서는 2가지 학습 과정이 있었다고 보면 됨- 오디오 토크나이저 학습하는 과정 1개의 semantic codebook, 7개의 RVQ codebook을 adversarial, reconstruction 으로 학습하는 과정
- 이를 활용해서 temporal transformer, depth transformer을 학습하는 과정
3.4.4 내부 독백 (Inner Monologue)
순수한 오디오 도메인에서 작동하는 것만으로도 이미 상당히 설득력 있는 결과를 제공하지만(표 7 참고), Moshi가 자신의 음성을 텍스트로도 모델링하도록 하면, 생성된 결과물의 언어적 품질을 향상시키는 구조적 기반이 제공된다는 사실을 관찰하였다.
형식적으로, 우리는 Whisper를 사용하여 Moshi의 음성 오디오에 해당하는 텍스트를 전사한 후, 이를 SentencePiece 토크나이저로 처리하여 얻은 텍스트 토큰 시퀀스에서 파생된 텍스트 스트림 ($W \in {1, \dots, N_W}^T$)를 정의한다.
- 이를 (V)의 첫 번째 하위 시퀀스로 삽입하여, 생성 시맨틱 토큰의 프리픽스(prefix)로 작용하도록 한다.
- 즉 학습하기 위해서 하는 과정으로 기본적으로 학습 데이터는 오디오 데이터이다
- 이를 whisper을 통해 텍스트로 전사하고 텍스트 토크나이저를 태워서 활용하겠다는 것
이는 Borsos 등(2022)이 소개한 계층적 시맨틱-어쿠스틱 생성 방식을 확장한 형태로 볼 수 있다. 사용자의 오디오 스트림에 대한 텍스트 표현은 실시간으로 전사하는 것이 어려울 뿐 아니라, 외부 ASR 시스템에 의존하는 것이 우리의 end-to-end 음성-음성 접근방식과 충돌하기 때문에 사용하지 않는다. 섹션 5.3의 제거 연구(ablation studies)는 Moshi의 설계 결정 중 내부 독백이 생성된 음성의 품질에 가장 중대한 영향을 미친다는 점을 보여준다.
텍스트와 오디오 토큰의 정렬(Aligning text and audio tokens)
오디오 토큰과 동일한 12.5Hz의 일정한 프레임 속도로 동작하는 텍스트 토큰을 결합하기 위해, 우리는 이를 해당 프레임 속도에 정렬해야 한다.
이를 위해 Whisper에서 제공하는 단어 단위 타임스탬프를 활용한다.
- 전사본의 i번째 단어는 ($n_i \in \mathbb{N}^*$)개의 텍스트 토큰 ($w_{i,j}, j \le n_i$)과 시작 인덱스 ($t_i \in {1, \dots, T}$)에 매핑되며, 이 시작 인덱스는 12.5Hz의 프레임 속도로 나눈 시작 타임스탬프로 정의된다.
- whisper로 텍스트 전사하면 단어별 음성 구간정보가 떨어지나봄?
- 음성에서 12.5hz=80ms=0.08초 당 하나의 토큰이므로, 예시로
- Hello = 0초 ~ 0.4초
- I'm = 0.5초 ~ 0.7초
- Moshi = 0.8초 ~ 1.2초면
- Hello에 해당하는 오디오 토큰은 0.5/0.08=6개정도 이므로 0~5번째 (6개) 음성토큰이 Hello 의 text token에 매칭이 되는 식이다
우리는 두 개의 특별 토큰인 PAD와 EPAD를 정의하는데, 이는 일반적인 단어 토큰에는 절대 나타나지 않는다.
- 우리는 단어가 시작할 때, 해당 단어의 텍스트 토큰 뒤에 다음 단어 전까지 PAD로 채운다.
- 다음 단어 앞에 EPAD를 삽입하여 패딩의 끝을 나타낸다.
- 필수적인 것은 아니지만, 이는 단어 종료 결정과 다음 단어 결정의 문제를 두 단계로 나누어 모델에 유용한 지침을 제공하는 것으로 관찰되었다.
우선, 시퀀스 (W_t)는 모두 PAD 토큰으로 초기화된다. 예를 들어, ($\forall t, W_t \leftarrow PAD$)이다. 그런 다음 각 단어 (i)와 시작 인덱스 (t_i)에 대해 반복적으로 업데이트한다.
단, 만약 ($t_i = 1$)이라면, 대신 인덱스 1에 EPAD를 삽입하고 텍스트 토큰을 한 칸씩 뒤로 이동한다.
- 이전 단어의 텍스트 토큰을 덮어쓸 가능성이 있으면 EPAD 토큰을 삽입하지 않는다.
- 텍스트 토큰은 오디오 토큰보다 더 간결하므로 일반적으로 단어 간의 겹침은 발생하지 않는다.
- 영어 대화형 음성에서는 패딩 토큰이 전체 토큰의 약 65%를 차지하는 것으로 나타났다.
예시로 아래처럼 텍스트와 음성 토큰(프레임)을 매칭할 수 있겠다
- 그림 4의 입력도 참고
- I'am과 Moshi 사이에는 PAD, EPAD 들어갈 공간이 없음
| 프레임 | 시간(초) | 텍스트 토큰 | 설명 |
|---|---|---|---|
| 0 | 0.00-0.08 | Hel | "Hello," 시작 |
| 1 | 0.08-0.16 | lo | |
| 2 | 0.16-0.24 | , | |
| 3 | 0.24-0.32 | PAD | 단어 끝난 후 PAD |
| 4 | 0.32-0.40 | PAD | |
| 5 | 0.40-0.48 | EPAD | 다음 단어("I'm") 전 EPAD |
| 6 | 0.48-0.56 | I | "I'm" 시작 |
| 7 | 0.56-0.64 | ' | |
| 8 | 0.64-0.72 | m | |
| 9 | 0.72-0.80 | PAD | 단어 끝난 후 PAD |
| 10 | 0.80-0.88 | Mo | "Moshi." 시작 / EPAD을 쓰기에는 다음 토큰을 침범하기 때문에 pass |
| 11 | 0.88-0.96 | shi | |
| 12 | 0.96-1.04 | . | |
| 13 | 1.04-1.12 | PAD | |
| 14 | 1.12-1.20 | PAD | 단어 끝난 후 PAD |
근데 반대로 음성 토큰은 짧고 텍스트 토큰이 긴 상황에 대해서는 언급하지 않음
스트리밍 ASR 및 TTS 도출(Deriving streaming ASR and TTS)
여기서는 pre-training 모델로만 가지고 ASR, TTS 하는 것을 소개하는 것
텍스트 시퀀스 ($W_t$)와 오디오 토큰 ($A_{t,q}$) 사이에 약간의 지연(delay)을 추가로 도입할 수 있다.
- 이는 생성된 오디오 콘텐츠에 대해 어떤 모달리티에서 결정을 내릴지 제어한다.
- 오디오가 텍스트보다 앞서면, 이전 단계에서 샘플링된 오디오가 텍스트 내용을 결정한다.
- 특히 텍스트 토큰만 샘플링하고 모델의 예측을 무시하면서 실제 오디오 토큰을 사용하면, 정확한 단어 정렬을 제공하는 스트리밍 자동 음성 인식(ASR) 모델이 도출된다.
- 반대로, 텍스트가 오디오 토큰보다 앞서도록 텍스트 지연을 변경하면, 텍스트 내용이 오디오 콘텐츠를 결정하게 된다.
- 다시 말해, 적절히 패딩된 텍스트 토큰 시퀀스가 주어지면, 스트리밍 TTS(Text-To-Speech) 모델을 얻을 수 있다.
섹션 5.7의 실험에서는 ASR에서 TTS 모델로의 전환이 손실(loss), 아키텍처 또는 훈련 데이터 변경 없이 단일 지연 하이퍼 파라미터만으로 가능함을 보여준다.
Moshi의 결합 시퀀스 모델링(Joint sequence modeling for Moshi)
멀티 스트림과 내부 독백을 결합하여 모델링할 최종 시퀀스 집합 (V)는 다음과 같이 정의된다:
총 스트림 수는 (K = 2Q + 1)이며, 실험에서는 (Q = 8)을 사용했다. 이에 대한 요약은 그림 4에 제공되어 있다.
Moshi의 추론(Inference of Moshi)
식 (6)에 의해 주어진 결합 시퀀스는 훈련 시 모델링 태스크의 목표이다. 임의의 시점 ( s )에서 모델은 입력으로 ($0, V_1, \dots, V_{s-1}$)를 받아 확률 분포 추정치 ($\hat{V}_s$(0, $V_1$, $\dots$, $V{s-1}$))를 출력한다.
추론 시, Moshi의 출력에 대응되는 모든 하위 시퀀스 인덱스에 대해, 즉 Moshi 음성에 대응하는 텍스트 토큰의 경우 (k=1), Moshi의 오디오 토큰에 대해서는 ($k \in {2,\dots,2+Q}$)에 대해 ($\hat{V}_{s,k}$)로부터 샘플링한다.
- 실제 적용 환경에서는 사용자 오디오($(k > 2+Q)$)에 대한 예측은 무시하고, 실제 사용자의 오디오를 대신 사용한다.
- 그러나 사용자 스트림을 출력으로 모델링하면, 섹션 5.6의 오프라인 평가에 필요한 시뮬레이션된 대화를 생성할 수 있다.
- 토큰 셋이라는것 (텍스트, speaker오디오, user오디오) 모든것들을 말한것
- 근데 유저의 입력은 실시간으로 들어오는것이기 때문에 굳이 예측할필요 없이, 그냥 실제 들어온 유정 오디오 토큰을 쓰면 되고
- 유저 오디오가 없을때는 PAD와 같은 것들이 들어간다고 보면 될듯
- 실질적으로는 텍스트와, moshi(speaker) 오디오 부분에 해당하는 것만 예측한다는 것
- 여기서 텍스트가 inner monologue (내부 독백)의 개념이 되는것
흥미롭게도, 사용자와 Moshi 간의 화자 전환(turn change)에 대한 명확한 경계는 존재하지 않는다. Moshi는 항상 말할 수 있고 들을 수 있으며, 필요하면 두 가지 모두를 동시에 할 수도 있다. 특히 사용자가 말하는 동안 Moshi가 침묵할 때, Moshi의 오디오 토큰은 정해진 고정값이 아니라 자연스러운 침묵("natural silence") 형태의 거의 무음에 가까운 파형으로 디코딩된다. 동시에 Moshi의 텍스트 스트림은 PAD 토큰으로 채워진다. 그 결과 텍스트 스트림을 통해 Moshi를 제어하는 흥미로운 방법을 제공할 수 있다. 예를 들어 EPAD 토큰을 강제로 샘플링하면 Moshi가 즉시 말을 시작하도록 만들 수 있다.
챗지피티로 한번더 정리
🎯 질문 1: 입력 구성 (TrTemp 입력 부분)
네, 맞습니다.
-
Temporal Transformer (TrTemp)의 입력 ($V_{0}, V_{1}, \dots, V_{s-1}$) 에는 모든 모달리티의 정보가 동시에 들어갑니다.
-
즉, 각 시점 (s) 마다 Moshi speaker의 "Text + Semantic + Acoustic token"과, User의 "Semantic + Acoustic token"을 모두 더해서 하나의 벡터로 만들어 입력합니다.
-
이를 통해 각 시점에서 temporal context vector ( $z_s$ ) 를 만들어냅니다.
정리하면:
-
이렇게 구성된 입력 ( $V_s$ )를 통해 Temporal Transformer (TrTemp)가 각 시점의 context vector ( $z_s$ ) 를 출력합니다.
🎯 질문 2: TrDepth에 입력되는 형태
네, 맞습니다.
-
Temporal Transformer의 출력 ( $z_s$ )는 Depth Transformer (TrDepth)에 입력됩니다.
-
이 Depth Transformer는 ( $z_s$ )를 받고, 추가적으로 같은 시점 (s)의 이미 예측된 하위 토큰을 함께 받아서 다음 하위 토큰을 순차적으로 예측합니다.
예를 들면, Depth Transformer는 다음과 같은 방식으로 동작합니다:
-
먼저, ($z_s$)를 입력받아 Moshi speaker의 텍스트 토큰 ($V_{s,0}$)을 예측
-
그다음, ($z_s$)와 ($V_{s,0}$)를 받아 Moshi semantic 토큰 ($V_{s,1}$)을 예측
-
그다음, ($z_s, V_{s,0}, V_{s,1}$)을 받아 Moshi acoustic 토큰 ($V_{s,2}, \dots, V_{s,Q}$)를 예측
-
마지막으로, 같은 방식으로 User의 semantic/acoustic 토큰을 예측 (학습할 때만 예측하고, 실제 인퍼런스에선 무시함)
🎯 질문 3: 학습 목표 (Next token prediction)
네, 정확히 이해하셨습니다.
-
Moshi 모델은 next-token prediction을 통해 학습합니다.
-
즉, 이전에 나타난 모든 정보(($V_0, \dots, V_{s-1}$))를 바탕으로 다음 토큰 (V_s)을 예측하는 방식으로 학습됩니다.
-
Temporal Transformer는 이전 모든 정보를 이용하여 ($z_s$)를 만들고,
-
Depth Transformer는 이 ($z_s$)와 이미 예측한 하위 토큰을 사용하여 다음 하위 토큰을 순차적으로 예측합니다.
🎯 질문 4: ASR로 활용한다는 것의 의미
ASR로 활용된다는 것은 다음의 상황입니다.
-
ASR 모드에서는 이미 실제 Moshi의 음성(오디오 토큰)이 주어진 상태입니다.
-
Moshi의 음성(semantic+acoustic token)이 주어져 있기 때문에, 오디오 정보는 이미 확정된 정보로서 입력으로 사용됩니다.
-
따라서 이 확정된 오디오 정보를 이용하여 모델은 "이 오디오가 말하는 내용의 텍스트(token)"를 예측합니다.
-
즉, 모델은 ($z_s$) (오디오 정보 포함)를 받아서 Moshi의 Text 토큰 (($V_{s,0}$))만을 예측하면 됩니다.
정리하면:
| ASR 모드 | 입력 (확정됨) | 출력 (예측해야 함) |
|---|---|---|
| Moshi | 오디오 토큰(semantic+acoustic) | 텍스트 토큰 |
✅ ASR의 입력은 오디오만, 출력은 텍스트입니다.
🎯 질문 5: TTS로 활용한다는 것의 의미
반대로 TTS 모드는 다음 상황입니다.
-
TTS 모드에서는 텍스트가 이미 주어진 상태입니다.
-
즉, 모델은 이미 확정된 Moshi의 내부 독백(Text token)을 입력으로 받습니다.
-
따라서 모델은 입력된 텍스트를 보고 이를 오디오로 만들어 내야 합니다. 즉, Semantic 및 Acoustic token을 순차적으로 예측합니다.
-
User의 semantic/acoustic은 실제로 존재하지 않으므로 예측하지 않아도 됩니다.
정리하면:
| TTS 모드 | 입력 (확정됨) | 출력 (예측해야 함) |
|---|---|---|
| Moshi | 텍스트 토큰 | 오디오 토큰(semantic+acoustic) |
✅ TTS의 입력은 텍스트, 출력은 오디오입니다.
🎯 질문 6: User 부분의 역할 (ASR, TTS 인퍼런스 시)
-
학습 과정에서는 User 부분도 입력으로 들어가 함께 학습됩니다.
-
하지만, 실제 인퍼런스 시에는 User 부분은 예측할 필요가 없습니다. (학습 시에만 예측 손실(loss)을 계산하는데 사용됩니다.)
-
즉, ASR, TTS 상황 모두 Moshi 본인의 스트림만을 활용합니다.
실제 ASR/TTS 인퍼런스 시점의 상황은:
-
User의 입력은 인퍼런스 시 실제로는 없는 상태입니다. (사용자의 발화를 듣고 Moshi의 답변을 만들 때만 사용됨)
-
Moshi speaker 부분만이 모델의 진짜 출력이 됩니다.
4 데이터셋 및 학습 (Datasets and Training)
4.1 텍스트 데이터 (Text Data)
우리가 사용하는 학습 데이터는 고품질의 데이터 소스와, CommonCrawl에서 추출하여 필터링한 웹 데이터의 조합으로 구성된다.
구체적으로, 우리의 데이터셋 중 12.5%는 다음과 같은 엄선된 데이터 소스로부터 수집되었다:
-
위키피디아(Wikipedia)
-
위키북스(Wikibooks)
-
위키소스(Wikisource)
-
위키뉴스(Wikinews)
-
StackExchange
-
pes2o라는 과학 논문 모음집
위키피디아의 경우, 동일한 데이터를 여러 번 반복하지 않고 다양한 시점에서의 데이터를 확보하기 위해 2017년, 2018년, 2019년, 2021년, 2022년에 각각 생성된 다섯 개의 서로 다른 덤프(dumps)를 사용하였다.
데이터셋의 나머지 87.5%는 CommonCrawl에서 수집되었으며, 이 데이터는 앞서 섹션 3.2.2에서 설명한 전처리 파이프라인을 통해 필터링되었다. 우리가 사용한 CommonCrawl 데이터는 다음과 같은 총 10개의 크롤(crawl)에서 추출한 것이다:
-
2018-30
-
2019-04
-
2019-30
-
2020-05
-
2020-34
-
2021-04
-
2021-31
-
2022-05
-
2022-33
-
2023-40
즉, 우리가 사용하는 텍스트 데이터는 소규모의 신뢰할 수 있는 고품질 데이터와, 대규모 웹 데이터를 결합하여 풍부한 학습 데이터를 구성한 것이다.
4.2 오디오 데이터 (Audio Data)
우리는 약 700만 시간의 오디오 데이터 집합을 사용하는데, 이를 **비지도 오디오 데이터셋(unsupervised audio dataset)**이라 부른다.
- 이 데이터는 일반적으로 접근 가능한 오디오 콘텐츠들로 구성되어 있으며, 그 대부분이 영어 음성을 포함하고 있다.
- 우리는 이 데이터를 **Whisper 모델(Radford 등, 2023)**의 large-v3 버전을 사용하여 전사(transcription)한다.
이 데이터는 오디오 사전 학습(audio pre-training) 단계에 사용되며, 이 단계에서 우리는 섹션 3.4.3에서 설명한 멀티 스트림(multi-stream) 방식을 적용하지 않고, 대신 모든 화자가 하나의 오디오 스트림에 동시에 표현된 형태를 사용한다.
- 즉, 이 비지도 오디오 데이터셋은 두 화자의 음성이 하나의 오디오 채널에 섞여 있어서, 화자를 별도의 채널로 분리하지 않은 상태의 데이터입니다.
- 마찬가지로, 섹션 3.4.4에서 설명한 텍스트 스트림은 모든 화자의 발화를 하나로 나타낸다.
- 모든 오디오는 24kHz로 리샘플링(resampling)되고 모노(mono) 채널로 다운믹스(downmixing)된다.
멀티 스트림을 사용하기 위해서는 모델이 동시에 듣고 말할 수 있는 능력을 학습해야 한다.
- 이를 위해 우리는 추가적으로 **Fisher 데이터셋(Cieri 등, 2004)**을 활용한다.
- 이 데이터셋은 2000시간 분량의 전화 통화를 녹음한 데이터로, 참가자들이 임의로 짝지어진 상태에서 주어진 주제에 대해 대화한 내용을 포함하고 있다.
- Fisher 데이터셋의 주요 특징 중 하나는 대화 양쪽 화자의 음성이 서로 분리된 채널에 녹음되어 있어 Moshi 모델에게 실제로 두 개의 독립된 오디오 스트림(각 화자의 음성)을 제공할 수 있다는 점이다.
- Fisher 데이터셋의 원본 오디오는 8kHz로 녹음되었으며, 우리는 이를 **AudioSR 모델(Liu 등, 2023a)**을 사용해 24kHz로 업샘플링(upsampling)한다.
- 생각해보면 이런 형태의 오디오 데이터가 많지는 않을거 같기는 함 ㅠ
마지막으로, 두 사람 간의 자연스럽거나 각본화된(scripted) 대화를 녹음한 총 170시간 분량의 오디오 데이터를 추가로 수집하여, 이를 **지도 멀티 스트림 데이터셋(supervised multi-stream dataset)**이라고 부른다.
- 이 데이터셋의 녹음 역시 각 화자의 음성이 별도의 채널로 나누어져 있어, Fisher 데이터셋만 사용했을 때의 한계를 극복하고 음질 및 성능을 더 개선하는 용도로 활용한다.
- 우리는 이 데이터셋을 직접 Moshi 모델의 훈련에 사용하는 대신, 실제적인 멀티 스트림 TTS 모델을 학습시키는 데 사용하며,
- 실제 대화 기록(transcripts)을 사용하여 Helium 모델의 추가적인 파인튜닝(fine-tuning)을 수행하는 데 이용한다 (섹션 4.3 및 4.4에서 추가적으로 설명한다).
Fisher와 지도 멀티 스트림 데이터셋 모두에서, 우리는 각 데이터에서 임의로 한 명의 화자를 **메인 화자(main speaker, 즉 Moshi 모델이 말하는 역할)**로 지정하고, 나머지 한 명의 화자를 두 번째 오디오 스트림(user stream)으로 설정한다.
- Fisher 데이터셋의 경우, 텍스트 스트림은 메인 화자만의 전사 내용을 담고 있다.
- 정확한 타임스탬프를 확보하기 위해, 긴 침묵이 존재하는 각 화자의 스트림에서도 **whisper-timestamped 패키지(Louradour, 2023)**와 Whisper의 medium 모델을 이용하여 타임스탬프를 얻는다.
4.3 음성-텍스트 지시 데이터 (Speech-Text Instruct Data)
초기 실험에서, Open Hermes (Teknium, 2023)와 같은 텍스트 기반의 지시 데이터셋(text-based instruct datasets)을 사용하는 것은 음성 기반 대화 시스템의 지시 튜닝(instruct tuning)에 적합하지 않다는 것이 드러났다. 특히, URL과 같은 텍스트 형식은 TTS(text-to-speech)로 정확하게 렌더링하는 것이 거의 불가능했으며, 질문 및 응답 형식 또한 자연스러운 구어체 대화 흐름을 따르지 않는 경우(예: 글머리 기호, 긴 열거형 문장 등)가 자주 존재하였다.
대신 우리는 실제 대화 기록(transcripts)과 Open Hermes 데이터로 파인튜닝한 Helium 모델을 활용하여, 음성 기반 AI 모델과 사용자 간의 현실적인 상호작용 데이터를 생성하였다.
- 이어서 이 데이터를 우리가 개발한 멀티 스트림(multi-stream) 기반 스트리밍 TTS 모델(부록 C 참조)로 합성(synthesize)하여, 총 20,000시간 이상의 합성 음성 데이터를 생성했다.
- moshi 말고 직접 개발한 TTS 모델이 있나봄
Moshi 모델이 일관된 고유의 목소리를 가질 수 있도록, 전문 성우 한 명의 음성을 녹음하여 이를 TTS 엔진의 조건(condition)으로 사용하였다.
- 이 성우는 70가지 이상의 다양한 발화 스타일로 독백(monologue)을 녹음하였다(표 19 참조).
- 섹션 6.3에 보고된 음성 일관성 실험을 통해 확인한 결과, 지시 튜닝(instruction tuning) 단계에서 Moshi의 음성을 일관되게 유지하는 것만으로도 추가적인 제어 없이도 다른 음성을 사용하지 않게 하는 데 충분하였다.
- 이 단계에서, moshi의 음성이 일관되게 출력되도록 조절이 된다는 것
대화 기록(transcripts)을 생성하기 위해, 사용자와 Moshi 간의 다양한 종류의 상호작용을 담을 수 있도록 서로 다른 프롬프트(prompt)를 사용하였다.
- 먼저, 위키피디아나 StackExchange 글에서 발췌한 몇 가지 문단을 시작점(context)으로 하여, 일반적인 지식(general knowledge)에 대한 대화를 생성하였다.
- 이를 통해 Moshi가 역사, 요리 팁, 팝컬처와 같은 다양한 주제를 다룰 수 있도록 하였다.

이때 {{context}}는 위키피디아나 StackExchange의 단락이며, {{title}}은 해당 내용의 제목이다. 이후 아래 프롬프트를 통해 전체 대화 기록을 생성하였다:

또한, Moshi 자신과 Kyutai lab에 대한 정보를 제공하기 위해 관련 내용을 설명한 문단을 추가적인 맥락(context)으로 활용하였다.
둘째로, 상대방이 Moshi에게 특정한 목소리로 말할 것을 요청하는 상황(예: 화난 목소리, 해적처럼 말하기 등)을 포함한 상호작용(interaction) 데이터를 생성하였다.
- 우리의 첫 번째 전략은 Moshi가 특정 목소리로 스포츠, 동물 등의 고수준(high-level) 카테고리에 속한 어떤 엔티티(entity)에 대해 문장이나 독백(monologue), 시(poem)를 말하도록 지시받는 단일 발화(single-turn) 상호작용을 생성하는 것이다.
- 이때 상대방이 요청하는 목소리와 대상 엔티티(entity)는 서로 무작위로 선택되어 관련성이 없도록 하였다.
- 두 번째 전략은 다음과 같은 프롬프트를 이용하여 특정한 감정이나 발화 스타일에 대응하는 역할극(roleplaying) 상황을 생성하는 것이다:

목소리를 나타내는 형용사({{voice}})는 "happy", "surprised"와 같은 것이며, 등장인물({{character}})은 "detective", "superhero"와 같은 예시를 포함한다. 이후 다음 프롬프트로 상호작용을 생성하였다:

또한 Moshi가 단어를 잘못 발음하거나 잘못된 맞춤법(misspelling)을 포함하는 질문을 처리할 수 있도록, 상대방의 질문에서 의도적으로 오타를 넣고 Moshi가 다시 말해줄 것을 요청하거나 질문을 명확히 하도록 요청하는 대화도 생성하였다. 그 밖에도 잘못된 정보나 오해를 유발하는 사실("에펠탑은 베이징에 있나요?" 같은 잘못된 질문)이 포함된 질문을 생성하여 Moshi가 명확히 "아니오"라고 대답하며 정정하도록 훈련시켰다.
그 외 대부분의 생성된 대화는 사용자가 Moshi에게 긍정적인 답변을 받아야 하는 질문으로 이루어졌다. 우리는 또한 간단한 수학, 문법, 상식 퀴즈 형태의 질문과 답변을 단일 발화 형태로 생성하여, Moshi가 초기에 간단한 수학 연산과 같은 기본적인 사실적 작업(simple factual tasks)을 잘 수행하지 못했던 문제를 해결하였다. 마지막으로, 사용자가 비윤리적이거나 적절하지 않은(NSFW) 질문을 던질 때, Moshi가 이에 응답을 거부하는 안전성(safety) 관련 대화도 생성하였다.
4.4 훈련 단계 및 하이퍼파라미터
Helium 사전 훈련
훈련 단계 및 하이퍼파라미터의 개요는 표 1에 나와 있다. 각 단계에서 우리는 AdamW를 사용하며, 가중치 감쇠(weight decay)는 0.1, 모멘텀 감쇠(momentum decay)는 0.9, 제곱 그래디언트의 이동 평균 감쇠(decay)는 0.95를 설정했다. 모든 모델은 H100 GPU 상에서 FSDP 및 activation checkpointing을 사용하여 훈련했다. 텍스트 전용 언어 모델인 Helium은 4.2M 토큰(batch size)으로 구성된 배치 크기를 가지고 500k 스텝 동안 훈련했으며, 학습률은 선형 워밍업을 적용하여 3×10⁻⁴부터 시작해 코사인 감소(cosine learning rate schedule)를 사용했다.
Moshi 사전 훈련
그 다음 Moshi의 Temporal Transformer는 Helium으로 초기화하고, 섹션 3.4.1에 설명된 Depth Transformer는 무작위로 초기화했다. 우리는 먼저 섹션 4.2에 소개한 비지도 오디오 데이터셋에서 단일 스트림 오디오를 이용해 훈련했으며, 각 배치는 16시간의 오디오로 구성되고 각 배치 항목은 5분 시퀀스를 포함한다. 해당 텍스트 토큰은 30% 확률로 마스킹(masking)했다. 텍스트와 오디오 토큰 간의 딜레이(delay)는 -0.6초에서 +0.6초 사이에서 랜덤하게 설정했다.
pretraining에서는 텍스트가 먼저나오고 그런게 아닌 듯? 랜덤으로 delay시간을 준거 같은데 왜 그런거지?
또한 catastrophic forgetting(파국적 망각)을 방지하기 위해, 훈련 시간의 절반 동안은 Helium에서 사용된 것과 동일한 데이터셋에서 텍스트 전용 배치를 사용해 추가로 훈련을 수행했다. 총 1백만 스텝 훈련하며, 학습률은 Temporal Transformer에서 3×10⁻⁵, Depth Transformer에서는 2×10⁻⁴부터 시작하는 코사인 학습률 스케줄(선형 워밍업 포함)을 적용했다. 텍스트 전용 배치에서 오는 업데이트가 오디오 데이터로부터의 업데이트와 균형을 이루도록, 별도의 옵티마이저 상태를 사용했다. 오디오 배치에서 텍스트 스트림을 처리할 때는 텍스트 임베딩 및 텍스트 선형 레이어의 학습률을 0.75배만큼 곱해서 사용했다. 마지막으로, 오디오 배치에서는 패딩 토큰(padding token)이 대부분을 차지하기 때문에, 교차 엔트로피 손실에서 패딩 토큰의 가중치를 50% 감소시켰다.
Moshi 후처리 훈련
이전 단계에서 얻어진 모델을 기반으로, 이제 멀티 스트림 기능을 습득하도록 훈련했다. 먼저 PyAnnote를 사용해 비지도 오디오 데이터셋에서 diarization을 수행했다. 랜덤하게 하나의 스피커를 선택하고 이 스피커를 메인 스피커로 삼아, 다이어라이제이션을 기반으로 파형(waveform) 상의 바이너리 마스크(활성 스피커는 1, 비활성은 0)를 생성했다. 이 마스크로 인해 두 개의 파형(선택된 스피커 및 나머지 여러 스피커의 파형)이 생성되고 각각 독립적으로 인코딩되어 섹션 3.4.3에 설명된 두 개의 입력 오디오 스트림으로 사용되었다. 텍스트 스트림은 선택된 메인 스피커의 텍스트 토큰만 포함하며, 텍스트와 오디오 토큰 간 딜레이는 0으로 고정했다. 8시간 오디오 배치 크기로 10만 스텝 동안 훈련하며, Temporal Transformer에서는 3×10⁻⁶, Depth Transformer에서는 5×10⁻⁵의 고정 학습률을 사용했다. 이전의 사전훈련 단계와 같이, 전체 배치의 10%는 텍스트 전용 배치로 구성했다.
post-training에서는 논문 설명대로 한거 같음. 텍스트가 먼저 나오고 오디오 acoustic token은 1step or 2step 늦게 나오는 식으로 입력 넣기
Moshi 미세조정(Finetuning)
이전에 언급한 시뮬레이션 기반 멀티 스트림이 좋은 사전 훈련 작업이 되지만, 실제 대화를 완벽히 학습하는 데는 부족하다. 예를 들어, 여기에는 오디오 중첩(overlap)이 없고, 비활성 스피커 스트림은 완전히 무음이다. 따라서 실제 멀티 스트림 상호작용을 학습하기 위해 Fisher 데이터셋을 활용했다. 두 스피커 중 하나를 메인 스피커로 선정했고, 40분 분량의 오디오 배치 크기로 10k 배치를 훈련했다. 학습률은 Temporal Transformer/Depth Transformer에 각각 2×10⁻⁶/4×10⁻⁶를 사용했으며, 전체 텍스트 배치를 더 이상 사용하지 않았다.
마지막으로, Moshi가 유용한 대화형 어시스턴트로서 첫 번째 스피커 스트림의 아이덴티티를 설정하고 instruct 미세조정 단계(instruction fine-tuning)를 진행했다. 섹션 4.3에서 설명한 합성 instruct 데이터셋을 사용했으며, 오디오 배치 크기는 2.7시간, 훈련은 30k 스텝 동안 진행했다. 학습률은 두 Transformer 모두에 2×10⁻⁶였다.
이 단계에서 사용자의 스트림에 데이터 증강(data augmentation)을 수행하여 다양한 상황에 대한 Moshi의 견고성을 강화했다. 사용자 스트림의 볼륨을 50% 확률로 -24 dB에서 +15 dB까지 무작위로 조정했다. Deep Noise Suppression 챌린지에서 제공된 노이즈를 추가하거나, 무음 구간을 랜덤하게 삽입하는 방식으로 데이터 증강을 추가 진행했다. Moshi의 에코(echo)를 사용자의 마이크에 모방하여 추가했고, Defossez 등의 연구에서 제안한 방식으로 리버브(reverb)를 30% 확률로 추가 적용했다.
이 과정에서 사용한 훈련 손실(training loss)은 섹션 6의 식 (7)에 정의된 형태를 사용했다.
TTS 훈련
우리는 또한 섹션 3.4.4에서 설명한 방법을 사용하여 스트리밍 방식으로 동작하는 멀티스트림(multi-stream) 텍스트-음성 변환(TTS) 모델을 훈련했다. 오디오 사전 훈련 단계는 Moshi와 공유되며, 텍스트에 비해 오디오 스트림을 2초 지연(delay)시키는 후처리 훈련(post-training)을 수행했다. 이후 고품질의 두 스피커 간 상호작용 녹음 데이터(supervised multi-stream dataset)로 미세조정(fine-tuning)했다. 이 모델은 섹션 4.3에서 설명된 합성된 지시어(finetuning instruct) 데이터셋을 생성하는 데 사용되었다. Moshi 모델 자체는 supervised multi-stream 데이터셋에서 직접 훈련되지 않았다는 점을 유의하라. 추가 세부 사항은 부록 C에 기술되어 있다.
훈련 손실 (Training loss)
Moshi는 식 (6)에 기술된 바와 같이 공동 시퀀스(joint sequences)를 모델링하도록 훈련된다. 주어진 정답 토큰 (($V_{s,k}$)${s\le S,k\le K}$) 및 식 (2)에서 정의된 추정 로짓(logits) (($l{s,k})_{s\le S,k\le K}$)을 사용할 때, 우리는 다음과 같은 손실함수를 사용한다. 여기서 CE는 교차 엔트로피(cross entropy)를 의미한다.
위 손실에서 텍스트 토큰((k=1))과 오디오 토큰의 총합에 동일한 중요도를 부여한다. 각 토큰의 가중치(($\alpha_k$))는 semantic 토큰에는 100으로 설정하고, acoustic 토큰에는 1로 설정했다.
5.1 Text Language Modeling (텍스트 언어 모델 평가)
평가 방법(Metrics)
논문에서는 Helium(텍스트 전용으로 훈련된 모델)을 여러 가지 표준 벤치마크를 사용하여 평가했다. 주요 평가 벤치마크는 다음과 같다:
-
ARC (AI2 Reasoning Challenge): 상식 및 논리 추론 능력 평가
-
OBQA (Open-Book QA): 개방형 질문 답변 능력 평가
-
HellaSwag (HS): 상식적 맥락 기반의 다음 문장 예측 능력 평가
-
WinoGrande (WG): 상식 기반 대명사 해석 능력 평가
-
PIQA (Physical Interaction QA): 물리적 상호작용 관련 상식 평가
-
SIQA (Social Interaction QA): 사회적 상호작용 관련 상식 평가
-
TriviaQA (TQA): 일반 지식 질문 답변 평가 (Unfiltered 및 Wikipedia로 분할하여 평가)
-
Natural Questions (NQ): 자연어로 구성된 일반 지식 질문 평가
-
MMLU (Massive Multitask Language Understanding): 다수의 주제에 걸친 다중 작업 언어 이해 평가
이들 벤치마크는 상식 추론, 개방형 질문 답변, 고등학교 및 대학 수준의 다중 선택 질문 답변 등 다양한 작업을 평가하는 것이다.
TriviaQA, NQ, MMLU는 5-shot 평가 방식을 사용하고, 나머지는 0-shot 평가 방식을 사용하였다.
비교 대상(Baselines)
비교 대상으로는 Helium과 비슷한 규모인 (약 7B 매개변수) 모델들이며, 유사한 계산량(compute)으로 훈련된 모델들을 포함했다.
구체적으로 Helium의 2.1T 토큰 훈련량과 유사한 2.5T 토큰 이하의 데이터로 학습된 모델로 제한하여 비교하였다:
-
MPT (MosaicML)
-
Falcon (Technology Innovation Institute)
-
Llama 2 (Meta AI)
-
OLMo (Allen AI)
추가로, 훨씬 더 많은 계산량으로 훈련된 인기 모델인 Mistral, Gemma와의 성능도 참조용으로 추가 비교하였다.
결과 요약(Results)

-
Helium은 비슷한 규모의 모델(MPT, Falcon, Llama 2, OLMo)에 비해 대부분의 벤치마크에서 동등하거나 더 나은 성능을 보임.
-
특히 ARC, Open-Book QA, Natural Questions에서 유사한 계산량의 모델을 능가하거나 근접한 우수한 성능을 기록함.
-
이는 Helium의 텍스트 사전훈련 데이터의 질적 우수성을 검증하는 결과로 해석됨.
-
그러나 Helium보다 훨씬 더 많은 계산량(compute)을 투입한 Mistral, Gemma 같은 모델에 비하면 MMLU 등 일부 벤치마크에서 다소 떨어지는 성능을 보임.
결론 및 핵심 메시지
-
Helium은 유사 규모 및 계산량의 기존 모델 대비 경쟁력 있는 성능을 보이며, 특정 벤치마크에서는 명확한 우위를 보인다.
-
특히 ARC, OBQA, NQ와 같은 질문 답변 및 추론 성능 평가에서 기존 모델 대비 강점을 가짐.
-
따라서 Helium의 훈련에 사용된 데이터셋과 사전 훈련 방법이 효과적이라는 것이 입증되었음.
-
다만 더 많은 계산 자원이 투입된 모델(Mistral, Gemma)에 비해서는 약간의 성능 격차가 존재함을 확인할 수 있음.
5.2 오디오 토큰화(Audio Tokenization)
평가 지표(Metrics)
다음으로 우리는 신경망 코덱(neural codec)인 Mimi의 semantic 및 acoustic 성능을 평가했다.
첫째, 생성된 semantic token이 언어 모델링의 적절한 목표값을 제공하는지를 평가했다. 이를 위해 triphone(음소 3개 조합)에 기반한 ABX(Schatz et al., 2013) 오류율을 계산했다.
- 이 방법은 특정 음성 표현 공간에서 서로 다른 triphone 인스턴스(예: "beg")와 음소가 약간만 다른 triphone(예: "bag") 간의 거리 비교를 통해 음소 구별력(phonetic discriminability)을 측정한다.
- 보다 구체적으로 우리는 동일 화자가 발음한 3개의 인스턴스를 비교하는 "화자 내"(within speaker) ABX를 Librispeech dev-clean 데이터셋에서 측정했으며, Librilight 저장소의 기본 파라미터를 사용했다.
- 이렇게 얻은 점수는 후속 오디오 언어 모델이 일관된(coherent) 음성을 생성할 수 있는 능력을 나타내는 강력한 지표임이 입증되었다.
- semantic 토큰만 평가하고자 했기 때문에, semantic VQ 이후 양자화된 잠재 공간(latent space)의 거리만을 계산했다 (즉, acoustic 토큰과 합쳐지기 이전의 단계임).
둘째, 재구성된 오디오의 음향적 품질을 평가했다.
- 자동 품질 평가 지표로 VisQOL(Hines et al., 2015)—기준(reference)이 있는 음향 유사성 모델—과 MOSNet(Lo et al., 2019)—기준이 없는(reference-free) 오디오 품질 평가 모델—을 사용했다.
- 자동 지표의 한계를 감안하여, 인간 평가(human evaluation)도 함께 수행했으며, MUSHRA 프로토콜을 활용했다.
- 20명의 평가자가 각자 10초 길이의 샘플 30개를 평가하도록 했다.
- Table 3에서는 자동 지표를 사용한 ablation 연구 결과를 보고했으며,
- Table 4에서는 기존 연구와의 비교 결과를 objective 및 subjective 평가 측면에서 함께 제공했다.
비교 대상(Baselines)
기준 모델로는 RVQGAN(Kumar et al., 2024), SemantiCodec(Liu et al., 2024), SpeechTokenizer(Zhang et al., 2024b)를 사용했다.
RVQGAN은 순수한 acoustic 토크나이저로 semantic 정보는 인코딩하지 않으므로 오디오 품질 평가만 수행했다.
RVQGAN의 토큰은 75Hz에서 생성되기 때문에, Mimi의 비트레이트에 근접한 1.5kbps를 얻기 위해 RVQ의 첫 두 단계만 유지했다.
반면 SpeechTokenizer는 semantic 정보도 인코딩하므로 semantic 및 acoustic 속성을 모두 평가할 수 있다.
이 역시 첫 3개의 RVQ 레벨만 유지하여 1.5kbps 비트레이트로 맞추었다. SemantiCodec 또한 semantic과 acoustic을 동시에 인코딩하므로 두 축 모두에서 평가가 가능하다.
결과 – Semantic 토큰
Table 3에서 볼 수 있듯이, semantic 토큰의 음성 구별력(ABX로 측정)은 증류(distillation)를 수행하지 않을 경우 매우 낮으며, 기존 연구의 acoustic 토큰과 비슷한 수준이다(Borsos et al., 2022). 즉, 이러한 semantic 토큰은 음성에서 언어적 내용을 포착하는 데 적합하지 않다.
- WavLM distillation을 하지 않으면, RVQ 토큰만 가지고 음소를 구분하는데, 성능이 안좋다는 것. semantic 정보없기 때문이라고 말하는 듯
반면 WavLM을 semantic 토큰에 증류하면 phonetic discriminability(음성 구별력)가 크게 개선되며, 특히 Mimi 인코더에 Transformer를 사용할 때 효과가 더욱 크게 나타났다.
- 이는 대형 Transformer 기반 인코더의 증류를 순수 컨볼루션 기반 인코더로 수행하는 것이 어렵고, 인코더의 수용영역(receptive field)과 용량을 증가시키는 것이 효과적임을 의미한다.
- 그러나 음향 손실과 semantic 증류 간에는 trade-off가 존재하여, ABX가 개선되면 재구성 품질이 떨어지는 현상이 나타났다.
결과 – Acoustic 토큰
Table 3에서 볼 수 있듯이, 디코더에 Transformer를 추가하면 MUSHRA가 크게 개선되었다. 마찬가지로, 양자화 비율을 50%로 사용하는 것도 VisQOL을 상당히 개선했으나, 청취자가 느끼는 품질(perceived quality)은 개선되지 않았다. 보다 일반적으로, VisQOL과 MOSNet 사이의 상관관계가 낮음을 관찰하였다.
특히, Table 4는 adversarial 손실만을 사용하여 Mimi를 훈련할 경우 VisQOL 점수는 1.84로 매우 낮았지만 청취자가 느끼는 음향 품질은 매우 높았다. 따라서 우리는 청취자가 재구성된 오디오를 기준 오디오(anchor)에 대해 0~100점으로 유사성을 평가하는 MUSHRA 점수를 사용했다. 인간 평가 결과, adversarial loss만 사용한 훈련이 음향 품질을 획기적으로 향상시켜 MUSHRA 점수가 81.0에 도달했으며, Encodec에서 사용된 여러 손실을 사용한 경우의 58.8보다 크게 우수했다. Mimi는 RVQGAN(Kumar et al., 2023)에 비해 더 낮은 비트레이트와 semantic 정보의 모델링에도 불구하고 훨씬 뛰어난 성능을 보였다. Mimi는 또한 SemantiCodec(Liu et al., 2024)보다도 더 낮은 프레임레이트(frame rate, 4배 낮음)를 사용하면서도 더 높은 재구성 품질을 제공했다. 이 속성은 Moshi의 낮은 지연 시간을 달성하는 데 필수적이며, Moshi의 오디오 토큰의 한 타임스텝을 생성하는 데 Temporal Transformer를 통해 완전한 forward pass가 필요하기 때문이다. 마지막으로, RVQGAN과 SemantiCodec이 비인과적(non-causal)인 데 비해 Mimi는 완전히 인과적이며(causal), 스트리밍 추론(streaming inference) 및 실시간 대화 모델링에 적합하다.
논의(Discussion)
Mimi는 semantic 정보를 인코딩하면서도 높은 재구성 품질을 제공하며, 완전한 인과적 모델로서 낮은 프레임레이트 및 비트레이트에서도 뛰어난 성능을 보였다. 따라서 Mimi는 실시간 오디오 언어 모델의 훈련에 적합한 오디오 토크나이저임이 증명되었다. 부수적으로, 우리는 객관적 지표와 주관적 음향 품질 지표 간의 심각한 상관관계 부족을 발견했다. 특히, VisQOL은 생성기(generator)의 구조를 변경할 때 인지 품질과 잘 일치했지만, adversarial loss와 같은 학습 목표 변경은 점수를 실제 청취자가 인지하는 품질과 무관하게 크게 변화시켰다. 이는 인지된 품질(perceived quality)에 대한 신뢰할 수 있는 객관적 지표 설계가 여전히 열려 있는 도전 과제임을 보여준다.
5.3 생성 모델링에 대한 Ablation (Ablations on Generative Modeling)
이 섹션에서는 RQ-Transformer의 사용 여부와 delay 패턴, 각 토큰 단계의 가중치 설정(weighting), Inner Monologue 적용 여부가 생성 품질에 미치는 영향을 평가하는 ablation 연구를 진행했다.
📌 평가 방법 (Metrics)
모든 모델은 Temporal Transformer를 Helium 체크포인트로 초기화하고, 오디오 데이터를 통해 사전훈련(pretraining)한 상태에서 평가했다.
-
같은 delay 패턴을 가지며 Inner Monologue를 적용하지 않은 모델 간의 비교는 semantic 및 acoustic 토큰의 평균 perplexity를 통해 평가했다.
-
그러나 서로 다른 delay 패턴을 가지는 모델의 perplexity는 직접 비교할 수 없으므로, 3초 길이의 오디오 프롬프트로부터 Moshi가 음성을 생성하게 한 후 Whisper로 생성된 오디오를 다시 텍스트로 변환한 뒤, 외부 텍스트 언어 모델(LiteLlama-460M-1T)을 통해 음성 생성의 일관성과 이해도(transcript의 negative log-likelihood, NLL)를 평가했다.
-
추가로, 생성된 오디오를 Whisper로 변환한 transcript의 길이(character length)를 보고했으며, 모델의 품질이 높을수록 transcript의 길이가 길어짐을 관찰했다.
🧪 Ablation 결과 요약
(1) RQ-Transformer 사용 여부 (Table 5)
다음 두 가지 delay 패턴을 비교했다:
-
[0,1,2,3,4,5,6,7]: 각 RVQ 단계가 이전 단계보다 한 스텝씩 늦게 생성되므로 전체 latency는 8 timestep (640ms)로 높음. -
[0,2,2,2,2,2,2,2]: semantic 이후 모든 acoustic 단계가 동일하게 2스텝 (160ms) 지연.

-
첫 번째 패턴([0,1,2,3,4,5,6,7])의 경우 RQ-Transformer를 사용하지 않아도 성능 차이가 미미하다.
-
두 번째 패턴([0,2,2,2,2,2,2,2])에서는 RQ-Transformer를 사용하는 것이 perplexity를 크게 낮추어 성능을 획기적으로 높였다.
-
낮은 지연 조건(짧은 latency)에서는 RQ-Transformer 사용이 필수적임을 보여줬다.
(2) 추가 Ablations (Table 6)
Inner Monologue 사용 여부, semantic token의 가중치 설정(1 또는 100), delay 패턴에 따른 영향을 평가했다.

-
Delay가 없거나([0,0,...]) 매우 짧으면([0,1,...]) 생성된 음성의 품질이 상대적으로 낮다(NLL↑, 길이↓).
-
Delay가 2 step([0,2,...])으로 증가하면 음성 품질이 상당히 개선된다.
-
Semantic token의 손실 가중치를 100으로 설정하면 품질이 더욱 향상된다.
-
또한 Depthwise parameterization(RVQ 각 단계마다 개별 weight를 부여)을 적용하면 성능이 추가로 향상된다.
-
가장 큰 성능 향상은 Inner Monologue(텍스트 토큰을 음성 앞에 추가 생성하는 방식)를 사용할 때 나타났으며, NLL이 가장 낮고 transcript 길이가 압도적으로 길어졌다.
📌 논의 및 핵심 메시지 (Discussion)
본 섹션에서 확인한 중요한 결론은 다음과 같다:
-
낮은 latency를 요구할 때 RQ-Transformer 구조는 필수적이며, 성능 향상 효과가 매우 크다.
-
Delay 패턴의 길이가 약간만 길어져도 생성 품질이 크게 개선된다.
-
Semantic token에 높은 가중치를 부여하고 depthwise parameterization을 추가로 수행하면 음성의 일관성이 더욱 좋아진다.
-
무엇보다도 Inner Monologue 방식이 생성된 음성의 품질(일관성, transcript 길이)을 가장 큰 폭으로 향상시킨다.
정리하자면, Table 5와 Table 6의 Ablation 실험은 다음의 핵심 결과를 보여준다:
-
RQ-Transformer는 낮은 latency 조건에서 필수적이다.
-
Inner Monologue는 semantic 및 acoustic 토큰 생성 품질을 획기적으로 개선한다.
-
Semantic token의 중요성을 높이는 가중치 설정(100) 및 depthwise parameterization 역시 음성 생성 품질에 유의미한 영향을 준다.
논문의 "5.4 Audio Language Modeling" 섹션에서 중요 내용을 요약하여 정리한 것입니다. 표에 언급된 사항도 명확히 포함하였습니다.
5.4 오디오 언어 모델 평가 (Audio Language Modeling)
평가 방법 (Metrics)
논문에서는 대규모 오디오 데이터를 대상으로 다음 토큰 예측(next token prediction) 방식으로 훈련된 Moshi 모델의 음성 시퀀스 모델링 성능을 평가하였다. 이 평가에는 음성 언어 모델의 언어적 지식을 측정하는 "Textless NLP" 벤치마크를 활용하였다.
주요 평가 벤치마크 및 설명:
-
sWUGGY: 음성에서 어휘(lexicon)를 얼마나 잘 학습했는지 평가
-
sBLIMP: 문법적(syntactic) 지식을 평가
-
sStoryCloze: 상식적인 내용을 다루는 다섯 문장 스토리의 마지막 문장이 문맥과 일관된지 평가 (의미적 평가)
-
sTopic-StoryCloze: sStoryCloze보다 쉽게 만든 버전으로, 부정적인 예시 문장을 무작위로 선택한 것으로 의미적 평가를 수행
각 벤치마크에서 **Negative Log Likelihood (음수 로그우도)**를 사용하여 음성 토큰의 일관성 및 언어적 정확도를 평가하였다.
또한, Spirit-LM과 Moshi에 대해서는 추가로 MMLU를 사용하여 텍스트 이해 능력(text-only)을 평가하여 텍스트 지식이 음성 훈련으로 인해 얼마나 영향을 받았는지 점검하였다.
비교 대상 (Baselines)
논문은 오디오 언어 모델링 관련 기존 연구의 결과와 다음 세 가지 설정에서 Moshi를 비교하였다(Table 7).
-
Audio only - Cold Start: 무작위 초기화 후 오디오로만 훈련된 모델
-
GSLM
-
AudioLM
-
TWIST-1.3B
-
Moshi(랜덤 초기화 및 Inner Monologue 미사용)
-
-
Audio only - Warm Start: 사전 훈련된 텍스트 모델을 초기화 후 오디오만으로 훈련된 모델
-
TWIST-13B
-
VoxtLM (audio-only)
-
Spirit-LM (audio-only)
-
Moshi (Helium으로 초기화, audio-only 및 Inner Monologue 미사용)
-
-
Text and Audio - Warm Start: 텍스트 및 음성 데이터를 동시에 훈련한 모델
-
VoxtLM (text & audio)
-
Spirit-LM (text & audio)
-
Moshi (single-stream pretraining)
-
Moshi (multi-stream instruct fine-tuning 후 실제 배우 음성 데이터로 학습)
-
Moshi (multi-stream instruct fine-tuning 후 합성 음성 데이터로 학습)
-
주요 결과 정리 (Results)
논문의 Table 7 결과를 요약한 것입니다.

결과에 대한 해석 및 결론
-
Moshi는 랜덤 초기화(audio only, cold start) 및 텍스트 언어모델 초기화(audio only, warm start) 모두에서 기존 모델들보다 대부분의 평가 지표에서 우수한 성능을 보였다.
-
특히 의미적 평가(sTopic-StoryCloze, sStoryCloze)에서 TWIST, Spirit-LM, VoxtLM 보다 상당히 좋은 성능을 나타냈다.
-
multi-stream instruct fine-tuning 이후 Moshi는 어휘적(sWUGGY) 및 문법적(sBLIMP) 평가에서는 다소 성능이 떨어졌으나, 상식 추론 평가(sStoryCloze)에서는 크게 향상되었다.
-
텍스트 이해 능력(MMLU) 평가에서도 Moshi는 Spirit-LM에 비해 큰 차이로 우수한 성능을 기록하여 일반 텍스트 이해 능력이 높게 유지됨을 보였다.
-
또한 Moshi는 다른 비교 대상 모델들과 달리 semantic과 acoustic 토큰을 단일 모델에서 통합하여 생성할 수 있다는 점에서 차별화된다.
논문의 결론적으로 Moshi는 오디오와 텍스트 두 모달리티에서 언어적 지식을 강력하게 모델링하는 동시에 다양한 화자와 음향 조건을 처리하는 우수한 성능을 갖춘 모델임을 강조하고 있다.
이러한 결론은 논문의 Table 7에서 제시된 결과를 통해 명확히 확인할 수 있습니다.
5.5 음성 기반 질의응답 평가 (Spoken Question Answering)
평가 방법 (Metrics)
이 섹션에서는 최종적으로 훈련된 multi-stream Moshi 모델의 음성 기반 질의응답(spoken QA) 능력을 평가하였다. 평가를 위해 다음 벤치마크들을 사용하였다:
-
Spoken Web Questions (Web Q.) (Berant et al., 2013)
-
Spoken LlaMA-Questions (LlaMA Q.) (Nachmani et al., 2024)
-
Audio TriviaQA (TriviaQA 음성 버전)
모델의 음성 질의응답 성능은 0-shot 방식으로 평가되었다.
Moshi 평가를 위해, 질문의 오디오 토큰을 사용자 스트림(user stream)에 입력으로 주었으며, EPAD 텍스트 토큰을 추가하여 Moshi가 바로 응답하도록 했다.
비교 대상 (Baselines)
비교 모델은 크게 두 가지로 구분된다(Table 8):
-
Audio only 모델
-
GSLM (Lakhotia et al., 2021)
-
AudioLM (Borsos et al., 2022)
-
TWIST (7B) (Hassid et al., 2023)
-
Moshi (Inner Monologue 미사용, audio only)
-
-
Text and audio 모델
-
SpeechGPT (7B) (Zhang et al., 2024a)
-
Spectron (1B) (Nachmani et al., 2024)
-
Moshi (Inner Monologue 사용)
-
Moshi (Inner Monologue 사용하되, pretraining 단계에서 텍스트 전용 배치 미사용한 변형 모델)
-
추가로 Moshi의 원본 모델인 **Helium(text-only)**을 텍스트 기반 QA의 성능 상한선(top line)으로서 제시하여 비교하였다.
주요 결과 요약 (Results)
논문의 Table 8의 결과를 정리하면 다음과 같다:
결과 해석 및 결론
-
Audio only 모델 비교
-
Moshi (Inner Monologue 미사용 버전)는 기존 AudioLM, TWIST, GSLM 등 audio only 모델을 상당히 큰 격차로 압도하는 성능을 보였다. (특히 LlaMA-Questions에서 TWIST 대비 약 20배 이상의 성능)
-
-
Text and audio 모델 비교
-
Inner Monologue 방법이 Moshi의 음성 질의응답 성능을 극적으로 향상시켰다(Web Q.: 9.2→26.6, LlaMA Q.: 21.0→62.3, TriviaQA: 7.3→22.8).
-
이는 오디오 생성 시 약간의 추가 연산 비용만으로도 의미 있는 텍스트 정보를 효과적으로 모델링할 수 있음을 입증한다.
-
Moshi는 SpeechGPT 및 Spectron보다 모든 벤치마크에서 현저히 더 좋은 성능을 기록했다.
-
특히 Moshi는 스트리밍 추론(streaming inference)이 가능하며, 질문 전체를 먼저 텍스트로 생성한 뒤 음성으로 전환하는 Chain-of-Modality 기반 모델(SpeechGPT, Spectron)과는 다르게, Inner Monologue를 사용해 텍스트와 음성을 동시에 스트리밍으로 생성할 수 있다는 차별성을 갖는다.
-
-
**Helium(Text only)**과의 비교
-
Moshi는 base 모델인 Helium의 텍스트 질의응답 성능보다는 여전히 낮지만 (예: TriviaQA에서 Helium의 56.4 대비 Moshi는 22.8), 음성으로만 평가된 기존 모델 대비해서는 압도적으로 높은 성능을 기록했다.
-
이는 오디오 데이터 훈련 과정에서 일반 텍스트 지식이 일부 감소할 수 있지만, 대부분의 음성 QA 작업에서 여전히 경쟁력 있는 성능을 유지하고 있음을 시사한다.
-
특히 긴 질문 또는 문장 구조가 복잡한 질문에 대해 Moshi의 성능이 상대적으로 저하되는 현상이 관찰되었다. 이는 구어체 중심의 fine-tuning이 특정 질문 구조에 대한 훈련 부족으로 이어진 것으로 분석되었다.
-
결론적 메시지
-
Moshi는 음성 질의응답 평가에서 기존 모델을 압도하며, 특히 Inner Monologue의 도입을 통해 음성 QA 성능이 크게 향상됨을 입증했다.
-
Chain-of-Modality 모델과 달리 Moshi는 스트리밍 방식으로 음성과 텍스트를 동시에 생성할 수 있다는 점에서 실용성과 성능 측면 모두에서 강점을 보였다.
-
하지만 텍스트 전용 모델(Helium)에 비해서는 여전히 개선의 여지가 있으며, 복잡한 질문 구조에 대한 훈련을 추가로 수행하면 성능 격차를 더욱 줄일 수 있을 것으로 기대된다.
5.6 생성된 대화의 품질과 통계 (Quality and Statistics of Generated Dialogues)
평가 방법 (Metrics)
이 섹션에서는 Moshi 모델이 생성한 대화(dialogues)의 언어적 품질 및 발화(turn-taking) 통계를 평가하였다.
논문의 방법은 다음과 같다:
-
Nguyen et al.(2023)의 평가 방식을 참고하여, 생성된 대화의 언어적 품질(Linguistic Quality) 및 발화(turn-taking) 관련 통계를 분석하였다.
-
언어적 품질은 DialoGPT (Zhang et al., 2019) 모델을 사용해 계산한 perplexity(혼란도)로 평가하였다. 각 화자를 DialoGPT에서 요구하는
<|endoftext|>토큰으로 구분한 뒤, 이를 통해 산출된 perplexity로 품질을 측정하였다.
발화(Turn-taking) 관련 평가 지표 설명:
-
Inter-Pausal Units (IPU): 발화자의 연속된 발화 단위. 최소 0.2초의 침묵이 양쪽에 있는 발화 구간을 의미함.
-
Pause: 같은 화자가 연속된 IPU 사이에 갖는 침묵.
-
Gap: 서로 다른 화자 간 IPU 사이에 존재하는 침묵.
-
Overlap: 두 화자가 동시에 말하는 발화 시간이 겹치는 구간.
논문에서 제시된 평가는 Fisher 데이터셋의 무작위 10초 길이의 프롬프트(시작 부분)를 사용하여, 모델이 그 뒤를 이어 생성한 결과를 분석했다. 온도(temperature)를 각각 다르게 하여 생성된 대화를 평가하였다.
비교 대상 (Baselines)
-
dGSLM (Nguyen et al., 2023): Moshi와 유사한 full-duplex 음성 생성 모델로 Fisher 데이터셋에서 훈련됨.
-
Cascaded model (ASR + LM + TTS): ASR(음성인식)-언어모델-TTS(음성합성)를 단계적으로 연결한 상한선(topline) 모델로 참조.
-
Ground Truth: 실제 Fisher 데이터셋에서의 실제 인간 간 대화를 참조하여 비교.
평가 결과 요약 (Table 9)

결과에 대한 해석 및 결론
언어적 품질 (Perplexity):
-
Moshi는 온도 0.8에서 Cascaded 상한선 모델(ASR-LM-TTS)의 언어 품질(45.9)보다도 더 좋은(낮은) perplexity(41.9)를 기록했다.
-
이는 Moshi가 순수한 end-to-end 오디오 생성 모델(audio-to-audio)임에도 불구하고 매우 높은 언어적 품질을 달성한 것을 보여준다.
-
dGSLM(195.9) 대비 현저히 좋은 품질을 보였으며, 심지어 실제 데이터셋(Ground Truth)의 perplexity(65.0, 59.6)보다도 더 좋은 결과를 보였다. 이는 Moshi가 훈련된 데이터가 DialoGPT와 유사한 언어적 스타일을 갖고 있어 평가 모델이 상대적으로 좋은 점수를 준 것으로 설명하였다.
발화 통계 (Turn-taking statistics):
-
IPU 길이 및 Pause, Gap, Overlap 등의 통계는 온도가 올라갈수록 실제 인간 대화에 더 가까워졌다.
-
온도 1.0에서 Moshi는 실제 Fisher 데이터(Ground Truth)와 유사한 IPU, Pause, Gap, Overlap 값을 기록했으며, 인간이 실제 대화하는 방식과 매우 근접한 자연스러운 대화 흐름을 보여줬다.
-
낮은 온도(0.8)에서는 대화가 짧고 침묵이 길며 겹침이 적었으나, 온도가 높아질수록 자연스러운 대화 스타일이 나타났다.
결론적 메시지 및 요약
-
Moshi는 언어적 품질(perplexity) 및 실제 인간 대화와의 유사성 면에서 매우 뛰어난 성능을 보였다. 특히 온도 0.8에서의 perplexity는 기존 Cascaded 모델(상한선 모델)을 능가했다.
-
발화 통계 역시 온도가 올라갈수록 실제 인간의 대화 방식과 근접한 결과를 보였다. 특히 온도 1.0에서는 실제 데이터셋과의 발화 통계적 차이가 미미하였다.
-
이는 Moshi가 실제 대화에서 자연스러운 발화 흐름과 높은 언어적 품질을 동시에 달성했음을 입증한 결과이다.
5.7 스트리밍 ASR 및 TTS (Streaming ASR and TTS)
평가 지표 (Metrics)
섹션 3.4.4와 부록 C에서 설명한 바와 같이, Inner Monologue를 사용하면 텍스트와 오디오 토큰 사이의 delay(지연)를 변경함으로써 스트리밍 TTS 또는 스트리밍 ASR 시스템을 쉽게 구현할 수 있다. 특히 우리는 스트리밍 TTS 모델 훈련 시, 텍스트 토큰이 오디오 토큰에 비해 2초 빠르게 등장하도록 설정(오디오를 2초 지연)하여, 추론(inference) 시 텍스트 토큰에 teacher forcing을 적용했다. 반대로, 스트리밍 ASR 모델을 훈련할 때는 텍스트 토큰이 오디오 토큰보다 2초 늦게 등장하도록 설정(텍스트를 2초 지연)하여, 모델이 오디오를 충분히 듣고 나서 텍스트 토큰을 생성하도록 했다. 이 경우에는 추론 시 오디오 토큰에 teacher forcing을 적용했다.
TTS의 경우 온도(temperature)를 0.6으로 설정하여 생성하고, ASR의 경우 greedy decoding을 사용했다. 두 작업 모두 LibriSpeech (Panayotov et al., 2015)의 test-clean 데이터셋을 이용하여 Word Error Rate (WER)를 평가하였다. TTS 평가에서는 LibriSpeech 960h 데이터셋에서 finetuning된 HuBERT-Large (Hsu et al., 2021) 모델을 사용해 생성된 오디오를 먼저 전사(transcription)한 다음, 길이가 4~10초인 시퀀스만 고려하여 기존 모델(Vall-E 등)과 공정하게 비교하였다. 중요한 것은 ASR과 TTS 시스템 훈련에 LibriSpeech 데이터가 전혀 사용되지 않았다는 점이다.
결과 (Results)
우리의 스트리밍 TTS 모델은 LibriSpeech test-clean에서 4.7% WER를 얻었다. 이는 Vall-E(Wang et al., 2023)의 5.9% WER보다 우수한 성능이지만, NaturalSpeech 3(Ju et al., 2024)의 1.81%보다는 낮다. 다만, Moshi는 Vall-E나 NaturalSpeech 3와는 달리 전체 시퀀스를 한 번에 필요로 하지 않고 오직 **2초의 lookahead(미리보기)**만을 요구하는 스트리밍 방식이라는 점에서 큰 차이가 있다.
이게 조금 다른점이긴하네
우리의 ASR 시스템은 5.7%의 WER를 기록했으며, 비슷한 lookahead를 가진 Streaming FastConformer(Noroozi et al., 2024)가 기록한 3.6%보다 다소 낮은 성능이다. 참고로 우리의 ASR 시스템은 Temporal Transformer의 프레임 레이트(초당 12.5프레임, 즉 80ms)를 기준으로 세부 단어 수준의 정렬(alignment)을 제공할 수 있다.
논의 (Discussion)
이러한 제한적인 실험은 최신 기술 시스템(state-of-the-art)과 직접적인 경쟁을 목표로 한 것이 아니라(특히 ASR의 경우), Inner Monologue 방식이 여러 가지 작업을 하나의 프레임워크 안에서 유연하게 구현할 수 있음을 보이기 위한 것이다.
또한 LibriSpeech test-clean 데이터셋에서의 표준적인 평가가 우리가 개발한 TTS 시스템의 강력한 능력을 완벽히 보여주지 못한다는 점을 강조하고자 한다. 특히 우리의 TTS 시스템은 멀티스트림 모델링으로 두 명의 화자를 동시에 처리할 수 있고, 즉흥적이며 표현력 있는 발화를 연속 5분 동안 일관성 있게 생성할 수 있는 능력을 가지고 있다. 이는 Vall-E가 평가한 4~10초의 읽기 중심 발화보다 훨씬 더 난이도가 높은 작업이다. 스트리밍 TTS에 대한 보다 심층적인 평가는 향후 작업으로 계획하고 있다.
5.8 Moshi 압축 및 음성 품질에 미치는 영향
최신 대형 언어 모델(LLM)은 대부분 수십억 개의 매개변수를 가지고 있기 때문에, 모델 크기는 실제 활용에 있어서 잘 알려진 제약 조건이다. 예를 들어, 자원이 제한된 장치(예: 일반 사용자 GPU가 장착된 노트북)에서 모델을 실행하거나 다수의 사용자를 지원하는 웹 데모에서 모델을 배포할 때가 그렇다. 이를 해결하기 위해 일반적으로 사후 훈련 양자화(Post-Training Quantization, PTQ) 라는 효율성 향상 기법이 널리 사용되고 있다. 단, 모델 압축에 따른 성능 저하의 가능성은 단점으로 작용한다. 최근 연구는 LLM이 흔히 정수(integer) 양자화를 통해 8비트까지는 성공적으로 양자화할 수 있으며, 심지어 일부 고급 기술을 통해 더 낮은 비트(bit) 수에서도 양자화할 수 있음을 보였다. 그러나 음성 모델을 양자화하는 연구는 LLM 양자화에 비해 매우 드물다. 따라서 본 섹션에서는 Moshi를 양자화했을 때 성능(특히 음향적인 성능)에 어떤 영향을 미치는지 조사하고자 한다. 이 과정에서 모델 양자화로 인해 발생하는 특정 음향 왜곡(audio degradations)을 강조하고자 한다.
양자화 형식 (Quantization Format)
Moshi를 양자화할 때, 우리는 PTQ 연구에서 흔히 사용되는 설계를 따랐다. 구체적으로 다음과 같은 설정을 사용했다:
-
(i) 활성화(activations)는 bfloat16 정밀도(BF16)로 저장하고, 모든 선형 레이어(linear layers)의 입력에서 대칭(symmetric) 양자화(AbsMax 사용)를 통해 8비트로 동적으로 양자화했다.
-
(ii) 모델 가중치(weights)는 비대칭(asymmetric) 양자화(MinMax 사용)를 이용하여 다양한 비트 폭(bitwidth) 및 블록 크기로 양자화했다. 여기에는 Temporal Transformer와 Depth Transformer의 가중치가 모두 포함된다. Depth Transformer는 양자화에 상당히 견고하기 때문에 Depth Transformer 가중치만 높은 정밀도로 유지한다고 해서 음성 품질이 크게 향상되지는 않았다.
오직 초반 임베딩 레이어(텍스트 및 오디오), RMSNorm 레이어 및 Mimi 코덱만 양자화하지 않고 원래 정밀도로 남겨두었다. 마지막으로, 흔히 사용되는 가중치 범위 설정(weight range setting)을 사용하지 않았는데, 이는 MSE로 양자화 스케일을 미세 조정할 경우 생성 샘플의 품질에 거의 영향을 주지 않음을 발견했기 때문이다.
결과 - 언어적 평가 (Linguistic evaluation)
양자화가 모델의 추론 능력에 미치는 영향을 측정하기 위해, 먼저 base Helium 모델(텍스트 전용 데이터로 훈련된 Moshi의 기반 모델)의 MMLU 벤치마크 성능을 평가하였다(Table 10 참고).
또한 Moshi 자체에 대해서도 MMLU 성능을 평가했다(Table 11 참고).
전반적으로 Helium은 최종적으로 훈련된 Moshi보다 양자화에 더 견고했다. 특히 블록 크기를 32로 설정했을 때, Helium 모델의 가중치를 4비트로 양자화하면 모델 크기가 3.43배 줄어들지만, MMLU 성능은 부동소수점(Floating point) 기준과 비교하여 2점 이내로 유지되었다. 이 양자화 형식은 llama.cpp의 Q4_0과 거의 동일하며, 따라서 효율적인 추론을 위해 손쉽게 배포할 수 있다.
반대로 Moshi에 동일한 양자화 방법을 적용했을 때는 MMLU 성능이 5~10점 크게 떨어지는 현상이 나타났다. 실제 온라인 데모에서는 가중치를 8비트 포맷으로 유지했으며, 이는 부동소수점 모델 대비 크기를 약 2배 줄이면서도 성능 저하가 2점 정도로 합리적이었기 때문이다.
결과 - 음성 품질 (Audio Quality)
양자화 모델이 생성한 샘플의 음성 품질을 평가하기 위해 Lo et al.(2019)의 MOSNet 메트릭을 사용하였다. 좀 더 구체적으로는 양자화되지 않은 모델에서 짧은 프롬프트(64 토큰)를 생성한 후, 온도를 t = 0.8, 길이는 1024 토큰으로 설정하여 각 양자화된 모델로 이어지는 샘플을 생성하였다. 이 프로세스를 500회 반복한 후, 비겹침(non-overlapping) 윈도우 단위로 MOSNet 점수 분포를 보고하였다(Figure 5 참고). MOSNet 점수는 샘플 간 변동성이 컸으나, 모델 가중치를 4비트로 양자화한 이후에도 음성 품질은 일반적으로 원래 모델과 비슷하게 유지되었다. 하지만 더 낮은 비트폭에서는 MOSNet 점수가 공격적인 양자화로 인해 나타나는 일부 심각한 음향 왜곡에 덜 민감하다는 것을 정성적으로 확인했다.
이러한 양자화로 인한 심각한 왜곡을 보다 정확히 평가하기 위해, 먼저 특정 음향 왜곡이 생성된 텍스트와 오디오 토큰의 엔트로피 스펙트럼(entropy spectrum)에서 나타나는 것을 확인하였다(Figure 6 참고). 이런 왜곡들의 종류와 측정 방법은 부록 D에 자세히 설명되어 있다. 이를 기반으로, 500개 샘플에서 다양한 오디오 왜곡의 존재 유무를 측정하여 결과를 보고하였다(Table 12 참고). 비트폭 4에서는 왜곡이 거의 없었지만, 비트폭 3부터는 왜곡이 증가했으며, 특히 큰 블록 크기로 양자화한 경우에 왜곡이 더 심해졌다. 극단적인 2비트 양자화 모델에서는 음성 품질이 상당히 나빠졌다.
논의 (Discussion)
결론적으로, Moshi의 언어적 능력은 음성 품질보다 모델 가중치와 활성화의 양자화에 더 민감했다. 특히 모델 전체를 Depth Transformer를 포함하여 양자화해도 음성 품질은 4비트 정밀도까지는 원본 모델에 가깝게 유지되었다. 그러나 MMLU 성능은 사후 훈련 양자화만으로는 6비트 이하로 양자화했을 때 크게 하락했다. 최근의 양자화 기법에 따라, 사후 훈련(Post-training) 양자화가 아닌 양자화 인식 미세 조정(quantization-aware fine-tuning)을 사용하면 더 낮은 비트폭에서도 개선된 성능을 기대할 수 있을 것이다. 그러나 Moshi의 훈련 과정(섹션 4 참고)은 여러 단계와 데이터셋을 포함하기 때문에, Moshi의 모든 능력을 양자화 이후에도 보존하기 위해서는 양자화된 훈련 단계 및 캘리브레이션 데이터셋을 설계하는 보다 심도 깊은 추가 연구가 필요하다.



6 Safety
🔹 개요
Moshi는 음성-텍스트 기반 생성 모델이기 때문에, 안전성(safety) 문제를 다양한 관점에서 검토했다.
연구진은 특히 다음 네 가지 질문에 초점을 맞춰 실험과 분석을 수행했다.
-
모델이 유해하거나 독성(toxic) 있는 발화를 생성하지는 않는가?
-
학습 데이터의 오디오를 그대로 재생산(regurgitation) 하는가?
-
특정 화자의 음성 일관성(voice consistency) 은 유지되는가?
-
Moshi가 만든 오디오를 식별(watermarking) 할 수 있는가?
6.1 Toxicity 분석
-
텍스트 모델처럼 오디오 모델의 안전성을 평가하기 위해 ALERT benchmark (Tedeschi et al., 2024)를 사용.
→ 카테고리: hate, self-harm, weapon, crime, sex, substance 등. -
비교 대상: GPT-3.5, GPT-4, Llama-2, Vicuna, Mistral 등.
-
결과 (표 18)
-
Moshi의 Overall Safety Score = 83.05
-
GPT-4(99.18)·Llama-2(99.98)보다는 낮지만, 오픈모델(Mistral 75.45, Zephyr 77.86)보다는 높음.
-
“중간 수준의 안전성”: 독성 출력은 드물지만, 상용 대형 모델 대비 방어 수준은 다소 낮음.
-
-
분석은 오디오가 아닌 텍스트 출력에 한정되어 있음(비언어적 의미는 별도 고려 어려움).
6.2 Regurgitation (훈련데이터 재생산) 분석
-
문제: 모델이 학습 데이터의 오디오나 목소리를 그대로 재생산할 위험.
-
방법:
-
훈련 세트 내 가장 자주 등장하는 16 초짜리 오디오 조각을 찾고,
모델이 이 음성을 그대로 생성하는 비율을 측정.
-
-
결과 (표 13)
-
데이터 중복 제거 전: 조건 없는 생성 시 동일한 음성을 여러 번 생성.
-
온도 0.6 ~ 1.0 범위에서 재생산 가능성 높음.
-
중복 제거 및 대화형 파인튜닝 후: 10⁵ 회 생성 중 재현 0%.
-
-
결론: 데이터 deduplication + 파인튜닝으로 재생산 위험을 크게 줄일 수 있음.
6.3 Voice Consistency (음성 일관성)
-
위험: Moshi가 사용자의 목소리나 다른 화자를 모방하는 현상.
-
실험:
-
100시간의 Moshi 대 synthetic speaker 대화 생성.
-
각 발화의 화자 임베딩(WavLM 기반) 을 비교.
-
-
결과 (표 14)
-
Moshi 음성의 일관도(main > other 비율) 98.7% 이상.
-
시간대별(20–45 초)로도 99% 수준 유지 → 음성 drift 없음.
-
-
결론: 하나의 일관된 성우 음성으로 파인튜닝 만으로도 안정적 음성 유지 가능.
6.4 Watermarking 및 식별
-
목적: Moshi가 생성한 오디오를 사후에 식별하기 위한 방법 연구.
(1) Signal-based watermark (AUDIOSEAL 테스트)
-
원음 16 kHz로 리샘플 후 AUDIOSEAL 검증 → 무손상 시 탐지 ≈ 1.0(완벽).
-
그러나 pink noise 공격이나 오디오 코덱 압축(Mimi, RVQGAN) 을 거치면 탐지 불가.
→ 압축 후 워터마크 소실, 실질적 효과 없음.
(2) Generative-based watermark (샘플링 단계 삽입 시도)
-
텍스트 LLM의 기법 (Aaronson & Kirchner 2023 등)을 오디오 생성에 적용 시도.
-
문제점:
-
오디오 토큰이 비 idempotent → 재인코딩 시 토큰 불일치 (표 16).
-
작은 시간 이동(40 ms)에도 워터마크 불안정.
-
-
제안:
-
첫 몇 단계 RQ 토큰만 표시 또는 토큰 안정성을 높이는 손실 추가.
-
장기적 대안: 학습 데이터 수준의 ‘radioactive data’ 워터마킹.
🟢 요약
| 안전성 항목 | 접근 방식 | 결과 요약 |
|---|---|---|
| Toxicity | ALERT 벤치마크 평가 | 83점 (중간 수준) |
| Regurgitation | 빈도 분석 + Deduplication | 중복 제거 후 재생산 0% |
| Voice Consistency | WavLM 임베딩 비교 | 음성 일관성 99% 유지 |
| Watermarking | Signal 및 Generative 방법 실험 | Signal-기반은 압축 에 취약, Generative-기반은 토큰 불안정 문제 발견 |
핵심 결론:
Moshi는 유해 발화·데이터 재생산·음성 모방 위험을 최소화하도록 설계되었으며,
현재 워터마킹 식별 기법은 아직 불안정하다는 한계가 있다.
전반적으로 “중간 수준의 안전성 확보” 단계로 평가된다.
다음은 논문 7 Conclusion 부분의 전체 한글 번역입니다:
7 결론 (Conclusion)
이 연구에서는 Moshi, 즉 세계 최초의 실시간(full-duplex) 음성 대화 시스템을 소개하였다.
Moshi의 첫 번째 구성 요소는 Helium으로, 7B(70억) 매개변수를 가진 텍스트 언어 모델이며, 동일한 연산량으로 학습된 공개 가중치 모델들과 비교해도 경쟁력 있는 성능을 보였다.
오디오를 언어 모델링에 적합한 이산 단위(discrete unit) 로 변환하기 위해 우리는 Mimi라는 semantic-acoustic(의미-음향) 신경 오디오 코덱(neural audio codec) 을 제안하였다.
이는 낮은 비트레이트에서도 최첨단 수준의 오디오 품질을 달성하며, 실시간 생성이 가능한 낮은 프레임레이트로 동작한다.
그 다음으로, 우리는 계층적(hierarchical) 다중 스트림(multi-stream) 아키텍처를 새롭게 도입하였다.
이를 통해 Moshi는 임의의 대화를 음성-대-음성(speech-to-speech) 방식으로 생성할 수 있게 되었다.
또한 우리는 Inner Monologue라는 새로운 방법을 제안하여, 텍스트 토큰을 오디오 토큰 앞(prefix)에 두어 생성하도록 함으로써 음성-대-음성 생성의 품질을 비약적으로 향상시켰다.
이 방법은 스트리밍 추론(streaming inference) 과도 완전히 호환된다.
우리의 실험 결과, Moshi는 음성 질의응답(spoken question answering) 과 대화 생성(dialogue modeling) 에서 최첨단 성능을 보이면서도, 유해 콘텐츠를 생성하지 않고, 음성 일관성을 유지하는 등
만족스러운 수준의 안전성을 확인하였다.
요약하자면, 우리는 텍스트 LLM부터 신경 오디오 코덱, 생성형 오디오 모델에 이르기까지 하나의 완전한 모델 및 학습 레시피 세트를 제시하였으며, 이를 결합하여 160ms의 이론적 지연(latency) 으로
5분 이상의 복잡한 멀티턴 대화를 따라갈 수 있는 실시간 음성 대화 시스템을 구현하였다.
우리는 Mimi와 Moshi 모델을 모두 공개(release) 하여, 이와 같은 응용 분야의 발전을 촉진하고자 한다.
또한, 우리가 제안한 Inner Monologue 방법은 텍스트와 오디오 토큰 간의 지연(delay)만 조정함으로써 스트리밍 TTS(Text-to-Speech) 와 스트리밍 ASR(Automatic Speech Recognition) 시스템을 새롭게 설계할 수 있음을 보여주었다.
우리는 Inner Monologue와 Multi-stream 모델링이 향후 음성-대-음성(speech-to-speech) 및 오디오-대-오디오(audio-to-audio) 연구 전반에 긍정적인 영향을 미칠 것이라 믿는다.
Reference





















댓글
댓글 쓰기