YomiScript LLM と音声合成エンジンを分離する、新しい共通インターフェース
文章を書いた LLM が読み方まで YomiScript で書き、軽量なエンジンがその通りに話します。エンジンは読みを推測しないので、ブラウザーの中だけでも動きます。
聞き比べる
同じ文を、元の Kokoro と YomiScript で聞いてください。「生物」「市」の読みが変わります。
ほかの文も聞き比べる
数字で見る
読みの正解率(読み分けの難しい62文、音声から自動判定)
同形異音語、略語、数字、日付を集めたテストで、すべて同じ判定モデルが音声から読みを判定した結果です(2026年10月31日)。各社の TTS は文字をそのまま渡して声を1種類で3回ずつ、YomiScript は Kokoro で1回です。 判定モデルの確認は Kokoro の音声でのみ行っていて(一致率 93.2%)、各社の音声の判定は人の耳では確認していません。正解の読みは暫定で、日本語一般の正解率でも、声の自然さの評価でもありません。 Gemini との差は小さく、Codex との差は誤差の範囲を出ません。音声でなく LLM が書いた読みそのものを70文で採点すると、Claude は 98.6%、Codex は 100% でした(eval/tts_readings、eval/browser_tts)。
仕組み
-
読み手(Yomite)
文章を書いた LLM が、その文脈で読みを決めます。
一日から三日まで休みです。 -
YomiScript
発音(IPA)と元の文字を書いた、エンジンに依存しない形式です。
ja /tsɯitatɕi<t:一日> kaɾa<t:から> mikka<t:三日> made<t:まで> jasɯmi<t:休み> desɯ<t:です。> ↘/ -
語り手(Katarite)
読みを推測せず、書かれた通りに音声にします。文章の解析が要らないので軽量です。
Kokoro-82M / Supertonic 3
「一日」を「ついたち」と読むと決めたのは LLM で、エンジンはそれに従うだけです。読み手と語り手は別々に置き換えられます。日本語では、話す直前に辞書とピッチモデルがアクセントを加えられます。
この仕組みで動くデモ
使ってみる
コマンドライン
npm install -g yomiscript
yomiscript speak "ja /ame<t:雨> desɯ<t:です。> ↘/"
yomiscript instructions # LLM に渡す、YomiScript の書き方
MCP サーバー(Claude Code など)
claude mcp add yomiscript -- npx -y @yomiscript/mcp
ブラウザーやアプリから使うパッケージは @yomiscript/kokoro と @yomiscript/ja-accent です。モデルは初回の利用時にダウンロードします。詳しくは パッケージの一覧をご覧ください。
目指していること
音声合成エンジンごとに発音の指定方法が違う状態をやめて、LLM とエンジンの間に共通の形式を置くことを提案しています。YomiScript は IPA と BCP 47 の言語タグに基づく言語非依存の仕様で、アクセント、声調、強勢、言語の切り替えまで同じ形式で書けます。仕様は公開していて、現在は v0.2 のドラフトです。
SSML にも発音を指定する仕組みがありますが、文字が本体で、発音は省略できる補足です。YomiScript では発音が本体なので、エンジンは文字を読む必要がありません。YomiScript の狙いは読みの精度だけでなく、言語に依存せず韻律まで書けることです。
他の言語についての研究はこれからですが、省略形などの読み方に有効だと考えています。
このように分離しておくことで、語り手(Katarite)の部分だけに集中した、オープンな形での研究・開発が進むことを期待しています。