ja-tts-g2p-bench
收藏资源简介:
这是一个用于评估日语TTS(文本转语音)系统中汉字读音(g2p)性能的基准测试数据集。它包含151个经过人工验证的问题,覆盖8个类别(如同表記異読み、数字・助数詞等),旨在测试不同TTS引擎在上下文相关汉字读音上的准确性。数据集包括WAV音频文件和结果JSONL文件,可通过HuggingFace获取。
This is a benchmark dataset for evaluating the grapheme-to-phoneme (g2p) performance of kanji pronunciation in Japanese Text-to-Speech (TTS) systems. It contains 151 manually verified entries covering 8 categories such as homographic heterophones, numbers and classifiers, etc., aiming to test the accuracy of different TTS engines in context-dependent kanji pronunciation. The dataset includes WAV audio files and result JSONL files, and is accessible via Hugging Face.
ja-tts-g2p-bench — 日本語 TTS の「漢字の読み(g2p)」性能ベンチマーク
概要
日本語TTS(音声合成)が、文脈に応じて読みが変わる漢字を正しく読み分けられるかを数値で比較するベンチマーク。同一表記でも文脈により読みが変わる日本語の特性(例:「市場」=しじょう/いちば、「人気」=ひとけ/にんき)に着目し、各TTSエンジンのg2p(grapheme-to-phoneme)性能を評価する。
リーダーボード(151問・人手検証済み・高いほど良い)
| 順位 | エンジン (モデル) | 正解率 | 95%信頼区間 | 正解数 |
|---|---|---|---|---|
| 🥇 | gemini (gemini-3.1-flash-tts-preview) |
80.1% | 73–86% | 121/151 |
gemini (gemini-2.5-pro-tts) |
77.5% | 70–83% | 117/151 | |
| 🥈 | voicevox (speaker 3) | 69.5% | 62–76% | 105/151 |
| 🥉 | openai (gpt-4o-mini-tts) |
56.3% | 48–64% | 85/151 |
gemini (gemini-2.5-flash-tts) |
55.6% | 48–63% | 84/151 | |
qwen3 (qwen3-tts-flash) |
52.3% | 44–60% | 79/151 |
ペア有意差検定結果(McNemar検定・Holm-Bonferroni補正)
- gemini > voicevox: Δ正解率 +0.106、補正後 p=0.023(有意)
- voicevox > openai: Δ正解率 +0.132、補正後 p=0.0045(有意)
- openai vs qwen3: Δ正解率 +0.040、補正後 p=0.31(有意差なし)
→ 漢字読み性能は gemini が最良、voicevox が続く。
カテゴリ別正解率(参考値)
読みが割れる原因ごとに8カテゴリに分類(右4カテゴリはn=6の小標本のため点推定値のみ参考)。
| エンジン (モデル) | 同表記異読み (n=42) | 数字・助数詞 (n=33) | 送り仮名 (n=33) | ドラマ字幕 (n=19) | 熟字訓 (n=6) | 動詞の活用 (n=6) | 重箱・湯桶 (n=6) | 音訓の分野依存 (n=6) |
|---|---|---|---|---|---|---|---|---|
| gemini (3.1-flash-tts-preview) | 0.79 | 0.88 | 0.73 | 0.74 | 0.83 | 0.67 | 1.00 | 1.00 |
| gemini (2.5-pro-tts) | 0.83 | 0.67 | 0.82 | 0.79 | 0.67 | 0.83 | 1.00 | 0.50 |
| voicevox (speaker 3) | 0.71 | 0.67 | 0.58 | 0.74 | 0.83 | 0.67 | 1.00 | 0.83 |
| openai (gpt-4o-mini-tts) | 0.55 | 0.55 | 0.58 | 0.53 | 0.67 | 0.67 | 0.83 | 0.33 |
| gemini (2.5-flash-tts) | 0.48 | 0.61 | 0.45 | 0.58 | 0.67 | 0.83 | 1.00 | 0.50 |
| qwen3 (qwen3-tts-flash) | 0.50 | 0.52 | 0.52 | 0.58 | 0.67 | 0.33 | 1.00 | 0.17 |
カテゴリ定義:
- 同表記異読み(heteronym):辞書的に複数の読みを持つ語
- 数字・助数詞(context_numeral):数え方で読みが変わる
- 送り仮名(okurigana):活用や連濁で読みが割れる
- ドラマ字幕(drama_specific):字幕的な当て読み(義訓)
- 熟字訓(jukujikun):辞書標準の非合成読み
- 動詞の活用(verb_conjugation):活用・自他で割れる
- 重箱・湯桶読み(juubako_yuto):音訓混在の複合語
- 音訓の分野依存(onkun_domain):分野・文脈で音訓が切替
対象エンジンの特性
| 学習(ニューラル)g2p | 辞書ベース g2p | |
|---|---|---|
| クラウド・クローズド | gemini / openai / qwen3 | — |
| ローカル・オープン | (未カバー) | voicevox(OpenJTalk) |
- オープンウェイトで自己ホスト可能かつ学習ベースg2pのエンジンは未計測(Fish / OpenAudio S1-miniは保留中)。
採点方法
ASRの文字起こしは文脈補正で誤読を洗浄するため使用不可。代わりに候補読み(全ひらがな文)を音声にteacher-forcingし、音響尤度が最も高い読みを選ぶ照合方式で判定(精度0.93–0.95、人手60件検証)。
データセット構成
- 採点項目:
data/items_read_bench_v1.jsonl(151件、ファイル上はbenchmark_exclude9件を含む160件) - 人名参考集:
data/items_names_reference.jsonl(23件、採点対象外) - 検証基盤用:
data/items_blindspot_v1.jsonl(150件)、data/items_blindspot_v0.jsonl(30件)、data/items_blindspot_smoke.jsonl(3件) - HuggingFace Dataset: https://huggingface.co/datasets/kawajiri-tellernovel/ja-tts-g2p-bench(WAV+結果JSONL)
主なファイル
read_bench.py— 漢字読みベンチ本体(中断後レジューム対応)reading_router.py— 読み推定ルータalign_discriminator.py— 音声↔文字の照合器reading_verifier.py— 読み判定の検証+再採点CLIgen_items.py— 項目ジェネレータtts_engines.py/tts_adapters_extra.py— TTSレジストリasr_backends.py/asr_adapters_extra.py— ASRレジストリrun_matrix.py— {TTS}×{ASR}行列集計
実行方法
bash
最短実行例
uv sync --extra asr --extra tts && source .venv/bin/activate python read_bench.py --tts all --out results_read_bench.jsonl
独自項目で実行
python read_bench.py --items my_items.jsonl --tts all
制限と注意点
- 採点器精度がエンジン横断で未検証(gemini単独n=60)
- 人手検証が単一アノテータ
- 項目の94%がGemini著者(分布の中立性は未検証)
- ヒト天井なし
- Gemini TTSはpreviewモデルのため計測時点の値
- 人名の当て字(例:「月→らいと」)は振り仮名なしでは原理的に読めず、ベンチ本体から除外





