HTMLにおける音声提示の仕様

W3C作業草案

このバージョン:
https://www.w3.org/TR/2021/WD-spoken-html-20210923/
最新公開バージョン:
https://www.w3.org/TR/spoken-html/
最新編集者草案:
https://w3c.github.io/pronunciation/technical-approach
前バージョン:
https://www.w3.org/TR/2021/WD-spoken-html-20210518/
編集者:
Irfan Ali (Educational Testing Service)
Markku Hakkinen (Educational Testing Service)
Paul Grenier (招待専門家)
Ruoxi Ran (W3C)
参加:
GitHub w3c/pronunciation
課題を報告する
コミット履歴
プルリクエスト

概要

テキスト読み上げ(TTS)合成による正確な発音は、多くの 文脈で非常に 重要であり、教育、出版、コミュニケーション、 エンターテインメント、 その他の分野では不可欠です。TTSは、Web上のデジタルコンテンツへの アクセスを提供するための重要な技術となっています。しかし、現在、 一般的に使用されているTTSエンジンや動作環境全体で、TTSが生成した出力を 正しく提示できるようにコンテンツをマークアップする方法はありません。

本公開文書では、ユーザーが使用することを選択する可能性のある動作環境 (または支援技術)に関係なく、コンテンツ 作者がHTMLコンテンツの信頼できる 発音を実現できるようにするための2つのマークアップ手法を示します。各手法は、 一貫した結果をもたらすことが実証されています。どちらの手法を W3Cによる規範的な勧告ステータスへ 進めるべきかを判断するため、作者および実装者からのフィードバックを求めています。

各候補手法は、Speech Synthesis Markup Language(SSML)のサブセットに基づいています。選択した サブセットは、あらゆる支援技術および 動作環境全体で、音声提示に一貫性と予測可能性をもたらすよう 慎重に選定されています。本公開文書で説明する2つの技術的手法はいずれも、SSMLが ネイティブHTML技術になることを妨げてきた行き詰まりを慎重に 回避しているため、一般に適用可能であるはずです。ここで説明するいずれの手法も、 支援技術に関する要件を満たし、HTMLコンテンツを音声形式で 消費し提示する音声 アシスタントにも有用です。 Webコンテンツの音声提示のあらゆる応用にわたって、どの手法が最も実装しやすいかについて フィードバックを求めています。

この文書のステータス

