AI音声の固有名詞を直すときは、原表記、期待する読み、使う音声サービスの対応を先に決めます。原稿へひらがなを足す、発音辞書を使う、SSMLで読みを指定する方法は、同じ入力形式とは限りません。生成音声を聞かずに、タグがあるから正しく読めたとは判断できません。
この記事では、架空の短文から、表示用の原文、読み替え表、SSML案を作ります。音声生成や発音の実測は行っていません。XMLとしての読み込みと、例で使う要素・属性の一部をローカルで検査したものです。
目次
原表記と、期待する読みを別に記録する
読みを直す前に、名前の本人、組織の資料、原稿担当者など、どこで正しい読みを確かめるかを決めます。AIが自然そうな発音を選んだことを、読みの正解の根拠にはしません。
次の「テスト工房」と「A&B」は、この説明だけに使う架空の名称・ラベルです。期待する読みも例として設定したもので、実在の名称の読みを確認したものではありません。
表は横にスクロールできます
| 項目 | 今回の例 | 残すもの |
|---|---|---|
| 原表記 | テスト工房 | 表示用原稿では維持 |
| 読み替え案 | てすとこうぼう | 誰が読みを決めたか、適用する範囲 |
| 文脈 | テスト工房で、A&Bの資料を確認します。 | 助詞を含む短い試験文 |
| 未確認 | A&Bの実際の読まれ方、アクセント | 音声で確認する項目 |
一度だけ出る語なら局所的な読み替え、何本もの原稿で使う語なら辞書での管理も候補です。ただし、同じ表記でも文脈で読みが違う場合があります。共有辞書へ追加する前に、対象の原稿やプロジェクト、似た語への影響を確認します。
方式を選ぶ前に、サービスとモデルを固定する
SSMLを受け付けるか、発音辞書を使うか、APIと編集画面のどちらで設定するかを確認します。辞書の登録形式と、読み上げ原稿の入力形式も分けます。
ElevenLabsの発音辞書ガイドは、phonemeの対応モデル・言語の条件と、別の読み表記へ置き換えるaliasを区別しています。また、例に使うPLS辞書は大文字・小文字を区別すると説明しています。入力語と本文の表記、対象モデル、適用した辞書の版を確認します。ElevenLabs公式:発音辞書(新しいタブで開く)
このガイドの辞書ファイルと、後で示すSSML原稿は別の形式です。SSMLのsub要素を、そのまま任意のサービスの辞書登録欄へ貼る手順ではありません。未対応の形式を、AIが書けるという理由だけで採用しないようにします。
原文を残して、読み替え案を作る
表示用の原文は次の二文です。
テスト工房で、A&Bの資料を確認します。次に、手順を説明します。
字幕や画面へ出す正式表記を、音声用のかな表記で上書きしません。読み替えの対象、変更理由、未確認事項を別に残します。
SSML 1.1では、subのalias属性で囲んだ文字列に代わる発音用の表記を指定できます。breakのtime属性は、秒やミリ秒で間の長さを指定するものです。次はこの二つを含む、説明用のSSML案です。W3C:SSML 1.1(新しいタブで開く)
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="ja-JP">
<p>
<s><sub alias="てすとこうぼう">テスト工房</sub>で、A&Bの資料を確認します。</s>
<break time="300ms"/>
<s>次に、手順を説明します。</s>
</p>
</speak>
この例は、特定のサービスへ投入して動作した原稿ではありません。300msは指定した値で、生成音声の間を測定した結果ではありません。声、モデル、入力形式への対応を確かめてから、実際の出力を聞きます。
例のA&Bは、XML内ではアンパサンドをエスケープして書いたものです。XMLを解析して取り出す本文にはA&Bが残ります。引用符や特殊文字を含む原稿では、文字の保持と、XMLの書式の両方を確認してください。
XML、指定内容、音声を段階ごとに確認する
最初にXMLとして読み込めるかを調べます。閉じタグの不一致や、エスケープしていないアンパサンドは、この段階で見つかる問題です。
次に、使う形式と指定した要素・属性を確認します。XMLとして読めても、存在しないタグや、想定と違う入力形式を使っている場合があります。今回の例ではspeak、p、s、sub、breakの範囲、原文の保持、alias、300msの指定を確認しました。SSML全仕様への適合を検証したわけではありません。
最後に、対象サービスで音声を生成し、期待する読みと文中の自然さを聞きます。ここは今回未実施です。XML検査が通った結果を、この音声確認の代用にはしません。
表は横にスクロールできます
| 段階 | 確認すること | 今回の状態 |
|---|---|---|
| 原文 | 対象語と周囲の文を保持したか | 例の原文と照合 |
| XML | 解析できるか、文字を取り出せるか | ローカルで確認 |
| 限定した構造 | 例で使う要素、alias、間の指定 | ローカルで確認 |
| サービスへの入力 | 対応モデル・方式で受け付けられるか | 未実施 |
| 音声 | 読み、アクセント、間、周囲への影響 | 未実施 |
検査のためにタグを外した本文と、aliasを適用した読み替え案も分けます。subには元の表記と別の読みが含まれるため、どちらを抽出したかを区別しないと、「原文が変わった」「読みが直っていない」という判定を取り違えます。
短い音声比較では、一度に条件を変えすぎない
実際に試すときは、まず読み替えなしと、読み替えだけを加えた案を同じ文・声・モデルで比べます。次に、必要なら間の指定を加えます。読み替えと速度と声を同時に変えると、何が効いたかを切り分けにくくなります。
上のSSML例には読み替えと間の両方がありますが、比較実験の結果ではありません。設定を分けて試すために、読み替えのみの案も保存しておくと確認しやすくなります。
同じ語が別の助詞とつながる文、似た表記の語、大小文字や全角・半角が違う表記も確認します。辞書のルールがどの単位で適用されるかはサービスの仕様へ戻ります。単語一つが読めたことだけで、すべての原稿で同じ結果になるとは扱いません。
AIへは、原稿と確認事項を別に返させる
読み上げ用の調整案を作ってください。
表示用の原文は保持し、音声用の案を別にしてください。
対象サービス・モデル・入力形式:[確認済みの条件]。
読み替え表:[原表記、期待する読み、根拠、適用範囲]。
対応が未確認のタグや音素記号を追加しないでください。
SSML案を作る場合は、本文と属性の文字を正しく扱ってください。
出力:原文、読み替えだけの案、必要なら間を加えた案、変更表、未確認事項。
人名や固有名詞の読みを、資料なしで推測して確定しないでください。
検査した内容と、音声を聞かないと分からない内容を分けてください。
入力:[必要な原稿と条件]。
読みを変更したら、辞書や原稿の版、対象語、声・モデル、確認日、確認した文、聞き直しの結果を残します。モデルを変える、辞書を共有する、原稿の表記を変える場合も、影響する短文を再確認します。
辞書を増やすこと自体を目標にせず、実際の読みが正しく、周囲の言葉を壊さず、表示用の原表記も保持できるかで判断します。今回の成果物は、その確認へ渡す原文・読み替え・SSML案であり、音声生成を終えた納品物ではありません。
参考資料
- W3C:Speech Synthesis Markup Language 1.1(新しいタブで開く)
- ElevenLabs:Using pronunciation dictionaries(新しいタブで開く)
公式資料の確認日:2026年10月20日。短文、名称、読み替え、間の指定は説明用の例です。XML解析と原文・指定内容の限定検査をローカルで行いました。SSML全仕様への適合、辞書登録、音声生成、発音、実際の間、画面表示は検証していません。
