注意

現時点では、PLS辞書はリーディングシステムでサポートされていません。

要約

発音辞書で、テキストの音声読み上げを改善できます。

例1 — 最小の辞書ファイル

<lexicon
  version="1.0"
  alphabet="x-sampa"
  xml:lang="en"
  xmlns="http://www.w3.org/2005/01/pronunciation-lexicon">
   <lexeme>
	  <grapheme>acetaminophen</grapheme>
	  <phoneme>@"sit@'mIn@f@n</phoneme>
   </lexeme>
</lexicon>

例2 — 地域による綴りの違いへの対応

<lexeme>
   <grapheme>defence</grapheme>
   <grapheme>defense</grapheme>
   <phoneme>dI'fEns</phoneme>
</lexeme>

例3 — 代替の綴りへの対応

<lexeme>
   <grapheme>vitæ</grapheme>
   <grapheme>vitae</grapheme>
   <phoneme>vitaI</phoneme>
</lexeme>

例4 — 複数の発音表記の組み込み

<lexeme>
   <grapheme>defence</grapheme>
   <grapheme>defense</grapheme>
   <phoneme>dI'fEns</phoneme>
   <phoneme alphabet="ipa">dɪˈfɛns</phoneme>
</lexeme>

例5 — ある用語の別の用語への置き換え

<lexeme>
   <grapheme>50-50</grapheme>
   <phoneme>fifty fifty</phoneme>
</lexeme>

例6 — マニフェストにPLS辞書を追加する

<item
	  id="pls"
	  href="#EPUB/lexicon.pls"
	  media-type="application/pls+xml"/>

例7 — PLS辞書とコンテンツ文書とのリンク

<html … xml:lang="en">
   <head>
	  …
	  <link
		 rel="pronunciation"
		 href="#lex/en.pls"
		 type="application/pls+xml"
		 hreflang="en" />
	  <link
		 rel="pronunciation"
		 href="#lex/fr.pls"
		 type="application/pls+xml"
		 hreflang="fr" />
	  …
   </head>
   …
</html>

解説

PLS辞書は、対応するリーディングシステムでのテキスト読み上げ (TTS) 再生レンダリングを制御できます。辞書ファイル(lexicon file)は辞書や検索ガイドのようなもので、一致する単語が見つかると、デフォルトのレンダリングの代わりに定義されている発音が使用されます。辞書で単語を定義すると、リーディングシステムのTTSエンジンによる推測に基づいたな読み上げではなく、意図した読み上げをユーザーに提供できます。

各PLS辞書は、ルートlexicon要素を持つXMLファイルです。辞書は1つ以上のlexemeエントリーで構成されます。各エントリーは、 grapheme要素で単語を定義し、 phoneme要素で発音を定義します。(例1を参照してください。)

alias要素は、ある単語を別の単語に置き換えるためにも使用できます(例5を参照)。

辞書の言語と使用する発音記号は、両方ともルートlexicon要素で定義します。

出版物にとって重要で、TTSエンジンが誤って発音する可能性のある複雑な単語については、PLSエントリーを作成する必要があります。リストには、固有名詞、名詞、技術用語、科学用語、法律用語、複雑な合成語や、その他の語が含まれます。同綴異音異義語のデフォルトのレンダリングはPLS辞書で定義し、定義した読みと違うものはSSMLタグで定義します。

PLS辞書は、EPUBコンテナーに含めるだけでは有効になりません。各コンテンツドキュメントから該当する辞書を参照してコンテンツに適用します。また、 参照先のPLSファイルの言語にhreflang属性を設定する必要があります(例6を参照)。

埋め込まれた外国語を処理するために、コンテンツ ドキュメントに複数の辞書を添付できます。(例7を参照)。

単一のPLS辞書ファイル内でのローカリゼーションは不可能ですが、地域ごとに異なった読み上げを行うために複数の辞書を添付できます。(詳細については、以下のよくある質問を参照してください。)

よくある質問

発音を記述するには IPA、 X-SAMPA、またはそれ以外のどの発音記号を使用すべきでしょうか?

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

ある発音記号を他の発音記号に変換することはできるので、勝者と敗者が明確に分かれた場合でも、どちらのアルファベットでの作業も失われることはありません。

辞書では大文字と小文字が区別されますか?

大文字と小文字を区別した発音を定義できる必要があることは明らかですが、PLS 辞書がどのように処理されるかは明らかではありません。仕様自体には、グラフィムの大文字と小文字の区別については何も記載されておらず、参考となる付録で定義されている大文字と小文字を区別する処理の要件のみが記載されています。PLS 辞書をサポートするリーディングシステムが登場するまでは、回答は推測の域を出ませんが、大文字と小文字の区別は重要な役割を果たしているため、区別があると想定されます。

出版物では、特定の用語が小文字とタイトルケース(訳者注:単語の先頭のみ大文字)の両方で表示され、同じ発音であることがあります。この場合、両方にgrapheme要素を追加します。

<lexeme>
   <grapheme>acetaminophen</grapheme>
   <grapheme>Acetaminophen</grapheme>
   <phoneme>@"sit@'mIn@f@n</phoneme>
</lexeme>

大文字と小文字の競合が発生した場合は、一般的ではない方の発音をSSMLで定義します。たとえば、アラバマ州モービル(Mobile)における加齢に伴う健康問題を調査する文書では、mobile とMobileの両方の綴りが人間の移動性(モバイル)を指している可能性があります。Mobileの発音ˈmoʊbaɪlと定義すると、都市名が誤って発音されます(逆の場合も同様です)。

言語を混ぜることに危険はありますか?

はい、レンダリングエンジンが指定された言語の音声化をサポートしていない場合、ユーザーにエラーが提示されたり、テキストが読み飛ばされたりするかもしれません。このような状況でのエラー処理は保証されません。言語固有の辞書は通常読み込まれません。

ローカリゼーションを追加できますか?

単一のPLSファイル内ではできません。phoneme要素にxml:lang属性は付与できません。語幹言語コードphonemeを指定するコンテンツドキュメントに複数のローカライズされた辞書を添付して、ユーザーのローカライズ設定で適用する辞書を選択できます(たとえば、コンテンツドキュメントでenを指定し、辞書でen-USen-GBを指定できます)。

ローカリゼーションの指定によりユーザーを排除しないようにしてください。リーディングシステムにローカリゼーションを処理できる音声が組み込まれていない場合には、辞書は読み込まれません。

すべてのリーディングシステム向けに、地域に関係ない言語の処理ができる一つの辞書を定義するのが良いでしょう。たとえば、出版物が米国英語で書かれている場合は、標準の発音辞書にデフォルトのenコードを使用し、対象地域のみにロケールを指定するのが良いでしょう。

<html … xml:lang="en">
   <head>
	  …
	  <link
		 rel="pronunciation"
		 href="#lex/en.pls"
		 type="application/pls+xml"
		 hreflang="en" />
	  <link
		 rel="pronunciation"
		 href="#lex/en-GB.pls"
		 type="application/pls+xml"
		 hreflang="en-GB" />
	  …
   </head>
   …
</html>

こうすることで、英語のリーディングシステムを持つユーザーは、少なくとも正しい米国の発音が聞けます。

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

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

関連リンク