🚀 TEN Turn Detection
全二重対話通信のためのターン検出
🚀 クイックスタート
TEN Turn Detectionは、GitHub上のTEN-framework/ten-turn-detectionで利用可能です。
📦 インストール
pip install "transformers>=4.30.0"
pip install "torch>=2.0.0"
モデルの重み
TEN Turn Detectionモデルは、HuggingFace上で利用可能です。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = 'TEN-framework/TEN_Turn_Detection'
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = model.cuda()
model.eval()
def analyze_text(text, system_prompt=""):
inf_messages = [{"role":"system", "content":system_prompt}] + [{"role":"user", "content":text}]
input_ids = tokenizer.apply_chat_template(
inf_messages,
add_generation_prompt=True,
return_tensors="pt"
).cuda()
with torch.no_grad():
outputs = model.generate(
input_ids,
max_new_tokens=1,
do_sample=True,
top_p=0.1,
temperature=0.1,
pad_token_id=tokenizer.eos_token_id
)
response = outputs[0][input_ids.shape[-1]:]
return tokenizer.decode(response, skip_special_tokens=True)
text = "Hello I have a question about"
result = analyze_text(text)
print(f"Input: '{text}'")
print(f"Turn Detection Result: '{result}'")
✨ 主な機能
-
コンテキスト認識型ターン管理
TEN Turn Detectionは、言語パターンと意味コンテキストを分析して、ターンの完了ポイントを正確に識別します。この機能により、システムはコンテキストに適した割り込みを判断し、さまざまな対話シナリオで自然な会話の流れを維持することができます。
-
多言語ターン検出サポート
TEN Turn Detectionは、英語と中国語の両方の言語を総合的にサポートしています。多言語の会話でターンテイキングの手がかりと完了信号を正確に識別するように設計されています。
-
卓越した性能
複数のオープンソースソリューションと比較して、TENは公開されているテストデータセットのすべての指標で卓越した性能を達成しています。
📚 ドキュメント
概要
TEN Turn Detectionは、人間とAIエージェントの自然で動的なコミュニケーションを目的として設計された高度な智能ターン検出モデルです。この技術は、人間とAIの会話で最も難しい課題の1つである、自然なターンテイキングの手がかりを検出し、コンテキストを考慮した割り込みを可能にすることを解決します。TENは、会話のコンテキストと言語パターンの深い意味理解を組み込み、AIとのより自然な対話を実現します。
TEN Turn Detectionは、ユーザーのテキストを3つの主要な状態に分類します:
finished:ユーザーが完全な考えを表現し、応答を期待している完了した発話。例: "Hey there I was wondering can you help me with my order"
wait:システムが自信を持ってさらなる発話が続くかどうかを判断できない曖昧な発話。例: "This conversation needs to end now"
unfinished:ユーザーが一時的に一時停止しているが、話を続ける意図がある明らかに未完了の発話。例: "Hello I have a question about"
これらの3つの分類状態により、TENシステムはターンテイキングを賢く管理することで自然な会話のダイナミクスを作り出し、会話の流れを維持しながら不自然な割り込みを減らすことができます。
TEN Turn Detectionは、意味分析のためにトランスフォーマーベースの言語モデル(Qwen2.5 - 7B)に基づく多層アプローチを利用しています。
用意されたデータセット
私たちは、AI対話システムのターン検出能力を評価するために特別に設計された、中国語と英語のバイリンガルの会話入力コレクションであるTEN - Turn - Detection TestSetをオープンソース化しました。このデータセットは、3つの異なるコンポーネントで構成されています:
wait.txt:会話の一時停止または終了を要求する表現が含まれています。
unfinished.txt:途切れた発話を持つ不完全な対話入力が特徴です。
finished.txt:複数のドメインにわたる完全な会話入力を提供します。
検出性能
私たちは、テストデータセットを使用して、いくつかのオープンソースモデルのターン検出能力を総合的に評価しました:
言語 |
モデル |
完了 精度 |
未完了 精度 |
待機 精度 |
英語 |
モデルA |
59.74% |
86.46% |
N/A |
英語 |
モデルB |
71.61% |
96.88% |
N/A |
英語 |
TEN Turn Detection |
90.64% |
98.44% |
91% |
言語 |
モデル |
完了 精度 |
未完了 精度 |
待機 精度 |
中国語 |
モデルB |
74.63% |
88.89% |
N/A |
中国語 |
TEN Turn Detection |
98.90% |
92.74% |
92% |
⚠️ 重要提示
- モデルAは中国語の処理をサポートしていません。
- モデルAとモデルBのどちらも、 "WAIT"状態の検出をサポートしていません。
🔧 技術詳細
TEN Turn Detectionは、トランスフォーマーベースの言語モデル(Qwen2.5 - 7B)を利用して、会話のコンテキストと言語パターンの深い意味理解を行います。このモデルは、多層アプローチを採用しており、ターン検出の精度を向上させるために最適化されています。
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下で提供されています。
引用
もしあなたが研究やアプリケーションでTEN Turn Detectionを使用する場合は、以下を引用してください:
@misc{TEN_Turn_Detection,
author = {TEN Team},
title = {TEN Turn Detection: Turn detection for full-duplex dialogue communication
},
year = {2025},
url = {https://github.com/TEN-framework/ten-turn-detection},
}