このセクションでは、この 文書の公開時点におけるステータスについて説明します。他の文書が この文書を置き換える可能性があります。現在のW3C公開文書の一覧および この技術報告書の 最新リビジョンは、 W3C技術報告書 インデックス( https://www.w3.org/TR/)で確認できます。

この文書は、Pronunciation Task Forceにより、Accessible Platform Architectures Working Groupの First Public Working Draftとして公開されました。 この文書は、W3C勧告になることを意図しています。

この文書は、テキスト読み上げ(TTS) 合成がHTMLコンテンツを適切に発音できるようにするための規範的仕様およびベストプラクティスのガイダンスを提供します。この更新版作業草案は、Speech Synthesis Markup Language(SSML)を使用して、作者が制御するHTMLコンテンツの発音のための2つの可能な 技術的手法を説明します。いずれの手法もアクセシビリティ要件を満たします。しかし、広く適用可能な手法を確立することを目指しています。そのため、Task Forceはこれらの手法について、特に ここで説明するオーサリング技法を聴覚的 提示へ変換するコンテンツ作者および実装者から、さらなる意見を求めています。

コメントするには、W3C pronunciation GitHubリポジトリで課題を提出してください。それが 可能でない場合は、public-pronunciation@w3.orgへメールを送信してください (購読アーカイブ)。コメントは 2021年10月30日までにお願いします。文書への進行中の更新は、公開されている編集者草案で確認できます。

作業草案としての公開は、 W3Cメンバーシップによる支持を意味するものではありません。

これは草案文書であり、いつでも他の文書によって 更新、置換、または廃止される可能性があります。この 文書を作業中のもの以外として引用することは不適切です。

この文書は、 W3C 特許 ポリシーの下で運営されるグループによって作成されました。 W3Cは、 グループの成果物に関連して行われた 特許開示の公開リストを維持しています。 そのページには、特許を開示するための 手順も含まれています。ある特許が 必須クレームを含むと 実際に認識している個人は、 W3C特許ポリシーのセクション6に従って その情報を開示しなければなりません。

この文書は、 2020年9月15日版W3Cプロセス文書に準拠しています。

1. 導入

このセクションは非規範的です。

このFirst Public Working Draft(FPWD)公開文書では、すべての 動作環境にわたり、併用される支援技術の有無に関係なく、 Text-to-Speech(TTS)エンジンによる正確で一貫性があり、 信頼できる発音を実現するための2つの 独立した手法を定義します。これら2つの手法のどちらが より望ましいと考えられるか、そしてその理由について、より広いコミュニティから フィードバックを得るため、現在2つの手法を公開しています。

Text-to-speechは障害のある人にとって必要であり、すべての人にとって有用です。 正確な発音は、 教育や教育評価(学生のテスト)など、多くの状況で 不可欠です。現在、多くのコンピューターやモバイル デバイスにはTTS機能が組み込まれており、障害のない人々にも、 運転中や個人用 データアシスタントとのやり取りなど、 さまざまな状況で一般的に使用されています。

W3CのWeb Content Accessibility Guidelines(WCAG)は、 正しい発音の 重要性を強調しています。

たとえば英語では、heteronymとは同じつづりでありながら 発音と意味が異なる単語であり、 desert(放棄する)とdesert(乾燥地域)などがあります。… さらに、一部の言語では特定の文字が さまざまな方法で発音されることがあります。たとえば日本語には、 複数の発音を持つ漢字のような文字があります。 … 誤って読み上げられると、コンテンツは ユーザーにとって意味をなさなくなります。 達成基準 3.1.6: 発音を理解する
WCAGは正しい発音を示すための多数の回避策を提供していますが、 信頼できる技術的解決策を示すことができないため、成功基準 3.1.6をAAAとして分類せざるを得ません。

W3Cには、発音に関連する成熟した仕様が2つあります:

これらは、作者がHTML 文書に発音(および関連する音声提示)マークアップを埋め込めるようにする 技術的方法を長年提供してきましたが、SSMLの手法は複数の技術的 理由により採用されていません。また、さまざまなブラウザおよび支援 技術ベンダーからのフィードバックは、 これが有望または実行可能な手法ではないことを 示しています。したがって本仕様では、この車輪を再発明しようとはせず、 むしろSSMLをHTMLで使用することを 妨げてきた長年の技術的障壁を橋渡しします。私たちの手法は両方の 仕様に直接依存し、HTML検証で受け入れられる 属性としてそれらを包み込みます。

前述のように、2つの候補手法を特定しました:

タスクフォースは、実装者および作者に対し、これらの手法について フィードバックを提供することを奨励します。分析後、そのフィードバックは どの 手法が最終的な規範的W3C勧告になるかを判断する助けとなります。

以下のセクションには、各手法のサンプルコードが含まれます。 既存のTTS技術との比較については、音声ファイルを含む サンプルコンテンツ の例を参照してください。

編集者注
属性名にdata-プレフィックスを使用することは、 編集者の推奨または選好ではありません。むしろ、これはHTML 5.x仕様で定義されている、HTMLへの拡張を開発するための標準的な 手法です。 この標準に基づく開発手法により、実験的な 実装が可能になり、それがさらにこの 仕様の発展に役立ちます。

発音の問題および関連するW3C 文書についてのより詳細な導入は、Pronunciation Overviewを参照してください。

2. HTMLにSSMLを含めるための複数属性手法

SSMLタグおよび属性をHTML属性へ変換することにより、 作者はHTML文書に発音(および関連する音声提示)を 埋め込むことができます。 作者は、サポートされるほとんどのタグを相互に組み合わせて、 複数の音声効果を適用できます。

SSMLに含まれるマークアップの大部分は、多くのコンテンツ開発者にとって 使用に適しています。 ただし、phonemeprosodyなど一部の機能には専門知識が必要になる場合があります。 日本の出版社は、SSMLのphoneme要素について、EPUB 3の 類似した 技法を使用しています。

Edgar Allen PoeのThe Raven:

例 1
<p data-ssml-prosody-rate="slow" data-ssml-prosody-pitch="low">
    Once upon a midnight 
    <span data-ssml-phoneme-alphabet="ipa" data-ssml-phoneme-ph="ˈdrɪəri">dreary</span>
    <span data-ssml-break-time="500ms"></span>,
    while I pondered, weak
    <span data-ssml-break-time="150ms"></span> and weary,<br data-ssml-break-time="500ms" />
    Over many a quaint and curious volume of forgotten
    <span data-ssml-prosody-rate="x-slow" data-ssml-prosody-pitch="low"> lore—</span><br />
    While I nodded, nearly napping, suddenly there came a tapping,
    <br data-ssml-audio-src="/soundlibrary/wood/hits/hits_11" />
    As of some one gently rapping,
    <span data-ssml-audio-src="/soundlibrary/wood/hits/hits_11"></span>
    rapping at my chamber door.
    <span data-ssml-audio-src="/soundlibrary/wood/hits/hits_11"></span>
    <br data-ssml-audio-src="/soundlibrary/wood/hits/hits_11" />
    <span data-ssml-prosody-volume="x-soft" data-ssml-prosody-rate="medium">
      "'Tis some visitor,"
    </span>
    I muttered, <span data-ssml-prosody-volume="x-soft" data-ssml-prosody-rate="x-slow">
    <span data-ssml-phoneme-alphabet="ipa" data-ssem-phoneme-ph="tæpɪŋ">"tapping</span>
    at my chamber door—</span><br data-ssml-break-time="750ms" />
    Only this <span data-ssml-break-strength="weak"></span> and nothing
    <span data-ssml-break-strength="none"></span>
    <span data-ssml-prosody-volume="soft" data-ssml-prosody-rate="75%"> more."</span>
</p>

2.1 data-ssml-* 複数属性セット

これらの属性は、対応するSSMLと機能的に等価なものを 提供します。これらの属性は、次のHTML要素で 有効です:

2.1.1 data-ssml-say-as(-*)

作者が要素のテキストコンテンツを分類できるようにします。 属性は、SSML say-as要素および関連するプロパティから派生しています。

編集者 注
interpret-asは余分であり、 暗黙的であるべきと思われます

data-ssml-say-as

値: date | time | telephone | characters | cardinal | ordinal

data-ssml-say-as-format(任意)

値: W3C Note、 SSMLの say-as属性値で定義される時刻/日付形式。SSML 1.0 say-as 属性

data-ssml-say-as-detail(任意)

値: W3C Note、SSML say-as 属性値で定義されるdetail。SSML 1.0 say-as属性

編集者 注
data-ssml-say-as-detail属性により、作者は 実装固有のTTSエンジンの機能または挙動を 対象にできます。
例 2
According the 2010 US Census, the population of <span data-ssml-say-as='characters'>90274</span>
increased to 25209 from 24976 over the past 10 years.

2.1.2 data-ssml-phoneme-*

音素/音声的な発音のための2つの必須属性を定義します。 phoneme属性を持つ要素は、 テキストのみを含むことができます(要素は含められません)。これらの 属性は、SSML phoneme要素および関連するプロパティから派生しています。

data-ssml-phoneme-ph

値: 音素文字列。

data-ssml-phoneme-alphabet

値: 使用される音声記号体系。ipa | x-sampa

例 3
Once upon a midnight <span data-ssml-alphabet="ipa" data-ssml-phoneme-ph="ˈdrɪəri">dreary</span>

2.1.3 data-ssml-sub-alias

発音のためにテキストコンテンツを置き換える文字列値です。 aria-labelと似ていますが、aliasは つづり(すなわち点字ディスプレイ)を変更しません。 さらに、alias属性はアクセシビリティ ツリーにアクセスしないTTS技術でも 使用できます。プロセッサーはalias 値にテキスト正規化を適用するべきです。この属性は、SSML sub要素および関連するプロパティから派生しています。

値: 置換され、提示のためにTTSへ 渡されるテキスト文字列。

例 4
<span data-ssml-sub-alias="Sodium Chloride">NaCL</span>

2.1.4 data-ssml-voice-*

話者音声の変更を要求する生成値を定義する 属性の集合です。voice要素には2種類の属性があります。 1つは音声の望ましい特徴を示す属性、 もう1つは挙動を制御する属性です。 これらの属性は、SSML voice要素および関連するプロパティから派生しています。

data-ssml-voice-gender(任意)

値: female | male | neutral

data-ssml-voice-age(任意)

値: 年齢(年単位)に対応するinteger

data-ssml-voice-variant(任意)

値: 数値の音声バリアントを示すinteger

data-ssml-voice-name(任意)

値: 現在のTTSエンジンに要求する特定の音声名 (例: "David")。

data-ssml-voice-languages(任意)

値: この音声で読み上げられる1つ以上の 言語を空白区切りで列挙したstring

編集者 注
data-ssml-voice-languages属性は、 TTSエンジンが適切な音声を選択するのを支援するだけです。 コンテンツの言語を示すものではありません。言語を指定するには、 HTMLの lang属性を使用してください。
例 5
She said, "<span data-ssml-voice-gender="female">My name is Marie</span>".

2.1.5 data-ssml-emphasis-level

テキストコンテンツを 強調して(prominenceまたはstressとも呼ばれます) 読み上げるよう要求します。これは単一の属性であり、 SSML emphasis要素および関連するプロパティから派生しています。

値: strong | moderate | none | reduced

例 6
Please use <span data-ssml-emphasis-level="strong">extreme caution.</span>

2.1.6 data-ssml-break-*

トークン間のポーズまたはその他の韻律的境界を 制御するため、空要素に関連付けられるタイミングを 記述します。任意のトークン対の間でbreak属性を使用することは 任意です。要素がトークン間に存在しない場合、 合成 プロセッサーは、言語的 文脈に基づいて自動的にbreakを判断することが期待されます。 これらの属性は、SSML break要素および関連するプロパティから派生しています。

data-ssml-break-strength

値: none | x-weak | weak | medium (default) | strong | x-strong

data-ssml-break-time

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

例 7
Take a deep breath,<span data-ssml-break-time="1s"></span> and exhale.

2.1.7 data-ssml-prosody-*

音声出力のピッチ、読み上げ速度、音量の制御を 許可します。これらの属性は、SSML prosody要素および関連するプロパティから派生しています。

data-ssml-prosody-pitch(任意)

値: frequency-value"Hz" | +/- change value | "x-low" | "low" | "medium" | "high" | "x-high" | "default"

data-ssml-prosody-contour(任意)

値: SSML 1.1勧告で定義される輪郭変化パラメーターの string

data-ssml-prosody-range(任意)

値: SSML 1.1 勧告で定義されるrange値のstring

data-ssml-prosody-rate(任意)

値: non-negative-percentage% | "x-slow" | "slow" | "medium" | "fast"| "x-fast" | "default"

data-ssml-prosody-duration(任意)

値: 時間継続時間(例: "250ms"、 "1s"など)を含むstring

data-ssml-prosody-volume(任意)

値: +/- soundlevel>"dB" | "silent" | "x-soft" | "soft" | "medium" | "loud" | "x-loud" | "default"

例 8
The tortoise, said (slowly) "<span data-ssml-prosody-rate="x-slow">
I am almost at the finish line</span>."

2.1.8 data-ssml-audio-*

合成音声出力と組み合わせた録音済み音声ファイルの挿入を サポートします。 要素は空でもかまいません。要素が空でない場合、 音声文書が利用できないときには、その内容が読み上げられるべきです。 これらの属性は、SSML audio要素および関連するプロパティから派生しています。

data-ssml-audio-src

値: 適切なメディア ファイルを持つ文書のURI。

data-ssml-audio-fetchtimeout (任意)

値: 時間継続時間(例: "250ms"、 "1s"など)を含むstring

data-ssml-audio-fetchint(任意)

値: safe | prefetch

data-ssml-audio-maxage(任意)

値: string

data-ssml-audio-maxstale(任意)

値: string

data-ssml-audio-clipBegin(任意)

値: 時間継続時間(例: "250ms"、 "1s"など)を含むstring

data-ssml-audio-clipEnd(任意)

値: 時間継続時間(例: "250ms"、 "1s"など)を含むstring

data-ssml-audio-repeatCount(任意)

値: 音声クリップを繰り返す回数を示す integer

data-ssml-audio-repeatDur(任意)

値: 時間継続時間(例: "250ms"、 "1s"など)を含むstring

例 9
You will hear a brief chime <span data-ssml-audio-src="/audio/chime.ogg"></span> 
when your time is up.

3. HTMLにSSMLを含めるための単一属性手法

SSMLタグおよび属性をJSON文字列 値を持つ単一のHTML属性に変換することにより、 作者はHTML文書に発音(および関連する音声提示)を 埋め込むことができます。 作者は、サポートされるほとんどのタグを相互に組み合わせて、 複数の音声効果を適用できます。

SSMLに含まれるマークアップの大部分は、多くのコンテンツ開発者にとって 使用に適しています。 ただし、phonemeprosodyなど一部の機能には専門知識が必要になる場合があります。 この手法は、 IMS Question & Test Interoperability(QTI)Specificationに準拠するコンテンツを変換する手段として生まれました。QTI 標準は、教育評価で使用されるTTSツールのために、HTMLにSSMLを含めることを サポートしています。

Edgar Allen PoeのThe Raven:

例 1
<p data-ssml='{"prosody":{"rate":"slow","pitch":"low"}}'>
	Once upon a midnight
        <span data-ssml='{"phoneme":{"alphabet":"ipa","ph":"ˈdrɪəri"}}'>dreary</span>
	<span data-ssml='{"break":{"time":"500ms"}'></span>,
	while I pondered, weak
	<span data-ssml='{"break":{"time":"150ms"}'></span> and weary,
        <br data-ssml='{"break":{"time":"500ms"}' />
	Over many a quaint and curious volume of forgotten 
	<span data-ssml='{"prosody":{"rate":"x-slow","pitch":"low"}}'>lore—</span><br />
	While I nodded, nearly napping, suddenly there came a tapping,
	<br data-ssml='{"audio":{"src":"/soundlibrary/wood/hits/hits_11"}}'/>
	As of some one gently rapping,
	<span data-ssml='{"audio":{"src":"/soundlibrary/wood/hits/hits_11"}}'></span>
	rapping at my chamber door.
	<span data-ssml='{"audio":{"src":"/soundlibrary/wood/hits/hits_11"}}'></span>
	<br data-ssml='{"audio":{"src":"/soundlibrary/wood/hits/hits_11"}}' />
	<span data-ssml='{"prosody":{"volume":"x-soft","rate":"medium"}}'>
          "'Tis some visitor,"
        </span>
	I muttered, <span data-ssml='{"prosody":{"volume":"x-soft","rate":"x-slow"}}'>
	<span data-ssml='{"phoneme":{"alphabet":"ipa","ph":"tæpɪŋ"}}'>"tapping</span>
	at my chamber door—</span><br data-ssml='{"break":{"time":"750ms"}'/>
	Only this<span data-ssml='{"break":{"strength":"weak"}'></span>
	and nothing<span data-ssml='{"break":{"strength":"none"}'> </span>
	<span data-ssml='{"prosody":{"volume":"soft","rate":"75%"}}'>more."</span>
</p>

3.1 data-ssml 属性、プロパティ、および値

以下のプロパティが定義され、対応するSSMLと 機能的に等価なものを 提供します。

data-ssmlは、SSMLと機能的に等価なものを提供します。 この属性は、次のHTML要素で 有効です:

data-ssml属性の値は、単一引用符(')で囲まれた JSON文字列であり、 特定のSSML関数を表す単一のJSONオブジェクトを 1つ以上のプロパティ/値ペアとともに含みます。 有効なオブジェクト、プロパティ、および 関連する値は、以下のセクションで定義されます。 JSONスキーマは付録Aに示されています。

3.1.1 say-as

作者が要素のテキストコンテンツを分類できるようにします。JSON 定義は、SSML say-as要素および関連するプロパティから派生しています。

interpret-as

値: date | time | telephone | characters | cardinal | ordinal

format(任意)

値: W3C Note SSML say-as属性値で定義される時刻/日付形式。

detail(任意)

値: W3C Note SSML say-as 属性値で定義されるdetail。

編集者 注
detailプロパティにより、作者は 実装固有のTTSエンジンの機能または挙動を対象にできます。
例 2
According the 2010 US Census, the population of 
<span data-ssml='{"say-as":{"interpret-as":"characters"}}'>90274</span>
increased to 25209 from 24976 over the past 10 years.

3.1.2 phoneme

音素/音声的な発音のための2つの必須属性を定義します。 phoneme属性を持つ 要素は、テキストのみを含むことができます(要素は含められません)。 JSON定義は、SSML phoneme要素および関連するプロパティから派生しています。

ph

値: 読み上げられるコンテンツに対応する 音声文字を含むstring

data-ssml-phoneme-alphabet

値: ipa | x-sampaph文字列で 使用される音声記号体系を定義します

例 3
Once upon a midnight 
<span data-ssml='{"phoneme":{"alphabet":"ipa","ph":"ˈdrɪəri"}}'>dreary</span>

3.1.3 sub

alias属性値内のテキストが、発音のために テキストコンテンツを置き換えることを示します。必須のalias プロパティは、テキストコンテンツの代わりに読み上げられる 文字列を指定します。 プロセッサーはalias値にテキスト正規化を適用するべきです。 JSON定義は、SSML sub要素および関連するプロパティから派生しています。

alias

値: subが適用される 要素のテキストコンテンツの代替として 読み上げられるテキストを含むstring

例 4
<span data-ssml='{"sub":{"alias":"Sodium Chloride"}}'>NaCL</span>

3.1.4 voice

話者音声の変更を要求します。voiceには 2種類の属性があります。1つは音声の望ましい特徴を示すもの、 もう1つは挙動を制御するものです。JSON定義は、 SSML voice要素および関連するプロパティから派生しています。

gender(任意)

値: female | male | neutral

age(任意)

値: 年齢(年単位)に対応するinteger

variant(任意)

値: 数値の音声バリアントを示すinteger

name(任意)

値: 現在のTTSエンジンに要求する特定の音声名を 定義するstring。例: "Microsoft David (English)"

languages(任意)

値: この音声で読み上げられる1つ以上の 言語を空白区切りで列挙したstring

編集者 注
voice > languagesプロパティは、 TTSエンジンが適切な音声を選択するのを支援するだけです。 コンテンツの言語を示すものではありません。言語を指定するには、 HTMLのlang属性を使用してください。
例 5
She said, "<span data-ssml='{"voice":{"gender":"female"}}'>My name is Marie</span>".

3.1.5 emphasis

emphasisが適用される要素のテキストコンテンツを 強調して(prominenceまたはstressとも呼ばれます) 読み上げるよう要求します。JSON定義は、SSML emphasis要素および関連するプロパティから派生しています。

level

値: strong | moderate | none | reduced

例 6
Please use <span data-ssml='{"emphasis":{"level":"strong"}}'>extreme caution.</span>

3.1.6 break

トークン間のポーズまたはその他の韻律的境界を 制御するため、空要素に関連付けられるタイミングを 記述します。任意のトークン対の間でbreakを 使用することは任意です。要素がトークン間に存在しない場合、 合成プロセッサーは言語的文脈に基づいて 自動的にbreakを判断することが期待されます。JSON 定義は、SSML break要素および関連するプロパティから派生しています。

strength

値: none | x-weak | weak | medium (default) | strong | x-strong

time

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring(s=秒、ms=ミリ秒)

例 7
Take a deep breath,<span data-ssml='{"break":{"time":"1s"}}'></span> and exhale.

3.1.7 prosody

音声出力のピッチ、読み上げ速度、音量の制御を許可します。 このオブジェクトには6つのプロパティがあります。JSON定義は、 SSML prosody要素および関連するプロパティから派生しています。

pitch

値: frequency-value"Hz" | +/- change value | "x-low" | "low" | "medium" | "high" | "x-high" | "default"

contour

値: SSML 1.1勧告で定義される 輪郭変化パラメーターのstring

range

値: SSML 1.1勧告で定義されるrange値の string

rate

値: non-negative-percentage% | "x-slow" | "slow" | "medium" | "fast"| "x-fast" | "default"

duration

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

volume

値: +/- soundlevel>"dB" | "silent" | "x-soft" | "soft" | "medium" | "loud" | "x-loud" | "default"

例 8
The tortoise, said (slowly) "
<span data-ssml='{"prosody":{"rate":"x-slow"}}'>I am almost at the finish line</span>."

3.1.8 audio

合成音声出力と組み合わせた録音済み音声ファイルの挿入を サポートします。 要素は空でもかまいません。要素が空でない場合、 音声文書が利用できないときには、その内容は 読み上げられるテキストであるべきです。JSON定義は、SSML audio要素および関連するプロパティから派生しています。

src

値: 適切なメディア ファイルを持つ文書のURI。

fetchtimeout

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

fetchint

値: safe | prefetch

maxage

値: string

maxstale

値: string

clipBegin

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

clipEnd

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

repeatCount

値: 音声クリップを繰り返す回数を示す integer

repeatDur

値: "250ms"、"1s"など、数値形式で表された 時間継続時間を含むstring

例 9
You will hear a brief chime 
<span data-ssml='{"audio":{"src":"/audio/chime.ogg"}}'></span> when your time is up.

4. 技術的考慮事項

各手法において、実装者はdata-ssml- 属性、値、 および関連するテキストコンテンツを処理して、 対象のTTS技術で必要とされる有効な形式を生成しなければなりません。 たとえば、Web Speech APIを対象にする場合、 実装は有効なSSMLを生成しなければなりません。各発音 関数のテキストコンテンツをどのように判断するかは、 どちらの手法の実装者にとっても課題となります。

複数属性手法に従う場合、実装者はすべての 関連属性を見つけ出し、 それらを適切なSSML表現へ収集しなければなりません。実装者は、 必須属性の欠落、 競合する関数、 または無効な値などのオーサリングエラーをどのように扱うかを 判断しなければなりません。

単一属性手法に従う場合、実装者はJSON 文字列値を解析しなければなりません。 HTMLの属性値としてJSON文字列を使用する既存の W3C勧告はありませんが、 data-属性を使用するカスタムアプリケーションでの 使用例は確認されています。

JSONには 潜在的なセキュリティ上の懸念があり、オーサリングのエラーから生じる 不正なJSON文字列の影響は、 より広いレビューを必要とする問題の1つです。 実装者は、不正なJSONだけでなく、 不正なプロパティと 値の組み合わせをどのように扱うかを判断しなければなりません。 JSONスキーマの使用は、 単一属性手法の作者および実装者の助けとなる可能性があります。

JSONスキーマは提案されていますが、 SpeakableSpecificationのような 開発中の関連 標準が存在する可能性があります。 SSMLを適切なJSONスキーマへ変換することは、 実装者および作者に混乱を 引き起こす可能性があります。多くの場合、そのような変換は 「...完全に1対1の変換ではないが、非常に非常に近い」ものです。 オーサリングツールは、 作者がJSONを直接記述する必要をなくすことで、 これらの懸念に対処すると仮定されています。

A. SSML JSONスキーマ

こちらのJSON スキーマ例を参照してください。

B. 謝辞

このセクションは非規範的です。

以下の人々がこの文書の開発に貢献しました。

B.1 公開時点でPronunciation TFに積極的に参加していた参加者