[日本語Alexa] SSMLの組み立てが超便利なssml-builderについて

2018.02.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

0 リプレイスについて

Alexaは、昨年(2017年)11月に日本語対応となりました。ここDevelopers.IOでは、英語でしか利用できない頃から色々Blogに書いてきたのですが、更新された情報も含めて日本語で利用するAlexaについて纏め直してみたいと思います。

この記事は、下記の記事のリプレイス版です。
[Alexa] SSMLの組み立てが超便利なssml-builderについて

1 はじめに

Speech Synthesis Markup Language SSML(音声合成マークアップ言語 以下、SSML) とは、合成音声の作成を支援するためのXMLベースのマークアップ言語であり、発音、音量、ピッチ、速度などの読み上げに関する様々な制御が可能です。

ssml-builderは、このSSMLの組み立てを支援するパッケージです。


https://www.npmjs.com/package/ssml-builder

Amazon Alexa(以下、Alexa)でも、読み上げる出力にSSMLの指定が可能です。しかし、SSMLタグは、やや複雑で、多用すると混乱を招くことが避けられません。このため、ssml-builderのようなツールを利用することは、非常に有効だと思います。

ssml-builderは、Alexa SDKに対応しており、そのまま利用可能です。

参考:Alexa Skills Kit for Node.js はじめの一歩

2 インストールと基本的な利用方法

インストールは、npmで可能です。

npm install ssml-builder

基本的な利用方法は、以下のようになります。発生するテキストとSSMLのタグに相当するものを追加していき、最後にまとめてSSMLのテキストを得るとう形式です。

var Speech = require('ssml-builder');

var speech = new Speech();
speech.say('こんにちは。'); // 'こんにちはo'を追加
speech.pause('1s'); // breakタグを追加(1秒間隔を空ける)
speech.say('ちょっと間を開けてみました。'); // 'ちょっと間を開けてみました。'を追加
var outputText = speech.ssml(true); // SSML出力を得る(trueを指定すると、前後の<speak>タグは省略されます)
this.emit(':tell', outputText); // Alexa SDKによるレスポンス作成

上記で出力されるSSML以下の通りです。

<speak> こんにちは。 <break time='1s'/> ちょっと間を開けてみました。 </speak>

3 対応タグ

ssml-builderが対応しているタグは、以下のとおりですが、これは、Alexa Skill Kitのドキュメントに記載されているものそのものです。

参考:Speech Synthesis Markup Language (SSML) Reference

  • amazon:effect
  • audio (mp3の埋め込み)
  • break (間隔を空ける)
  • emphasis (強調)
  • prosody (音量、ピッチ、レート)
  • p (パラグラフ)
  • s (センテンス)
  • phoneme (発音記号の指定)
  • speak (SSMLのルートタグ)
  • sub (フレーズの区切り) 
  • say-as (読み方の指定)
    • characters
    • spell-out
    • cardinal
    • number
    • ordinal
    • digits
    • fraction
    • unit
    • date
    • time
    • telephone
    • address
    • interjection
    • expletive
  • w (単語の属性指定)
    • ivona:VB: Interpret the word as a verb (present simple).
    • ivona:VBD: Interpret the word as a past participle.
    • ivona:NN: Interpret the word as a noun.
    • ivona:SENSE_1: for more information, see Amazon Documentation here

4 使用方法

ドキュメントに全ての例が紹介されています。
https://github.com/mandnyc/ssml-builder#tag-examples

以下の、その一部です。

Alexa Skill Kit のドキュメント と併せてみれば、ほとんど違和感なく利用できそうです。

5 最後に

今回は、SSMLを簡単に組み立てることができるライブラリ(ssml-builder)を紹介しました。このようなライブラリを活用し、煩雑となりがちなSSMLタグをうまく使いこなしたいと思います。

6 参考リンク


ssml-builder
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
Speech Synthesis Markup Language (SSML) Reference