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の発声カスタマイズはおよそカバーできると思いますが、他にもいくつかのタグや、細かいパラメーターはあるため、詳しくは公式ドキュメントを参照してください。