「Kimi-Audio」を試す
論文
Claude-3.7-Sonnetによる落合プロンプトの結果
Kimi-Audio技術報告書
1. どんなもの?
Kimi-Audioは、音声理解、生成、会話の各分野で優れた性能を発揮するオープンソースの音声基盤モデルです。このモデルは、12.5Hzの音声トークナイザー、連続的特徴を入力として離散的トークンを出力する新しいLLM(大規模言語モデル)ベースのアーキテクチャ、およびフローマッチングに基づくチャンク単位ストリーミングデトークナイザーを活用しています。Kimi-Audioの学習データには、音声、音、音楽を含む1300万時間以上の音声データが含まれており、事前学習済みLLMから初期化され、音声とテキストの両方のデータに対して継続的な事前学習が行われました。その後、多様な音声関連タスクをサポートするために微調整されています。評価結果によると、Kimi-Audioは音声認識、音声理解、音声質問応答、音声会話など、幅広い音声ベンチマークで最先端の性能を達成しています。コード、モデルチェックポイント、および評価ツールキットはGitHub上で公開されています。
2. 先行研究を比べてどこがすごい?
Kimi-Audioは以下の点で既存の音声言語モデルを超えています:
汎用性: 多くの先行研究は音声理解、音声生成、または音声会話のいずれかに特化していましたが、Kimi-Audioはこれらすべてのタスクを単一のモデルで処理できます。
大規模事前学習: 先行研究の多くはLLMを微調整するだけでしたが、Kimi-Audioは1300万時間以上の音声データで徹底的な事前学習を行っています。これにより、多様な音声処理タスクにおいて優れた性能を発揮します。
コードとモデルの完全公開: 他の一部のモデルとは異なり、Kimi-Audioはソースコードとモデルチェックポイントを完全に公開しており、研究コミュニティに大きな価値をもたらします。
ベンチマーク性能: 図1に示されるように、Kimi-AudioはQwen2-Audio、BaichuanAudio、Step-Audio、Qwen2.5-Omniなどの競合モデルと比較して、多くのベンチマークでより優れた結果を示しています。
オープンなデータ戦略: 商用データに依存せず、オープンデータソースと処理ツールのみを使用してSOTA(最先端)性能を達成しています。
3. 技術や手法の肝はどこ?
Kimi-Audioの核となる技術的革新は以下の3つの主要な側面にあります:
アーキテクチャ設計:
- 音声I/Oを担当する音声トークナイザーとデトークナイザー、および中核処理部分としての音声LLMという3つのコンポーネントで構成
- 入力と出力の両方に離散的セマンティック音声トークンを使用
- 知覚能力向上のため入力に連続的音響ベクトルを追加
- 生成能力向上のため出力に離散的テキストトークンを追加
- テキストと音声シーケンスのギャップを埋めるため、音声トークンの圧縮率を12.5Hzに設定
データ処理パイプライン:
- 音声強化、話者ダイアリゼーション(話者分割)、文字起こし、フィルタリングなどを含む高品質データ処理パイプライン
- 多様なタスク固有データの収集と処理による教師あり微調整の効率化
- 純粋にオープンで利用可能なデータソースと処理ツールのみを使用
トレーニング戦略:
- 事前学習済みLLMからの初期化による知識容量と知性の維持
- 音声のみ、テキストのみ、音声からテキスト、テキストから音声、音声-テキスト交互などの複数の事前学習タスクの設計
- 音声とテキストの融合のためのオーディオディレイメカニズムの導入
4. どうやって有効だと検証した?
Kimi-Audioの評価は以下の主要なベンチマークと方法論を通じて実施されました:
音声認識(ASR)評価: LibriSpeech、Fleurs、AISHELL-1、AISHELL-2、WenetSpeechなどの多言語データセットでの単語誤り率(WER)測定。Kimi-Audioは比較モデルよりも一貫して低いWERを達成(例:LibriSpeech test-cleanで1.28%、test-otherで2.42%)。
音声理解タスク: MMAU(音楽、音、音声カテゴリ)、ClothoAQA、VocalSound、Nonspeech7k、MELD、TUT2017、CochlSceneなどの多様なベンチマークを使用。特にCochlScene(音響シーン分類)では79.84%、Nonspeech7k(非音声音識別)では93.93%という高い精度を達成。
音声-テキストチャット: OpenAudioBenchとVoiceBenchを使用した評価。AlpacaEval(75.73%)、SD-QA(63.12%)、OpenBookQA(83.52%)、AdvBench(100%)などのサブタスクで最高性能を記録。
音声会話: 速度制御、アクセント制御、感情制御、共感性、スタイル制御の5つの次元に関する主観評価。GPT-4oを除くすべての比較モデルを上回る平均スコア3.90を達成。
これらの包括的な評価により、Kimi-Audioが音声処理タスク全般にわたって最先端の性能を発揮することが実証されています。
5. 議論はある?
著者らは、Kimi-Audioの開発過程で直面した課題と将来の方向性について以下の議論を展開しています:
音声文字起こしから音声説明へ: 現在の事前学習パラダイムはASR文字起こしに依存していますが、これは「何が言われたか」という内容のみに焦点を当て、感情、スタイル、音色、音響シーンなどの重要な音声情報を無視しています。著者らは、音声をより豊かに描写するための記述的テキスト(音声キャプション)の導入を提案しています。
より良い音声表現の必要性: 現在の音声モデルはセマンティックトークンまたは音響トークンを表現として使用していますが、これらはそれぞれ欠点があります。著者らは、文字起こし指向のセマンティック情報と説明指向の音響特徴の両方を統合する表現の開発を提案しています。
ASRとTTSへの依存からの脱却: 現在の音声基盤モデルは、訓練データ生成においてASR(自動音声認識)とTTS(テキスト音声合成)システムに大きく依存しています。これにより、モデルの性能はASR/TTSの精度や品質の上限に制約されます。著者らは、ASR/TTSベースの疑似音声データではなく、ネイティブな音声データに依存するモデルのトレーニングを提案しています。
これらの課題に対応することで、より高度で自律的な音声インテリジェンスの実現が可能になると著者らは主張しています。
6. 次に読むべき論文は?
Kimi-Audio技術報告書の理解を深めるために、以下の関連論文を読むことをお勧めします:
音声トークン化と生成:
- AudioLM (Borsos et al., 2023) - 音声生成への言語モデリングアプローチ
- VALL-E (Wang et al., 2023) - ゼロショットテキスト音声合成のための音声言語モデル
- MoonCast (Ju et al., 2025) - Kimi-Audioが使用するデトークナイザーアーキテクチャの基礎
音声理解と認識:
- Whisper (Radford et al., 2023) - Kimi-Audioが使用する音響特徴抽出器の基礎
- Qwen2-Audio (Chu et al., 2024) - Kimi-Audioとベンチマークで比較される統合音声言語モデル
- SALMONN (Tang et al., 2023) - LLMのための一般的聴覚能力に関する研究
音声会話システム:
- GLM-4-Voice (Zeng et al., 2024) - エンドツーエンドの音声チャットボット
- Moshi (Défossez et al., 2024) - リアルタイム対話のための音声-テキスト基盤モデル
- Baichuan-Audio (Li et al., 2025) - エンドツーエンド音声インタラクションのための統合フレームワーク
これらの論文は、音声処理、理解、生成、会話の分野での最新の進歩を網羅しており、Kimi-Audioの技術的基盤と比較コンテキストを提供します。
少しQA
Q: KimiAudioがベースとしているモデルについて教えて下さい。
Kimi-Audioがベースとしている主要なモデルについて説明します。
Kimi-Audioは複数の既存モデルをベースとして構築されています。論文から読み取れる主要なベースモデルは以下の通りです:
Qwen2.5 7Bモデル:音声LLM(大規模言語モデル)部分は、Qwen2.5 7Bモデルから初期化されています。これは音声処理に適応させるために、語彙をセマンティック音声トークンと特殊トークンで拡張されています。テキスト処理能力と言語理解力の基盤として使用されています。
Whisper large-v3:連続的音響特徴抽出モジュールは、OpenAIのWhisper large-v3モデルから初期化されています。このモデルは、入力音声信号に固有の微細な音響特性を捉えることができます。事前学習の初期段階(約20%のトークン)では、このWhisperベースの特徴抽出器のパラメータは凍結されていましたが、その後、解凍されて残りのモデルと共同で微調整されました。
MoonCastデトークナイザー:音声デトークナイザーは、MoonCastと同じアーキテクチャを採用しています。これは、12.5Hzのセマンティックトークンを50Hzのメルスペクトログラムに変換するフローマッチングモジュールと、メルスペクトログラムから波形を生成するボコーダーの2つの部分で構成されています。
BigVGANボコーダー:音声波形の生成に使用されるボコーダーとして、BigVGANが採用されています。
GLM-4-Voice:離散的セマンティックトークンの生成に関しては、GLM-4-Voiceで提案された監視付き音声トークナイザーを取り入れています。これは自動音声認識(ASR)モデルから派生したものです。
これらのモデルを組み合わせることで、Kimi-Audioは音声理解、生成、会話の各分野で優れた性能を実現しています。特に、事前学習済みLLMからの初期化と、大規模な音声データ(1300万時間以上)での継続的な事前学習が、Kimi-Audioの性能向上に大きく貢献しています。
Q: 日本語についてはなにか記述がありますか?
報告書を確認したところ、Kimi-Audioの日本語対応に関する具体的な記述はほとんどありませんでした。論文で日本語に関して言及されているのは以下の限られたポイントのみです:
データ収集・処理の部分では、音声認識用のWhisper-large-v3モデルが使用され、英語と中国語(マンダリン)のセグメントのみが文字起こしのために保持されたと明記されています。日本語についての明示的な言及はありません。
事前学習データでは、13百万時間以上の音声データが使用され、これには「多言語情報」が含まれているとだけ述べられていますが、具体的にどの言語がカバーされているかは明示されていません。
ベンチマーク評価では、LibriSpeech(英語)、Fleurs(多言語)、AISHELL-1(中国語)、AISHELL-2(中国語)、WenetSpeech(中国語)といった特定の言語データセットでの評価が行われていますが、日本語に特化したデータセットでの評価は記載されていません。
Fleurs(Few-shot Learning Evaluation of Universal Representations of Speech)データセットは多言語データセットですが、この中に日本語が含まれているかどうかは報告書では明記されていません。
したがって、この技術報告書からはKimi-Audioが日本語をどの程度サポートしているか、日本語処理能力がどの程度あるのかについて明確な結論を導くことはできません。モデルが「多言語情報」を含む大規模データセットで訓練されたことは述べられていますが、日本語に関する具体的な言及や評価はないようです。
より詳細な情報については、GitHubリポジトリ(https://github.com/MoonshotAI/Kimi-Audio)を確認するか、Kimi Teamに直接問い合わせることが必要かもしれません。
Q: 評価結果において「GPT-4oを除くすべての比較モデルを上回る平均スコア3.90を達成」とありますが、ここで比較されているモデルに付いて教えて下さい。
論文の評価結果で比較されているモデルについて詳しく説明します。
論文の音声会話評価セクション(Table 7)では、Kimi-Audioは以下のモデルと比較されています:
GPT-4o:OpenAIの最先端マルチモーダルモデルで、音声を含む複数のモダリティを処理できます。このモデルは全カテゴリで最高の平均スコア4.06を達成しています。特にスタイル制御(4.54)、速度制御(4.21)、感情制御(4.05)の面で優れています。
Step-Audio-chat:音声インタラクション向けの統合理解・生成モデルです。このモデルは平均スコア3.33を記録しており、Kimi-Audioより低いパフォーマンスを示しています。特にスタイル制御(4.14)で比較的良いスコアを出していますが、アクセント制御(2.87)や共感性(3.05)では弱さが見られます。
GLM-4-Voice:インテリジェントで人間に近いエンドツーエンドの音声チャットボットとして開発されたモデルです。平均スコア3.65を達成し、特にアクセント制御(3.51)の面でKimi-Audio(3.45)をわずかに上回っています。しかし、他のほとんどのカテゴリではKimi-Audioに劣っています。
GPT-4o-mini:OpenAIのGPT-4oの軽量版と考えられるモデルです。平均スコア3.45を記録し、特に感情制御(4.24)ではKimi-Audio(4.27)にわずかに迫るスコアを示していますが、全体的にはKimi-Audioよりも低いパフォーマンスとなっています。
Kimi-Audioの平均スコア3.90は、GPT-4o(4.06)に次ぐ2位であり、他のすべての比較モデル(Step-Audio-chat: 3.33、GLM-4-Voice: 3.65、GPT-4o-mini: 3.45)よりも高いスコアを達成しています。
特に注目すべき点として、Kimi-Audioは速度制御(4.30)と感情制御(4.27)の面で最も優れており、GPT-4oより高いスコアを記録しています。一方、共感性(3.39)とアクセント制御(3.45)の面ではまだ改善の余地があります。
この評価は5つの主要な次元(速度制御、アクセント制御、感情制御、共感性、スタイル制御)に基づく主観評価であり、これらの能力は音声会話システムの自然さと表現力を左右する重要な要素です。
Q: データ収集・処理の部分では、音声認識用のWhisper-large-v3モデルが使用され、英語と中国語(マンダリン)のセグメントのみが文字起こしのために保持された
とあるのは事前学習データのことですか?
はい、お尋ねの箇所は事前学習データに関する記述です。論文の3.1節「Pre-Training Data(事前学習データ)」の部分で説明されています。
Kimi-Audioの事前学習データ収集と処理について、論文では以下のように説明されています:
事前学習コーパスは、ユニモーダル(テキストのみ、音声のみ)とマルチモーダル(テキスト-音声)のデータで構成されています。
音声のみの事前学習データは、オーディオブック、ポッドキャスト、インタビューなどの幅広い実世界のシナリオをカバーし、約1300万時間の生の音声を含んでいます。これには豊かな音響イベント、音楽、環境音、人間の声、そして多言語情報が含まれています。
データの処理段階で、彼らはWhisper-large-v3モデルを使用して話された言語タイプを検出しています。そして、論文では明示的に「この作業では、英語と中国語(マンダリン)のセグメントのみを更なる文字起こしのために保持しています」と述べています。
英語のセグメントに対しては、Whisper-large-v3を直接使用して文字起こしと句読点のアノテーションの両方を生成しています。
中国語のセグメントに対しては、FunASRツールキットからParaformer-Zhモデルを使用して文字起こしと文字レベルのタイムスタンプを生成しています。
このように、事前学習の段階で使用された音声データは、英語と中国語(マンダリン)のセグメントに絞られていたことが明確に記載されています。他の言語、例えば日本語のデータが含まれていたとしても、それらは文字起こし処理の対象外とされ、音声-テキストのマルチモーダルデータとしては使用されなかった可能性があります。これは、Kimi-Audioの言語理解・生成能力が特に英語と中国語に最適化されている可能性を示唆しています。
ただし、音声のみの事前学習(音声を音声トークンにマッピングする学習など)には、他の言語の音声データも含まれていた可能性はあります。論文では「多言語情報」を含む音声データと記載されていますが、具体的にどの言語が含まれていたかは明記されていません。
とりあえず日本語については学習されていなさそう。
GitHubレポジトリ
Kimi-Audio
Kimi-Audioは、音声理解、生成、会話に優れたオープンソースの音声基盤モデルです。このリポジトリには、Kimi-Audioの公式実装、モデル、および評価ツールキットが含まれています。
はじめに
Kimi-Audioは、単一の統一フレームワーク内で幅広い音声処理タスクを処理できる汎用音声基盤モデルとして設計されています。主な特徴は以下の通りです:
- 汎用的な機能: 音声認識(ASR)、音声質問応答(AQA)、音声キャプション(AAC)、音声感情認識(SER)、音響イベント/シーン分類(SEC/ASC)、およびエンドツーエンドの音声会話など、多様なタスクを処理します。
- 最先端のパフォーマンス: 数多くの音声ベンチマークでSOTA(State-of-the-Art)結果を達成します(評価および技術レポートを参照)。
- 大規模な事前学習: 1300万時間以上の多様な音声データ(スピーチ、音楽、サウンド)とテキストデータで事前学習され、堅牢な音声推論と言語理解を可能にします。
- 革新的なアーキテクチャ: ハイブリッド音声入力(連続的な音響 + 離散的な意味トークン)と、テキストと音声トークン生成のための並列ヘッドを持つLLMコアを採用しています。
- 効率的な推論: 低遅延の音声生成のためのフローマッチングに基づくチャンク単位のストリーミングデトークナイザーを特徴としています。
- オープンソース: コード、事前学習と指示微調整の両方のモデルチェックポイント、および包括的な評価ツールキットをリリースし、コミュニティの研究開発を促進します。
アーキテクチャ概要
referred from https://github.com/MoonshotAI/Kimi-AudioKimi-Audioは3つの主要コンポーネントで構成されています:
- 音声トークナイザー: 入力音声を以下に変換します:
- ベクトル量子化を使用した離散的な意味トークン(12.5Hz)。
- Whisperエンコーダから派生した連続的な音響特徴(12.5Hzにダウンサンプリング)。
- 音声LLM: マルチモーダル入力を処理する共有レイヤーを持つトランスフォーマーベースのモデル(Qwen 2.5 7Bなどの事前学習済みテキストLLMから初期化)で、その後、テキストトークンと離散的な音声意味トークンを自己回帰的に生成するための並列ヘッドがあります。
- 音声デトークナイザー: 予測された離散的な意味音声トークンをフローマッチングモデルとボコーダー(BigVGAN)を使用して高忠実度の波形に変換し、低遅延のためのルックアヘッドメカニズムを持つチャンク単位のストリーミングをサポートします。
ライセンス
このモデルはQwen 2.5-7Bをベースに修正されています。Qwen2.5-7Bから派生したコードはApache 2.0 Licenseの下でライセンスされています。コードの他の部分はMITライセンスの下でライセンスされています。
その他ベンチマーク結果が色々記載されている。
Quickstartに従ってやってみる。今回はColaboratoryで。なお、事前に試してみた限り、モデルロードするだけでVRAMが30GBぐらいになるので、ColaboratoryのランタイムはA100 GPUが必要。
レポジトリクローン
!git clone https://github.com/MoonshotAI/Kimi-Audio.git
%cd Kimi-Audio
GLM-4-Voiceがサブモジュールとして含まれているので取得
!git submodule update --init --recursive
パッケージインストール
!uv pip install --system -r requirements.txt
あと以下あたりも必要だった
!uv pip install --system flash-attn --no-build-isolation
!uv pip install --system ninja
モデルをロード。
import soundfile as sf
from kimia_infer.api.kimia import KimiAudio
# モデルのロード
model_path = "moonshotai/Kimi-Audio-7B-Instruct"
model = KimiAudio(model_path=model_path, load_detokenizer=True)
モデルロード時点でだいたいVRAMが30GBぐらい
!nvidia-smi
Tue Apr 29 14:51:55 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100-SXM4-40GB Off | 00000000:00:04.0 Off | 0 |
| N/A 30C P0 49W / 400W | 29831MiB / 40960MiB | 3% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
では推論。Quickstartでは2つの例が用意されていて、それぞれのサンプル音声もレポジトリに用意されている。
- オーディオデータを文字起こし(Audio-to-Text・ASR)
- オーディオデータをチャットのクエリとして入力し、オーディオとテキストの回答を生成(Audio-to-Audio/Text)
それぞれの例をやってみる。まず最初に、オーディオデータの文字起こし。サンプルの音声は以下にある。
中国語の音声データになっていて、Colab上だと以下で確認できる。
from IPython.display import Audio
display(Audio("test_audios/asr_example.wav"))
ElevenLabsのScribeで文字起こししてみると、以下のような内容だった。
这并不是告别,这是一个篇章的结束,也是新篇章的开始。
(DeepL日本語訳: これはお別れではありません。一つの章の終わりであり、新しい章の始まりです。)
ではこれをKimi-Audioで文字起こしする。
# サンプリングパラメータの設定
sampling_params = {
"audio_temperature": 0.8,
"audio_top_k": 10,
"text_temperature": 0.0,
"text_top_k": 5,
"audio_repetition_penalty": 1.0,
"audio_repetition_window_size": 64,
"text_repetition_penalty": 1.0,
"text_repetition_window_size": 16,
}
# 例1: Audio-to-Text(ASR)
messages_asr = [
# テキストで背景や指示を提供することが可能
{"role": "user", "message_type": "text", "content": "Please transcribe the following audio:"},
# オーディオファイルへのパスを指定
{"role": "user", "message_type": "audio", "content": "test_audios/asr_example.wav"}
]
# テキストのみの出力
_, text_output = model.generate(messages_asr, **sampling_params, output_type="text")
print(">>> ASR出力テキスト: ", text_output)
ASR出力テキスト: 这并不是告别,这是一个篇章的结束,也是新篇章的开始。
上と同じ内容になっているのがわかる。
次に、オーディオデータをチャットのクエリとして入力し、音声とテキストの両方で回答を生成する。こちらのサンプルデータは以下。こちらも中国語。
Colaboratory上で確認するには以下。
from IPython.display import Audio
display(Audio("test_audios/qa_example.wav"))
同様にElevenLabsで内容を確認してみた
你能不能重复数到十?
(DeepL日本語訳: 10まで数えられますか?)
これを使って推論
# 例2: Audio-to-Audio/Text 変換
messages_conversation = [
# 音声クエリで会話を開始
{
"role": "user",
"message_type": "audio",
"content": "test_audios/qa_example.wav"
}
]
# 音声とテキストの両方の出力を生成
wav_output, text_output = model.generate(
messages_conversation,
**sampling_params,
output_type="both"
)
# 生成した音声を保存
output_audio_path = "output_audio.wav"
sf.write(output_audio_path, wav_output.detach().cpu().view(-1).numpy(), 24000) # 24kHzの出力を想定
print(f">>> 会話出力オーディオの保存先: {output_audio_path}")
print(">>> 会話出力テキスト: ", text_output) # Expected output: "A."
>>> 会話出力オーディオの保存先: output_audio.wav
>>> 会話出力テキスト: 当然可以,这很简单。一二三四五六七八九十。
再生して確認してみると良い。中国語はわからないけど、数を数えてるところはわかる。
from IPython.display import Audio
display(Audio("output_audio.wav"))
生成されたものはこちら
この音声ファイルをElevenLabsで文字起こしした結果
啊,当然可以。这很简单,一、二、三、四、五、六、七、八、九、十。
(日本語訳: はい、もちろんできます。とても簡単です。1、2、3、4、5、6、7、8、9、10です。)
事前学習済みモデルは公開されているが、現時点では学習用のコードは公開されていない。
ただファインチューニングについては今後公開される予定みたい。
試しに日本語データを食わせてASRしてみた。サンプルは、自分が開催した勉強会のYouTube動画から冒頭1分程度の音声を抜き出したもの。
messages_asr = [
{"role": "user", "message_type": "text", "content": "Please transcribe the following audio:"},
{"role": "user", "message_type": "audio", "content": "test_audios/voice_lunch_jp_1min.wav"}
]
_, text_output = model.generate(messages_asr, **sampling_params, output_type="text")
print(">>> ASR出力テキスト: ", text_output)
>>> ASR出力テキスト: Okay, let's start. There are still some people who haven't arrived, but let's start the voice lunch JP. Everyone, good morning. Hi. Hi, thank you for gathering on a Saturday. Today is offline, so we have two special guests with us today. So, today we'll be talking about the topic. We have the CEO of VoiceFlow, Brendan Leam, and the Director of Conversational Design at Salesforce, Greg Veneas. Thank you for coming to Japan.
んんん、出力は英語だけど、内容は日本語音声を英語にしたもの・・・!?
プロンプトを変えてみる。
messages_asr = [
{"role": "user", "message_type": "text", "content": "次の音声を日本語に文字起こししてください:"},
{"role": "user", "message_type": "audio", "content": "test_audios/voice_lunch_jp_1min.wav"}
]
_, text_output = model.generate(messages_asr, **sampling_params, output_type="text")
print(">>> ASR出力テキスト: ", text_output)
>> ASR出力テキスト: Okay, let's start. There are still some (...snip...)
うーん、残念。ただ、これならファインチューニング用のコードが公開されたら日本語にも対応できそうな気がしてきた。