llm-jp-moshi-mstts

日本語の対話テキストから 2話者の同時発話音声を生成する マルチストリーム TTS。Moshi/Moshika アーキテクチャを 4 段階のカリキュラム学習で日本語対話に適応させたモデル。

A Japanese multi-stream text-to-speech model that synthesises 24 kHz stereo dialogue audio (left = speaker A, right = speaker B) from a turn-tagged text dialogue.

v0c-zoom1 Japanese 2 speakers 24 kHz stereo Moshika base ~7 B params CC-BY-NC 4.0 · Non-commercial only Private model · sample preview

Overview

入力は [["A", "..."], ["B", "..."], ...] 形式の対話テキスト JSON。出力は 24 kHz・ステレオの WAV で、左チャンネルが話者 A、右チャンネルが話者 B の音声。Kyutai 社の Moshika をベースに、日本語の音声・テキスト分布を 4 段階で学習させて構築した。

ArchitectureMoshi LM (1 text + 8×2 audio codebooks = 17 channels)
Audio codecKyutai Mimi (24 kHz, 12.5 frame/s)
Text tokenizerrinna/japanese-gpt2-medium spiece (32 k vocab)
Parameters≈ 7 B
Language日本語のみ / Japanese only
Speakers2 名固定(A / B)

Training Curriculum

Stage 1 と Stage 2 は名古屋大学 大橋厚元さんが学習した checkpoint をベースとして再利用(許諾済)。Stage 3 と 4 で本プロジェクトの Zoom1 対話への適応を行った。

  1. mono pretraining — by Atsumoto Ohashi

    moshika → J-CHAT-mono + ReazonSpeech + LaboroTV (6,000 step, eff. batch 512)

  2. multi-stream TTS pretraining — by Atsumoto Ohashi

    stage 1 → J-CHAT (multi-stream) (17,892 step, eff. batch 512)

  3. Zoom1 fine-tune (v0b)

    stage 2 → Zoom1 (500 step, eff. batch 32) — final loss 3.92

  4. extended Zoom1 fine-tune (v0c, this model)

    v0b → Zoom1 (+1,500 step) — final loss 3.04 (text 2.02, audio 1.02)

Listen — 学習段階による品質変化

同じ入力テキストを 4 段階の checkpoint それぞれに通した結果。ノイズ → 自然な対話音声へと改善していく様子が聞き取れる。

Sample 1 — 朝の挨拶と昼食の話題

A:おはようございます。今日は天気が良さそうですね。
B:ええ、雲一つないいい天気だよ。
A:これじゃ、昼くらいから暑くなりそうですね。
B:ああ、そうなるよね。ランチはさっぱりしたの食べたくなりそう。
A:冷やし中華なんてどう?
B:いいね。よかったら一緒に食べに行かない?
A:ぜひ行きましょう。

v0a (moshiko 直 + 500 step)

Loss 6.55 — 対照群: 日本語事前学習なしだとノイズ

0178 base (Stage 2 終了)

大橋さん作の mstts checkpoint (step 17,892)

v0b (+ Zoom1 500 step)

Loss 3.92 — Zoom 風の対話に寄せ始め

v0c (+ Zoom1 1500 step) ★

Loss 3.04 — 本モデル(最新)

Sample 2 — 昼食の相談

A:お昼休憩だね。今日何食べようかな
B:うーん、ステーキが食べたい気分
A:そうなんですか
B:そうです、加藤さんは何が食べたいの
A:私はハンバーグがいいな
B:そうなのか。じゃ、ステーキとハンバーグ両方ある店探す?
A:いいね。この先にガストがあるから、ガスト行こうか
B:あ、そういえばガストの割引クーポン持ってる
A:へえ、どんなの
B:ドリンクバーが安くなるんだ
A:じゃ、ドリンクバーもつけちゃおう
B:そうだね、ガスト行こ

v0a

0178 base

v0b

v0c ★

Generalisation — 学習データ外の対話

Zoom1 学習データには含まれない「趣味の名前を思い出せない側を、もう一方が助ける」というシナリオで生成テスト。テキストは下記の通り、人手で書き下ろしたもの。

A:最近、何か趣味始めたって言ってなかったっけ?
B:あ、うん、始めたんだよ。えっと、なんだったかな…
B:こう、双眼鏡を持って、朝早く公園に行って…
A:鳥を見るやつ?
B:そうそう、鳥を見るやつ!何て言うんだっけ?
A:バードウォッチング?
B:そう、バードウォッチング!それそれ、名前が出てこなくて困ってたんだよ。
A:朝早い方がいろんな鳥が見られるんだよね。
B:そうなんだよ、だから最近は早起きしてるよ。

v0c による生成

28 秒 / temp text 0.55, audio 0.6, seed 1

Loss progression

段階StepTotal Losstextaudio
v0a (control)5006.553.293.25
0178 Stage 2 終了時17,892
v0b5003.922.401.52
v0c (this)1,5003.042.021.02

Limitations / 既知の制約

Ethics & responsible use

Out-of-scope use: 本モデルは以下の用途に使用しないでください。
  • 特定の実在人物の声を再現する目的 (voice cloning, impersonation)
  • 本人同意のないなりすまし音声の生成(詐欺・フェイクニュース・嫌がらせ)
  • 商用利用全般(CC-BY-NC 4.0 で禁止)
  • 政治的なミスインフォメーション・選挙妨害
  • その他、法令・公序良俗に反する用途

生成音声を公開する場合は 合成音声であることを明示 し、可能であれば AudioSeal 等の音声透かしを併用することを推奨します。

License & Attribution

本モデルは CC-BY-NC 4.0 ライセンス(Creative Commons Attribution-NonCommercial 4.0)で配布されます。Stage 1, 2 で使用された J-CHAT (CC-BY-NC 4.0) および LaboroTVSpeech (非商用限定) から継承された制約により、商用利用はできません。ベースの Moshika 単体は CC-BY-4.0 です。

役割担当
Base model & audio codecKyutai (Moshika, Mimi)
Text tokenizerrinna (japanese-gpt2-medium)
Stage 1 / 2 学習コード・checkpoint大橋厚元 / 名古屋大学 対話研究グループ
Stage 3 / 4・統合・本ページ阿部雄斗 / 早稲田大学
学習データ提供sarulab-speech (J-CHAT), Reazon Holdings (ReazonSpeech), Laboro.AI (LaboroTV), LLM-JP (Zoom1)

Citation

@misc{abe2026llm-jp-moshi-mstts-v0c-zoom1,
  author       = {Abe, Yuto and Ohashi, Atsumoto},
  title        = {llm-jp-moshi-mstts-v0c-zoom1: A Japanese multi-stream dialogue TTS model},
  year         = {2026},
  publisher    = {Hugging Face},
  howpublished = {\url{https://huggingface.co/abePclWaseda/llm-jp-moshi-mstts-v0c-zoom1}}
}

@article{ohashi2025towards,
  title   = {Towards a Japanese Full-duplex Spoken Dialogue System},
  author  = {Ohashi, Atsumoto and Iizuka, Shinya and Jiang, Jingjing and Higashinaka, Ryuichiro},
  journal = {arXiv preprint arXiv:2506.02979},
  year    = {2025}
}