注記
現時点では、リーディングシステムではEPUB SSML属性はサポートされていません。
要約
EPUB SSML属性により、テキストの音声読み上げを改善できます。
例
解説
SSML(音声合成マークアップ言語)を使うと、コンテンツ製作者は、出版物のデフォルトの合成音声レンダリングを、マークアップレベルでさらに正確にすることができます。SSMLを十分に使用することで、TTSの読み上げで作品を聞く人は、レンダリングエンジンの推測に基づくものではなく、コンテンツ製作者が意図したとおりの文章を聞くことができます。
SSMLのphoneme
要素は、マークアップレベルで発音を定義するためのペアの属性としてEPUB 3に実装されています。
-
ssml:alphabet
属性で、デフォルトの発音記号を設定します。 -
ssml:ph
属性で、テキストコンテンツを持つ要素、または音声発音を関連付けることができる要素(たとえば、添付された属性から発音が派生する空の要素)の発音を定義します。
(完全な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のみを使用することは可能ですが、製作時間の面でコストがかかり、処理する必要がある一意の用語の数と出現頻度によっては、、コンテンツ ファイルのサイズが過度に大きくなる可能性があります。