SSML 仕様

SSML (Speech Synthesis Markup Language) とは、XML の一種の音声合成マークアップ言語の 1 つです。 SSML は W3C (World Wide Web Consortium) が標準化しています。

日本語テキストを SSML でマークアップすることで、音声合成を細かく制御できます。 例えば、読み上げる文の一部だけを音量を大きくしたり、ある語句の声の高さを部分的に変更したり、といったことができます。

次項以降では、AITalk 製品で利用可能な SSML 要素 (タグ) とその属性を解説します。

下記は、SSML の例です。

<?xml version="1.0" encoding="utf-8" ?>
<speak version="1.1">
<sub alias="エーアイトーク">AITalk</sub>は音声合成システムに最適なソリューションです。

<break time="2469ms" />

音声辞書のベースとなっているナレーターの音声著作隣接権保護の観点から、
下記目的の利用はご遠慮願います。
  <s><break time="500ms" />法令、公序良俗に反する内容</s>
  <s><break time="500ms" />犯罪または犯罪を助長する内容</s>
  <s><break time="500ms" />第三者の名誉を著しく毀損する内容</s>
  <s><break time="500ms" />第三者の財産もしくはプライバシーを侵害する内容</s>
  <s><break time="500ms" />ライセンス許諾契約以外での音声の二次利用</s>
</speak>

<speak> ルート要素

<speak> は XML 文書 (SSML) のルート要素です。

<speak> 要素には、テキストと <break>, <p>, <phoneme>, <prosody>, <say-as>, <sub>, <s>, <token>, <w> の要素のみを含むことができます。

<speak> の属性

属性名

必須

説明

version

ドキュメントバージョンを示す属性です。

xmlns

名前空間を宣言する属性です。

version

この属性は、ドキュメントに用いる SSML のバージョンを示す必須の属性です。

属性値は 1.1 という数値でなければなりません。

xmlns

この属性は、名前空間を宣言する属性です。

使用例

<speak version="1.1">
音声合成の世界へようこそ!
</speak>

<prosody> 要素

<prosody> は音声出力のピッチ (高さ)、読み上げ速度 (話速) 、音量の制御などを行う要素です。

<prosody> 要素には、テキストと <break>, <p>, <phoneme>, <prosody>, <say-as>, <sub>, <s>, <token>, <w> の要素のみを含むことができます。

<prosody> の属性

属性名

必須

説明

pitch

テキストを読み上げるベースライン・ピッチを制御する属性です。

range

テキストを読み上げるピッチ・レンジを制御する属性です。

rate

テキストを読み上げる速度を制御する属性です。

volume

テキストを読み上げる音量を制御する属性です。

style

テキストを読み上げる感情表現を制御する属性です。

各属性はそれぞれ任意ですが、<prosody> 要素には 1 つ以上の属性を指定する必要があります。

pitch

この属性は、記述されているテキストを読み上げる声の高さの変更を示す属性です。 この値の増加/減少により出力のおおよそのピッチが増加/減少します。

属性値には、数値でピッチの比率を指定します。 基準値は 1.0 で、 0.502.00 の範囲で指定できます。

range

この属性は、記述されているテキストを読み上げる声の高さの範囲の変更を示す属性です。 この値の増加/減少により出力ピッチのダイナミックレンジが増加/減少します。

属性値には、数値でピッチ・レンジの比率を指定します。 基準値は 1.0 で、0.002.00 の範囲で指定できます。

rate

この属性は、記述されているテキストの読み上げ速度の変更を示す属性です。

属性値には、数値でデフォルトの速度との倍率を指定します。 基準値は 1.0 で、0.504.00 の範囲で指定できます。

volume

この属性は、記述されているテキストに対する音量の変更を示す属性です。

属性値には、数値でデフォルトの音量との倍率を指定します。 基準値は 1.0 で、0.002.00 の範囲で指定できます。

style

この属性は、感情表現の変更を示す属性です。

※この属性は、感情表現に対応している話者のみ有効です。

属性値は、スタイル種別と割合を「種別:割合」の形式で指定します。

種別は、喜びなら J、怒りなら A、悲しみなら S になります。

割合は、0.001.00 の小数点 2 桁までの数値になります。 数値が大きくなるほど、そのスタイルが強く反映されます。

