AI音声の発音指定を作る方法|原文・読み替え・SSML案を分ける

架空短文で原表記と読み替えを分け、SSML案のXML・本文・alias・間を検査。辞書形式、モデル対応、実際の発音確認を区別します。

AIものさし編集部

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&amp;Bの資料を確認します。</s>
    <break time="300ms"/>
    <s>次に、手順を説明します。</s>
  </p>
</speak>

この例は、特定のサービスへ投入して動作した原稿ではありません。300msは指定した値で、生成音声の間を測定した結果ではありません。声、モデル、入力形式への対応を確かめてから、実際の出力を聞きます。

例のA&amp;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案であり、音声生成を終えた納品物ではありません。

参考資料

公式資料の確認日:2026年10月20日。短文、名称、読み替え、間の指定は説明用の例です。XML解析と原文・指定内容の限定検査をローカルで行いました。SSML全仕様への適合、辞書登録、音声生成、発音、実際の間、画面表示は検証していません。