本稿では, LLM勉強会の対話WGの活動で開発した音声言語モデルのLlama-Mimiを紹介します.
近年, 大規模言語モデル (LLM) が非常に発展しています. LLMは文章をトークン列として扱い, 大規模なコーパスを用いて, 次のトークンを予測するNext Token Predictionタスクを用いてトークン列の確率分布を学習し, 推論時にはその確率分布を用いて文章を生成することができます.
この方法は, テキストデータだけでなく, トークン化できるあらゆるデータに対しても適用可能です. 音声言語モデルは, 音声を音声トークナイザを用いてトークン列として表現し, そのトークン列に対してLLMと同様にNext Token Predictionタスクを用いて学習するモデルです. 音声をトークン化する方法としては, Self-supervised Learning (SSL) に基づいて学習されたモデル (e.g. HuBERT, WavLM)の中間層の特徴量をk-meansクラスタリングで離散化する方法や, VAEの潜在表現が離散バージョンのVQ-VAEを用いる方法などがあります. LakhotiaらによってGSLMという音声言語モデルが提案されて以来, 音声言語モデルの研究が活発に進められています.
Llama-Mimiは, 音声言語モデルの一種で, Transformer decoderとしてLlama 3, 音声トークナイザとしてMimiを用いたモデルです. 音声言語モデルのアーキテクチャが複雑化する中で, LLMやVLMがシンプルなアーキテクチャで高性能を達成していることに着目し, できるだけシンプルなアーキテクチャで音声言語モデルを構築することを目指しました.
Mimiは, Unified Speech Tokenizerの一種で, 音声をフレーム単位でトークン化することができます. 1フレームを表現するトークンは1つではなく, 複数のトークンで表現され, 1番目のトークンがphoneticな情報を多く含むトークン, 2番目以降はacousticな情報を多く含むトークンとなっています.
Llama-Mimiでは, これらのトークンを, 直列化して, Transformer decoderに入力します. Llamaに音声トークンを入力するために, Llamaの語彙に音声トークンを追加しています. このため, 将来的にはテキストと音声を混在させたデータで学習することも可能です.
今回は, 英語の音声データ240k hoursを用いて, Llama 3 1Bと8Bをそれぞれ学習しました.
音声をMimiでトークン化した後は, LLMと同様に学習できるので, LLM学習フレームワークのTorchTitanを改良したコードベースを用意して学習しました.
このコードはGitHubで公開しており, 誰でもLlama-Mimiを学習することができます.
我々の論文では, Llama-MimiをLikelihoodベースとGenerationベースで評価しました. Llama-Mimiは, 感情や性別が途中で変化するような異常音声と正常音声を区別するAcoustic consistencyタスクでSoTAの性能を達成しました. 一方で, よりグローバルな情報を取り扱う必要のある意味的な性能では, TWIST等のsemanticトークンのみを用いるモデルにやや劣る結果となりました. これはトークン列が長くなることにより, 長期依存関係を捉えるのが難しくなることが原因と考えられます. 詳細については, 論文をご覧ください.
学習したLlama-Mimiを用いて, 音声promptを与えると, その続きを生成することができます.
以下はpromptとして “It was a great day. It started.” という音声を与えたときの, Llama-Mimi 1Bと8Bの生成例です.
Prompt | Llama-Mimi 1B | Llama-Mimi 8B |
---|---|---|
モデルサイズが大きいほど, より自然な音声を生成できることがわかります. その他の生成例や他のモデルとの比較は, 我々のデモサイトで確認できます.
我々のモデルはHugging Faceで公開しています. ぜひ試してみてください.
本稿では, LLM勉強会で開発した音声言語モデルのLlama-Mimiを紹介しました. 音声言語モデルは, まだまだ言語モデルに比べて長い音声を意味的に一貫した形で生成するのが難しい状況ですが, GPT-2からGPT-4までの進化を考えると, 今後の発展が非常に楽しみな分野です.