複数のスタイル種別を混合する場合は、種別1:割合1,種別2:割合2,… の形式で指定します。 すべての割合の合計が 1 以下になるように指定します。

style 属性は AITalk 独自の属性です。 style 属性を利用する場合、名前空間を明確にするため、xmlns を用いて接頭辞を宣言し style 属性を修飾するようにしてください。 xmlns の属性値 (URI 参照) には http://schemas.aitalk.jp/ssml を指定します。

使用例

<prosody rate="0.9">
  <prosody pitch="1.199">あーー</prosody><prosody pitch="1.318" volume="1.2">うーー</prosody><prosody pitch="1.494" volume="0.6">あーー</prosody><prosody pitch="1.592" volume="1.9">うーー</prosody>

  聞こえ<prosody rate="0.5">ない</prosody>
</prosody>

style 属性の使用例

<speak version="1.1" xmlns:ai="http://schemas.aitalk.jp/ssml">
  <prosody ai:style="J:1.0,S:0.0,A:0.0">よろこび</prosody>
  <prosody ai:style="J:0.0,S:1.0,A:0.0">かなしみ</prosody>
  <prosody ai:style="J:0.0,S:0.0,A:1.0">いかり</prosody>
  <prosody ai:style="J:0.4,S:0.3,A:0.3">複雑な気持ち</prosody>
</speak>

<p> 要素

<p> は段落を表す要素です。

この要素の直前と直後は文末扱いになります。

<p> 要素には、テキストと <break>, <p>, <phoneme>, <prosody>, <say-as>, <sub>, <s>, <token>, <w> の要素のみを含むことができます。

<p> の属性

なし

使用例

<p>音声合成の可能性を拡げ、商品・サービスを提供する。
新しい市場を開拓し、商品・サービスを提供することにより、生活文化の向上に寄与する。</p>
<p>仕事の中で夢を見出し、共有し、その実現に関係する全ての人々が幸せになる。</p>
<p>音声技術の世界一のプロバイダーになる。</p>

<s> 要素

<s> は文を表す要素です。

この要素の範囲内には文末記号を挿入する事はできず、要素の直前と直後は文末扱いになります。

<s> 要素には、テキストと <break>, <phoneme>, <say-as>, <sub>, <token>, <w> の要素のみを含むことができます。

<s> の属性

なし

使用例

<s>これは最初の文ですが</s><s>ここはもう最初の文ではありません</s>

<break> 要素

<break> は休止またはその他のトークン間の韻律の境界を制御する空要素です。

<break> 要素には、なにも含むことはできません。

<break> の属性

属性名

必須

説明

time

挿入される休止の時間を制御する属性です。

time

この属性は、出力に挿入される休止の時間をミリ秒で示す属性です。

属性値は、250ms のように数値 + ms で指定します。 時間の単位は省略することも可能です。

休止時間は、80ms30,000ms の範囲で指定できます。

使用例

鼻から息を吸い込んだ後、そのまま5秒止めて
<break time="5000ms" />
口からゆっくり吐いてください。

<token> 要素と <w> 要素

<token> はトークンを表す要素です。 <w> 要素は <token> 要素の別名です。

この要素は、このコンテンツがトークであること示し、トークン (単語) の区切りの曖昧さを取り除くことができます。

<token> 要素には、テキストのみを含むことができます。

<token> の属性

なし

使用例

<token>生麦</token><w>生米</w><w>生卵</w>

<say-as> 要素

<say-as> は要素内のテキスト構成子の種類に関する情報を示す要素です。

この要素は記述テキストの詳細さのレベルを指定するのに役立ち、読み上げ方のヒントを与えることができます。

<say-as> 要素には、特定のテキストのみを含むことができます。

<say-as> の属性

属性名

必須

説明

interpret-as

記述されているテキスト構成子のコンテンツの種類を示す属性です。

format

interpret-as で指定されたコンテンツのフォーマットを明記する属性です。

interpret-as

この属性は、要素内テキストのコンテンツの種類を示します。 コンテンツの種類によって、format 属性の指定が必要な場合があります。 この属性に指定可能な文字列は別表を参照してください。

format

interpret-as 属性で指定されたコンテンツの種類の、テキストのフォーマットを文字列で指定します。 指定可能な値は別表を参照してください。

属性指定可能対応表

