会話比較と限定導入の検証

cases.json は架空会話16ケース・37ターン。調整用4ケースと採用評価用12ケースを分ける。採用評価の入力・確認点を見て指示を調整した場合は、そのケースを調整用へ移し、新しい採用評価ケースを用意する。

モデル比較

  1. Unityで検証用キャラを読み込み、Play Modeにする。台本・Native/OBS配信・アプリ外の録音や送出を停止する。
  2. AituberStudio → 会話の比較・音声検証 を開く。対象と「検証端末・環境」を指定する。
  3. 同じケースを context_only_none(材料だけ)、planned_none(状況整理あり)、planned_low(状況整理+少量の推論)でそれぞれ3反復する。モデル・キャラ・履歴公開条件・音声条件を固定する。
  4. 文脈/訂正、継続性、キャラらしさ、初見への明瞭さ、見続けたい度を1〜5で評価する。0は未評価。期待結果はモデルへ送信しない。自発発話の見送りも状況に適しているか評価する。
  5. この結果をキャラの声で確認 で個別に再生し、声・間・表情を評価する。音量0、別の音声再生中、キャラや設定変更時は開始しない。生成と音声はサービスの利用枠を消費する。
  6. 結果をJSONへ保存する。キャラ/設定/コード/ケースの指紋、モデル、環境、生成時間、実測できた初音声までの時間を保存する。開始通知がなく完了receiptだけ届いた場合、初音声はnullのままにする。

これは生成コンポーネントの比較。本物のCommentStock、Safety Filter、ResponseDirector、字幕ボードを通すE2Eではない。履歴は独立したSituation/CharacterExperienceに生成結果を仮想配送して構成し、実配信の履歴・質問受付・人物記憶を更新しない。音声再生の完了だけで面白さやアバターの同期を合格にはしない。

比較用の推論量は要求のAsyncLocal scopeだけへ設定し、キャラの設定値やクラウドへ保存しない。対応する会話モデル/ローカル推論だけを使用し、別モデルへ自動で切り替えない。推論量を扱えないローカルモデルではnoneの比較が可能で、lowは実行しない。

実経路での待ち時間・長時間運転

通常のコメント受付と台本・自発発話を使った検証配信は、上の生成比較とは別に実施する。AituberStudio → 会話体験モニター から、本文を含まない生成計測と単一コメントの配送計測をJSONへ出力できる。

最低1時間、コメント混雑・回答待ち・ノード遷移・カンペ割込み・TTS遅延/失敗を含めて実施する。繰り返し、不要な沈黙、質問の未回収、初見への分かりやすさ、実音声と字幕/表情を確認する。10,000往復の自動テストはメモリ上限の検証であり、実時間の耐久試験の代用ではない。

限定導入の判断と設定復帰

release-evidence.template.json を別のローカルファイルへコピーし、実測した対象・設定指紋・モデル・音声条件を記録する。元のテンプレートは空欄のまま残す。指紋は次のコマンドで確認できる。

python3 scripts/conversation-quality/assess.py \
  --release docs/analysis/character-response-20260922/evaluation/release-evidence.template.json \
  --fingerprints

限定導入前に、検証用キャラの設定を保存 → 会話品質v2/lowへ変更 → 実効設定と実発話を確認 → 元設定へ戻す → 再取得した設定が一致することを確認し、記録する。対象キャラと環境を確定して行い、台本/配信を動かしたまま設定を切り替えない。設定は機密を含み得るためリポジトリへ追加しない。

録画、E2E報告、1時間以上の連続運転報告、設定復帰前後の記録、配布候補Playerのアーカイブには実ファイルのSHA-256を付ける。復帰前後は同じ形式に正規化した設定ファイルを比較する。各報告のpassed/restoredは実施者の確認結果であり、スクリプトが映像や会話の意味を自動判定するわけではない。

python3 scripts/conversation-quality/assess.py \
  --release /path/to/release-evidence.json \
  --report /path/to/comparison-results.json \
  --output /path/to/rollout-readiness.json

--reportは複数回指定できる。初期の採用基準は、採用評価12ケース×3条件×3反復、全ターンの5評価軸が3以上、状況整理ありの平均評価が基準条件を下回らないこと。生成時間が場面予算+2秒を超えた結果は不合格とし、音声確認はplanned_lowの全採用評価ケースで少なくとも1件ずつ必要。これらはこの検証セットの暫定基準で、一般的な「面白い」の認定値ではない。

現在と異なるソース/ケース/対象条件、重複行、空欄、NaN、部分的なケース、未評価、欠落・改変された成果物は合格にしない。終了コード0は限定導入に必要な証拠が揃った状態、2は不足あり。このツールはデプロイや本番設定の変更を行わない。 合格後に検証済みPlayerを限定端末へ適用し、実効設定を再確認する。Admin/Functionsを変更する場合はリポジトリのstaging→production手順に従う。

自動テスト:

python3 -m unittest discover -s scripts/conversation-quality -p 'test_*.py'

タスク固有の評価、反復比較、人の評価との照合を採用する根拠: OpenAI Evaluation best practices(2026-09-22確認)。この指針は本システムの品質向上を証明したものではない。