音声マークアップ言語SSMLとは

Amazon EchoのAlexa内で使われている音声マークアップ言語SSMLを調べる機会があったので調べ&試してみました。

SSMLとは

SSMLは音声のマークアップ言語です。同じマークアップ言語といえばHTMLが有名ですね。

「目に見えないものをマークアップ?」と思われそうですが、AlexaやAmazon Pollyによる機械音声の発声をコントロールできます。

簡単な例は以下です。

<speak>
<p>こんにちは。</p>
<p>簡単なSSML例です。</p>
<p>
<prosody rate="fast">早口でしゃべったり</prosody>
<amazon:effect name="whispered">ひそひそ声でしゃべったり</amazon:effect>できます。
</p>
</speak>

HTMLが分かる方ならピンとくると思いますが、発声を変えたい箇所をHTMLと同じようにマークアップします。 <amazon>なんてタグがある辺り過渡期感がすごいです。

SSMLの例

AmazonのSSML公式ドキュメントでも網羅されていますが、日本語環境で使うと効果の感じられないものもあるので、自分が試した中で必要・有用と感じたタグを紹介します。

<speak>

SSMLは<speak>で始まり</speak>で終わる、HTMLで言う<html>タグです。全体を囲う形で必須のタグです。

<break />

こんにちは<break time="1s"/>僕です。

以上のように記述することで指定した時間、音声を停止させます。句読点でも適切な間隔を取ってくれますが、停止時間をコントロールしたい時に使います。HTMLで言う<br>タグのように使います。

<p>

<p>こんにちは</p>
<p>僕です。</p>

HTMLの<p>タグと使い方は同じです。段落で区切ることで適度な時間停止し、文章の間をバランスよく取ってくれます。

<emphasis>

<p>こんにちは。<emphasis>強調</emphasis>させてみます。</p>

発声を少し強調します。日本語だと滝川クリステルの「お・も・て・な・し」のような区切って発声しているような喋り方になります。

<prosody>

属性を1つ以上付けることで音声のボリュームやピッチを変えます。

<prosody volume="loud">大声で喋ります。</prosody>
<prosody rate="fast">早口で喋ります。</prosody>
<prosody pitch="high">高い声で喋ります。</prosody>
<prosody rate="slow" pitch="x-low">遅く、低い声で喋ります。</prosody>

<amazon:effect name=”whispered”>

<amazon:effect name="whispered">ひそひそ声で喋ります。</amazon:effect>

ひそひそ声で喋ります。前述の<prosody>で小声にしたものとはまた違った、稲川淳二ロイドにできそうなリアルなひそひそ声で喋ります。

<amazon:breath/>

テキストには存在しない呼吸音を入れることができます。合成音声をよりリアルな声に近づけられます。

<amazon:breath duration="medium" volume="x-loud"/>

<amazon:auto-breaths>

上記<amazon:breath />と同じ呼吸音用タグですが、こちらは文章を囲って使います。文章内の自然なタイミングで自動的に呼吸音を入れてくれるため、こちらの方が実用性が高く思えます。

<amazon:auto-breaths>
こんにちは。僕です。
</amazon:auto-breaths>

<amazon:effect phonation=”soft”>

発声が少しゆっくり、少し高めな柔らかい印象の発声になります。

<amazon:effect phonation="soft">
柔らかい印象の声になります。子供への音声などに。
</amazon:effect>

さいごに

音声をマークアップするという概念が新しかったので、HTMLが分かる方には面白いのではないでしょうか。

上記で紹介したタグを使えばAlexaやPollyの発声カスタマイズはおよそカバーできると思いますが、他にもいくつかのタグや、細かいパラメーターはあるため、詳しくは公式ドキュメントを参照してください。