注記

現時点では、リーディングシステムではEPUB SSML属性はサポートされていません。

要約

EPUB SSML属性により、テキストの音声読み上げを改善できます。

例1 — ドキュメントルートでSSML名前空間と発音記号を表記

<html …
   xmlns:ssml="http://www.w3.org/2001/10/synthesis"
   ssml:alphabet="x-sampa">
   …
</html>

例2 — 単語レベルでの発音記号と発音を表記

単一の文字は、文脈に応じて頭文字、方向、またはその他の短縮形になる可能性があるため、辞書で定義するのは適切ではありません。

<p>
   … farther <span 
   ssml:alphabet="ipa" ssml:ph="nɔrθ">N.</span>
   another elevation begins …
</p>

例3 — 同綴異音語の異なる発音の定義

<p>
   The guitarist was playing a
   <span ssml:ph="beIs">bass</span> that was shaped
   like a <span ssml:ph="b&s">bass</span>.
</p>

例4 — デフォルトのアルファベットがすでに設定されている場合に発音を定義する

<p>
   The guitarist was playing a bass that was shaped
   like a <span ssml:ph="b&s">bass</span>.
</p>

PLS辞書には、デフォルトの発音を定義する次のエントリが含まれます。

<lexeme>
   <grapheme>bass</grapheme>
   <phoneme>beIs</phoneme>
</lexeme>

例5 — 文脈に応じて異なる発音を定義する

<p>
   You'll be an
   <span ssml:ph="Ekstr@ lArdZ">XL</span>
   by the end of Super Bowl 
   <span ssml:ph="'fOrti">XL</span>
   at the rate you're eating.
</p>

解説

SSML(音声合成マークアップ言語)を使うと、コンテンツ製作者は、出版物のデフォルトの合成音声レンダリングを、マークアップレベルでさらに正確にすることができます。SSMLを十分に使用することで、TTSの読み上げで作品を聞く人は、レンダリングエンジンの推測に基づくものではなく、コンテンツ製作者が意図したとおりの文章を聞くことができます。

SSMLのphoneme要素は、マークアップレベルで発音を定義するためのペアの属性としてEPUB 3に実装されています。

(完全なSSML仕様のサポートはEPUB 3では利用できません。)

PLS辞書とは異なり、SSMLはマークアップレベルで発音を細かく制御できます。SSMLを使用すると、同綴異音語の発音をデフォルトから変更したり、複雑な単語や数字の発音を正しく指定したりできます。

SSML属性を使用するには、まずSSML名前空間を宣言する必要があります。宣言は通常、ルートhtml要素のドキュメントごとに一回行います(例1を参照)。

デフォルトの発音記号は通常はルートhtml要素に一回定義します。これは、単一のドキュメント内で発音記号を切り替える必要はほとんどないためです。ルートにssml:alphabet属性を追加すると、ssml:ph属性のすべてのインスタンスにスコープ内発音記号が定義されます。スコープ内発音記号なしでssml:ph属性に発音を定義するとエラーになり、レンダリングエラーが発生します(例1を参照)。

ssml:ph属性が検出されると、その値が要素のコンテンツの代わりにテキスト読み上げ(TTS)エンジンに渡され、最下位レベルのオーバーライドが提供されます。SSML属性の発音はPLS辞書エントリーよりも優先されるため、同綴異音語や規則の例外が適切に処理されます。

ssml:ph属性の値は、その属性が付けられた要素の子孫要素も含めてすべてのコンテンツを置き換えることに注意してください。段落内の一つの単語の発音を定義するために、この属性をpタグに付加しないでください。段落全体の代わりにその一つの単語だけが読み上げられてしまいます。発音の指定が必要な単語にマークアップが存在しない場合は、span要素の使用をお勧めします。

SSML属性はSVGまたはMathMLコンテンツでは有効ではありませんが、それらの文法に埋め込むことができるすべてのXHTMLコンテンツでは有効です。

よくある質問

発音を記述するにはIPAやX-SAMPAなどを使用すべきでしょうか?

IPAはおそらく最も広く認識されている発音記号ですが、既存の合成音声エンジンでも完全にサポートされているわけではありません。たとえば、一部のエンジンは独自の発音記号のみをサポートしています。また、X-SAMPAはASCIIベースですが、IPAはUnicode文字を使用するため、入力するにはほとんどのキーボード レイアウトを変更する必要があり、X-SAMPAよりも開発者にとって使いにくいです。現時点では、内部ワークフローが決定要因となるはずです。最終的な答えは、リーディングシステムでどのエンジンが使用されているかによって異なります。

一つの発音記号を他の発音記号に変換することは可能であるため、勝者と敗者が明確に分かれた場合でも、どちらの発音記号での作業も失われることはありません。

PLS辞書とSSMLのどちらを使用すればよいでしょうか?

EPUB 3にこれらの技術が盛り込まれたのは、どちらかを選択しなければならないということではなく、これらの技術が互いに補完し合うようにするためです。PLS辞書を使用すると、単語を一度定義すれば、その単語が文章中に現れるたびにTTSエンジンがその単語を置き換えます。一方、SSMLは、辞書では不可能なきめ細かい制御ができますが、その代償として、置き換える必要がある用語の各インスタンスにタグを付ける必要があります。

SSMLのみを使用することは可能ですが、製作時間の面でコストがかかり、処理する必要がある一意の用語の数と出現頻度によっては、、コンテンツ ファイルのサイズが過度に大きくなる可能性があります。

関連リンク