FastTurn JA

日本語の 4 状態ターン検出モデル。論文 FastTurn (arXiv:2604.01897) を日本語で再現した実装の学習済み重みです。公式実装・公式 checkpoint は公開されていないため、論文の記述から独自に再実装しています。

前世代の easy-turn-ja が VAD の後段に置く再判定器だったのに対し、こちらは VAD 非依存のストリーミング判定を行います。

状態 意味 システムの取るべき動作
Complete 話し終わった 応答を開始する
Incomplete まだ続く 黙って聞き続ける
Backchannel 相槌(「うん」「へー」) 自分の発話を止めない
Wait 「ちょっと待ってください」 長めに待つ

位置づけ

音声 (16kHz)
  → Nemotron-3.5-asr-streaming-0.6b (24層 FastConformer, 320ms chunk) ※同梱していません
     ├─ CTC の途中の文字列 → Qwen3-0.6B (本リポジトリの qwen3/)
     └─ 中間 hidden (T, 1024)
          ├─ LLM Adapter (4層 Transformer, 34M)  → adapter.pt
          └─ Acoustic Adapter (4層 Transformer)
                    └→ LLM hidden と融合 → 3層 MLP Turn Detector → unified.pt

エンコーダ(Nemotron)は同梱していません。利用者側で nvidia/nemotron-3.5-asr-streaming-0.6b を取得してください。

ファイルの対応

学習時に使われた組み合わせは meta_unified.json に記録されています(qwen3_ckpt=joint_out_mix/qwen3 / adapter_ckpt=adapter_aug)。

