株式会社 松尾研究所で働いている栗原です。
以前、「音声合成の日本語化手法が一般化した話」を書きました。
今回は、日本語の難しさと、それを音声合成に扱わせる難しさ、その課題に取り組むために考案した日本語言語処理部(G2P: Grapheme-to-Phoneme)について、前後編に分けて解説していきます。
専門家・理系の方でなくても読めるよう、なるべく平易に書きますのでお読みください!
前編の本記事では、「日本語の読みがいかに難しいか、それが日本語TTSの難しさにどうつながるか」を音声学・音韻論の知見からなるべく平易に書きました。後編でG2Pを説明するための準備として、韻律(プロソディー)や高低アクセントをどう機械学習と関連させて、日本語を自然に読ませるかをTransformerを応用した手法を例に解説します。
はじめに――「世界一難しい」、日本語の読み
日本語の文章を入力したら、そのまま自然な日本語で読み上げてほしい。
音声合成に対する、当たり前の要求ですよね。
私たちには、日本語を話すうちに自然に身に付いてしまった、国語の教科書にも書いていない日本語の読みの知識があります。話す時に意識もしない、この究極の暗黙知を機械に持たせようとすると、「日本語の読みは世界一難しいのでは」と音声合成研究者は頭を抱えてしまいます。言語を比べて順位をつける話ではないのですが、普段は見えていない難しさが、日本語には驚くほど多いのです。
身近な人の名前や地名を、1つ声に出してみてください。
その名前は、どこで声の高さが下がりましたか。あるいは、下がらずに続きましたか。なぜ、その読み方なのでしょうか。
普段は言えても、いざ説明しようとすると迷いませんか。自然に話せる事と、その発音の仕組みを説明できる事は、別なのです。
音声合成を作る立場から見ると、この「何となく読める」の中に、文字には書かれていない情報があります。音の高さや区切りなどの特徴を韻律(プロソディー)といい、今回のテーマである高低アクセントもその一つです。[1] 国語の教科書では、明示的に高低アクセントについて学ばないため、その概念を知らない日本人も多いと思われます(私も研究を始めるまで知りませんでしたし、最初はよく分かりませんでした)。
読み仮名が分かってもアクセントまでは分からない
日本語の難しさというと、まず「漢字に複数の読みがある」という話を思い浮かべるかもしれません。同じ文字列でも文脈によって読みが変わるので、その文章に合う読みを選ぶだけでも大変です。[1:1]
そうです。それなら、全部に読み仮名を付ければ解決するのでは、と思いますよね。
が、それだけでは足りません[1:2]。
読み仮名で音の並びを伝えられても、どこで声の高さが下がるのか、そもそも下がる場所があるのかまでは伝わらないからです。こうした違いを表す単語のアクセントのパターンを、ここでは「アクセント型」と呼びます[1:3]。
アクセントが変わると言葉の意味が変わる
しかも、アクセントは、「少し不自然に聞こえる」だけではありません。
日本語には、読み仮名が同じでも、アクセントの違いで意味を区別する単語があります。[2]
分かりやすいのが、「雨」と「飴」です。東京方言の代表的なアクセントを、↑=高、↓=低で表してみます。矢印は各音の相対的な高さを表しています。
(以下、注釈が無ければ東京方言での例です)
| 単語 | 読み | 音の高低 |
|---|---|---|
| 雨 | あめ | ↑・↓ |
| 飴 | あめ | ↓・↑ |
どちらも、読み仮名にすれば「あめ」です。それでも、声の高さの動きが、空から降る「雨」なのか、お菓子の「飴」なのかを区別する手掛かりになります。
例えば、「あめが好き」と聞いた場面を考えてみてください。雨の日が好きという話なのか、甘いものが好きという話なのか。文字を仮名だけにすると分かりませんが、音声ではアクセントが手掛かりになります。
もう一つ、「箸・橋・端」は、後ろに助詞の「が」を付けると違いが分かりやすくなります。表の三つの高低は、それぞれ「は・し・が」に対応しています。
| 単語 | 助詞を付けた読み | 音の高低 |
|---|---|---|
| 箸 | はしが | ↑・↓・↓ |
| 橋 | はしが | ↓・↑・↓ |
| 端 | はしが | ↓・↑・↑ |
特に「橋」と「端」は、単語だけでは、どちらも「低・高」です。ところが、「が」まで続けると、「橋が」では下がり、「端が」では高いまま続きます。単語の中だけでなく、後ろに続く音まで含めて、アクセントの違いが現れるわけです。[2:1]
もちろん、実際の会話では文脈から意図を補える場合もあります。アクセントを一つ間違えたら、必ず別の意味に受け取られる、という話ではありません。それでも、聞き手に毎回意味を補ってもらう、違和感を気にしないようにしてもらうのは、設計としては不親切と思います。
アクセントを正しく出す事は、声を自然に聞かせるためだけでなく、意図した言葉と意味を正しく伝えるためでもある。
読み仮名だけでは、こうした情報が足りないのです。
アクセントは発音のルールだけでなく、単語ごとの「知識」でもある
ここが、今回まずお伝えしたいところです。
アクセントの型には一定の規則があります[2:2]。でも、「その単語がどのアクセント型を持つか」まで、一般的な発音のルールだけで決められるわけではありません。[1:4][3]
特に人名・地名などの固有名詞では、漢字や読み仮名から推測するだけでなく、その語で慣用されているアクセント型を、語ごとの辞書的な知識として持っておく必要があります。 似た名前から「たぶん、こうだろう」と推定できても、それが対象の名前のアクセントと一致するとは限りません。[3:1]
例えば、固有名詞。社名や人名のアクセントを間違えて読む事は、失礼にあたる場合もあります。足りないのは、仮名の読み方ではなく、固有名詞についての発音の知識なのです。
ここでいう「辞書的な知識」は、必ず辞書を引いて調べるという意味ではありません。一般的な規則とは別に、その語の読みとアクセントを知らないと発音できない場合がある、ということです。[3:2]
人名なら、「一般的にはこの読みだろう」と推定できることと、本人が実際にどう読むかも別問題です。知らない名前を、文字だけから必ず正しく読めるとは限りません。
では、正しいアクセントが載った辞書を用意すれば良いのでしょうか。
辞書は有効です。ただし、そこに載っている単語の読み方を、そのまま並べれば済むわけではありません...!
このあたりから規則化する事に対して無理ゲー感が漂ってきますし、なぜ自分は日本語が話せるのか、自問自答が始まります。
アクセント結合という不規則な罠
単語ごとの読みとアクセントを辞書に入れておけば、全部解決するのでしょうか。
半分正解で、半分は誤りです。単語をつなげると、アクセント自体が変わることがあります...!
これをアクセント結合(accent sandhi)といいます。「世界記録」の例を、↑=高、↓=低で比べてみます。[3:3]
| 対象 | 高低の並び |
|---|---|
| 世界 | ↑・↓・↓ |
| 記録 | ↓・↑・↑ |
| 世界記録(二つをそのまま連結) | ↑・↓・↓・↓・↑・↑ |
| 世界記録 (アクセント結合) | ↓・↑・↑・↑・↓・↓ |
「世界」と「記録」を別々に読めても、それぞれの高低を並べるだけでは「世界記録」になりません。単語を足しただけなのに、アクセントの位置が変わるのです。[3:4]
しかも、こうした変化は単語がつながる度に起こり、規則性がありません[3:5]。
単語ごとに知っておかなければならない情報と、組み合わせに応じて推定しなければならない情報。その両方が必要になります。
普段は何気なく読んでいる日本語も、機械に同じ事をやってもらおうとすると、急に難しく見えてきませんか。
近年まで、音声合成が「ロボット声」に聞こえていた理由の1つが、こうした読みやアクセントの変化を十分に再現できなかったことだと言えます。
数字は簡単そうに見えて難しい
数字も、見た目ほど単純ではありません。たとえば、次を声に出してみてください。
1本 → いっぽん
2本 → にほん
3本 → さんぼん
「本」だけなら「ほん」ですし、「1」だけなら「いち」です。それなのに、組み合わせると「いちほん」ではなく「いっぽん」になります。数字を読んで、後ろに「ほん」を付ければ良いわけではありません。
数字の読みと、助数詞の読みを、それぞれ覚えて連結すれば良さそうに見えます。
が、それだけでは正しい発音になりません。日本語には500を超える助数詞があり、数詞との組み合わせには、こうした複雑で不規則な読みがあります。[3:6]
ニュースや情報読み上げを考えると、数字は頻繁に登場します。人数、金額、時刻、日付、割合、距離、回数……。
声が滑らかでも、数字の読みは間違っている音声合成に出くわした事はありませんか。
その理由を紐解くと、日本語の数詞の難しさに行き当たります。
LLMベースのTTSでは、むしろ「間違いを直せない」問題が深刻になっている
そして、この難しさは、LLMベースのTTS (Text-to-speech)になれば自然に解決するわけではありません。
むしろ、LLMベースのTTSが主流となった事で、日本語の読み間違えが増えたのではないかと言われる事もあります。
声は人間のように自然。でも、読み方やアクセントは間違っている。
私の2026年の研究会での発表でも、LLMベースのTTSは高い自然さを実現する一方、音素単位の制御が十分にできないモデルでは、利用者が誤読や韻律を修正しにくいという問題を取り上げています。[4]
YouTubeで音声合成によるナレーションを聞いていても、読み間違いや、妙なアクセント・イントネーションが気になる場面が増えたと感じています。声そのものは滑らかなのに、人名や地名、数字の読み方などで「あれ?」となる。そういう違和感です。
ここは私自身の視聴時の実感と考察であり、YouTube全体の誤り率の増加や、個々の動画で使われたモデルと原因を検証した結果ではありません。
ただ、同じような違和感を感じている方も多いのではないでしょうか。
この辺りが、現在の日本語音声合成の現在地であり、「数で殴れば解決」する訳ではない部分です。
日本語の奥深さを機械学習の側面から感じられる例だと思います。
まとめ――「当たり前に読む」を、機械にやってもらうには(次回予告)
日本語を読ませるには、漢字の読みを選ぶだけでなく、単語のアクセントを知り、語のつながりや数詞・助数詞の組み合わせに応じて読み方を変える必要があります。私たちは無意識にしていますが、機械にもこれらの情報を持たせなければなりません。[1:5][3:7]
間違うこともある以上、「必要な箇所を、意図した読み方へ直せるか」も重要です。
では、この「読み方の設計図」を、普通の日本語からどう作れば良いのでしょうか。
(ちなみに、前回の記事はこの「読み方の設計図」をどう設計したかを書いていました)
その単語の読みとアクセントの知識を、どう持たせるか。そして、それらを文章の中でどうつなぐか。
音声を作る前に、文章をどう読むかを決める。その処理を担当するのが、日本語言語処理部・G2P(Grapheme-to-Phoneme)です。最近はこの処理が省略される事もありますが、その必要性が見直されているようにも思えます。
後編では、文字の読みとともにアクセントや区切りも求める、日本語G2Pについて解説します。機械学習とアクセント辞書を使って、音声合成へ渡す「読み方の設計図」をどう作るのかを解説します。[3:8]
参考文献
脚注-
Kiyoshi Kurihara, Nobumasa Seiyama, Tadashi Kumano, “Prosodic Features Control by Symbols as Input of Sequence-to-Sequence Acoustic Modeling for Neural TTS,” IEICE Transactions on Information and Systems, Vol. E104-D, No. 2, pp. 302–311, 2021. https://doi.org/10.1587/transinf.2020EDP7104 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
「雨・飴」「箸・橋・端」は、高低アクセントによる意味の区別を説明する一般的な語例であり、紹介する論文の実験項目ではありません。語例の確認資料は、国立国語研究所「ことば研究館」の[「解説:アクセントの平板化」] ↩︎ ↩︎ ↩︎
-
Kiyoshi Kurihara, Masanori Sano, “Enhancing Japanese Text-to-Speech Accuracy with a Novel Combination Transformer-BERT-based G2P: Integrating Pronunciation Dictionaries and Accent Sandhi,” Interspeech 2024, pp. 2790–2794, 2024. https://doi.org/10.21437/Interspeech.2024-708 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
栗原 清, 「日本語LLM型音声合成における日本語文字列の検討」, 信学技報, Vol. 125, No. 371, SP2025-26, pp. 1–6, 2026年3月. 講演論文情報・抄録. 本記事では公開抄録に記載された制御性の課題と、編集可能な音素・韻律ラベルを用いる構成を参照。 ↩︎
Discussion
文中の TTS は Text to Speech ですか?