interpret-as

format

種類

"characters"

(不要)

個別の文字

"date"

"y" / "m" / "d" / "ym" / "my" / "md" / "dm" / "ymd" / "dmy" / "mdy"

日付

"time"

"h12" "h" / "m" / "s" "hm" / "ms" / "hms" "hm12" / "hms12"

時刻

"telephone"

(不要)

電話番号

interpret-as="characters"

テキストが個別の文字であることを指示します。

指定可能な文字は、半角英数記号のみです。

interpret-as="date"

テキストが日付であることを指示します。

指定可能な文字は format に依存します。

format= "y" / "m" / "d"

指定可能な文字は、半角数字のみです。

format= "ym" / "my" / "md" / "dm"/ "ymd" / "dmy" / "mdy"

指定可能な文字は、半角数字と半角記号 / (斜線/スラッシュ)・- (マイナス/ハイフン記号) のみです。

interpret-as="time"

テキストが時刻であることを指示します。

指定可能な文字は format に依存します。

ここでの「AM/PM 指定」とは、半角の a.m. / p.m. / AM / PM の文字列をテキストの先頭または末尾に記述する事を指します。 これは、a.m. (p.m.) と指定された場合は「エーエム (ピーエム)」と、AM (PM) と指定された場合は「午前 (午後)」と読み上げる指示になります。

format= "h12"

指定可能な文字は、半角数字と「AM/PM 指定」のみです。

format= "h" / "m" / "s"

指定可能な文字は、半角数字のみです。

format= "hm" / "ms" / "hms"

指定可能な文字は、半角数字と半角記号 : (コロン)・- (マイナス/ハイフン記号) のみです。

format= "hm12" / "hms12"

指定可能な文字は、半角数字と半角記号 : (コロン)・- (マイナス/ハイフン記号) と「AM/PM 指定」のみです。

interpret-as="telephone"

テキストが電話番号であることを指示します。

指定可能な文字は、半角数字と半角記号 ( (左丸かっこ)・) (右丸かっこ)・- (マイナス/ハイフン記号)・ `` `` (スペース/空白) のみです。

使用例

<say-as interpret-as="date" format="ymd">2011/03/11</say-as>
<say-as interpret-as="time" format="hm12">PM02:46</say-as>、三陸沖を震源とする地震が発生。
<say-as interpret-as="time" format="hm12">PM02:49</say-as>、岩手、宮城、福島の沿岸に津波警報を発表。
<say-as interpret-as="date" format="ymd">2011/03/12</say-as>
<say-as interpret-as="time" format="hm12">AM03:20</say-as>、日本全沿岸に対して、津波警報、津波注意報を発表。

<phoneme> 要素

<phoneme> はテキストに音素/発音上の発音を付与する要素です。

<phoneme> 要素には、テキストのみを含むことができます。 または、空でもよいです。

<phoneme> の属性

属性名

必須

説明

ph

音素/音声の文字列を指定する属性です。

ph

テキストの読み上げ方を JEITA カナ (JEITA TT-6004) で指定します。

JEITA カナは、1 つの要素につき最大 60 文字まで指定できます。 それ以上長い発音を指定したい場合は、発音の区切り毎に phoneme 要素を並べて指定する事ができます。 なお、JEITA カナの「文末記号」および「センテンス間のポーズ」を指定することはできません。

使用例

<phoneme ph="カンジーザイボ'サツ">観自在菩薩</phoneme>
<phoneme ph="ギョージ'ン_ハンニャハラミ'タジ">行深般若波羅蜜多時</phoneme>

<sub> 要素

<sub> はテキストを別なテキストに置き換えられる事を示す要素です。

この要素により、記述形式のテキストと、読み上げ用のテキストの両方を含むことが可能になります。

<sub> 要素には、テキストのみを含むことができます。

<sub> の属性

属性名

必須

説明

alias

読み上げ用のテキストを指定する属性です。

alias

この属性には、読み上げ用のテキストを文字列で指定します。

使用例

<sub alias="イギリス">英国</sub>の正式国名は<sub alias="グレートブリテン及び北部アイルランド連合王国">大不列顛及北部愛耳蘭連合王国</sub>といいます。
なお、イギリスという呼び名は<sub alias="ポルトガル">葡萄牙</sub>語が由来と言われています。