ファイル 中身 学習時の出所
unified.pt Acoustic Adapter + 3層 MLP Turn Detector Phase 4.2 Fusion の成果物
adapter.pt LLM Adapter(4層 Transformer, 34M) Phase 4.1b の Modality Alignment(adapter_aug
qwen3/ SFT 済み Qwen3-0.6B Phase 4.2 mix の Joint(joint_out_mix/qwen3

adapter.pt は Modality Alignment 段の重みです。Joint 段でも LLM Adapter は更新されますが、Unified の Fusion 段では Modality Alignment 側を凍結して使う構成で学習・評価しています(llm_adapter_trainable=0)。

性能

評価セット full200(実会話 150 件 + 合成 wait 50 件、clean 条件、n=200)。実会話部分は TalkBank CallHome Japanese の音声で、easy-turn-ja と同一のものを使っています。

指標
Macro-F1 0.718
Accuracy 0.715
C/I Youden J 0.440
complete F1 0.589
incomplete F1 0.706
backchannel F1 0.727
wait F1 0.851
wait recall 0.740

参考: 同一評価セットでの他系統

系統 Macro-F1 C/I Youden J
VAD-only (silero, τ=550ms) 0.150 0.10
Cascaded (ASR 文字列のみ) 0.538 0.02
Semantic (音声表現を LLM 入力に) 0.639 0.36
Unified (本モデル) 0.718 0.440
easy-turn-ja (exp11a, 前世代) 0.810 0.46

論文が示す積み上がり(VAD-only < Cascaded < Semantic < Unified)は再現していますが、前世代の easy-turn-ja には精度で届いていません

⚠️ この 0.810 は full200(200 件)での値です。easy-turn-ja の model card は別の評価セット(824 件)の数値を載せているため、両者を直接引き比べることはできません。

VAD-only との比較

運用時の挙動を、同じ 200 件で比較したものです。

話し終わりの取り逃し 誤って割り込む 相槌に割り込む
VAD-only (τ=550ms) 0.90 0.13 0.62
Unified (本モデル) 0.44 0.13 0.08

話し終わりの取り逃しと相槌への割り込みは大きく改善します。一方、誤って割り込む率は VAD-only と同じ 0.13 で、統計的な差は出ていません(McNemar 検定 p=1.0)。

推論性能

指標
end-to-end 遅延 P95 110.2ms(エンコーダ 59.6 + 判定器 50.6)
参考: easy-turn-ja 291ms
チャンク処理(エンコーダのみ, median) 11.8〜16.0ms
エンコーダ VRAM(fp32, ピーク) 5.15GB

計測は RTX 3090 / RTX 4090 上での実測です。Unified 全体(エンコーダ + LLM + Adapter + Detector)の推論ピーク VRAM は未実測です。

使い方

推論コードは yousan/fast-turn-jp(Apache-2.0)にあります。

git clone https://github.com/yousan/fast-turn-jp
cd fast-turn-jp
uv sync
from scripts.vast.eval_unified import load_unified_detector

detector = load_unified_detector(
    unified_ckpt="path/to/fast-turn-ja",        # unified.pt があるディレクトリ
    adapter_ckpt="path/to/fast-turn-ja",        # adapter.pt があるディレクトリ
    qwen3_ckpt="path/to/fast-turn-ja/qwen3",    # SFT 済み Qwen3-0.6B
    device="cuda", dtype="bfloat16",
)

エンコーダの中間 hidden は NeMo の cache-aware streaming から forward hook で取得します(fastturn_ja/encoder/ を参照)。

unified.pt は fusion の構成キーを内部に保持しており、復元時に fusion_config_from_ckpt() を通す必要があります。load_state_dict は strict のままなので、構成を取り違えるとキーの過不足で必ず失敗します(黙って別のモデルになることはありません)。

学習データ

出所 件数 ライセンス 用途
turn2k v3(LLM 生成の架空台本を Irodori-TTS-500M-v3 で合成) 1,825 MIT (TTS) 学習
J-CHAT(実会話) 1,841 CC BY-NC 4.0 学習
合計 3,666(学習 3,300 / 検証 366)
TalkBank CallHome Japanese 200 CC BY-NC-SA 評価のみ。学習には使用していません

学習時のクラス分布は complete 1,555 / incomplete 1,580 / backchannel 281 / wait 250 です。

学習は論文の 4 段階のうち、ASR 事前学習を除く 3 段階(Modality Alignment / Joint Training / Modality Fusion)を実施しています。

制限事項

利用前に必ずお読みください。

  • PoC ラインには到達していません。 受け入れ基準 10 件のうち達成は 5 件です。研究成果として公開しており、製品への組み込みは想定していません
  • 前世代の easy-turn-ja に精度で劣ります(同一評価セットで 0.718 対 0.810)。優位なのは遅延のみです(110.2ms 対 291ms)
  • この重みは 12 seed の分布のうち上振れした個体です。 同一構成で学習の乱数だけを変えて 12 回学習すると Macro-F1 は平均 0.6664(標準偏差 0.0510)で、本重みの 0.7183 は +1.02σ に位置します。再学習しても同じ数値は再現しません
  • 論文の中心的主張(音響融合で最良になる)は検証できていません。 Unified と Semantic の差は 12 seed ずつの比較で +0.019(z=+1.25、判定境界は z≥2)です。否定されたわけではなく、未検証です
  • 評価セットが小さく(n=200)、95% 信頼区間は [0.655, 0.775] です。精度に関する指標はほとんど統計的に決着していません
  • 評価セットに既知の欠陥があります。 wait とドメインが完全に交絡しており(5〜8kHz の帯域だけで分離 AUC 0.999)、相槌 50 件の異なり表層形は 7 種(86% が「うん」)しかありません
  • 前段の ASR が日本語の相槌を中国語・英語として転写することがあります。 評価セットでは出力の 38% が壊れており、相槌 50 件では仮名が 1 文字も出ませんでした(「うん」→「嗯」「Mm.」など)
  • 学習・評価に使った実会話は電話品質(8kHz 由来)が中心です。広帯域の音声での挙動は測っていません
  • Unified 全体の推論 VRAM は未実測です

ライセンス

CC BY-NC-SA 4.0(研究用・非商用)

学習データに J-CHAT(CC BY-NC 4.0、日本の著作権法第 30 条の 4 の目的に限定して利用)を含むため、商用利用はできません。

  • 土台の Qwen3-0.6B は Apache-2.0 です
  • エンコーダの Nemotron-3.5-asr-streaming-0.6b(OpenMDW-1.1)は同梱していません
  • 推論コード(yousan/fast-turn-jp)は Apache-2.0 です

引用

学習データの提供元には引用義務があります。

@inproceedings{nakata2024jchat,
  title={J-CHAT: Japanese Large-scale Spoken Dialogue Corpus for Spoken Dialogue Language Modeling},
  author={Nakata, Wataru and others},
  year={2024}
}

評価に使用した TalkBank CallHome Japanese: doi:10.21415/T5H59V

再現元の論文:

@article{fastturn2026,
  title={FastTurn: Unifying Acoustic and Streaming Semantic Cues for Low-Latency and Robust Turn Detection},
  journal={arXiv preprint arXiv:2604.01897},
  year={2026}
}

関連

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ayousanz/fast-turn-ja

Finetuned
Qwen/Qwen3-0.6B
Finetuned
(1175)
this model

Paper for ayousanz/fast-turn-ja