Amazon PollyとSSMLを使ってMizukiさんにいろいろしゃべってもらった

eyecatch_polly

はじめに

こんにちは植木和樹@上越妙高オフィスです。re:Invent 2016で発表されたフルマネージドテキスト読み上げサービスであるPollyを使って、いろいろとしゃべってもらいました。

先に参考したサイトを紹介しておきます。始めての方はこの辺を読みながらマネージメントコンソールでいろいろ試してみると楽しいです。

よく使われそうな省略語にも対応

日本語ボイスのMizukiさんに、よく使われそうな省略語や単語を話してもらいました。

  • web → ◯うぇぶ
  • dev → ◯でぶ
  • hoot → ◯ふーと
  • yahoo → ◯やふー
  • www.yahoo.co.jp → ×だぶりゅーだぶりゅーだぶりゅー どっと わいえーえいちおーおー どっと しーおー どっと じぇいぴー
  • monitoring → ×もなたりんぐ
  • EC2 → ×いーしーに
  • google → ×ぐっげる
  • IoT → ×あいと
  • classmethod → くらすまさっど

単純にアルファベットを読み上げるだけでなく割りと賢い読み方をしてくれます。ただ、いくつかの単語については語彙登録してあげる必要がありそうです。

yahooはOKですがwww.yahoo.co.jpはNGで、前後にスペースを挟んでも「やふー」にはなりませんでした。英語ボイスのJoannaだとちゃんと読んでくれました。

レキシコン(語彙)は日本語に対応していない

固有単語はレキシコン(語彙)登録することで読み方を変えることができます。ただ2017年3月現在レキシコンはボイスで英語(en-US)を選択した時しか適用されないようです。

日本語で別の読み方をさせたい場合はSSMLの <sub alias=""> を使って置き換える必要があります。つまり自前で単語と読みを変換する仕組みが必要です。

<speak>こんにちは<sub alias="クラスメソッド">classmethod</sub>です</speak>

レキシコン(語彙)は5つまで指定可能

レキシコンは5つまで指定が可能です。複数の場合は先に指定した語彙が優先されます。

例えばPollyを利用した障害通知システムを作る時は、こんな感じで指定すると良さそうだなと思いました。

  1. 監視対象システム固有の語彙(例: 0 → ゼロ)
  2. 監視システム全体の共通語彙(例: classmethod → くらすめそっど)
  3. 一般的なチューニング(例: EC2 → いーしーつー)

まとめ

  • Mizuki の声は聞き取りやすい
  • デフォルト設定でも結構一般的な読み方をしてくれる
  • レキシコン(語彙)は Mizuki(ja-JP)では対応していないため、<sub alias=""> を使って自前でSSML生成する必要がある
  • prosody を使うと声の高さ(pitch), 読み上げ速度(rate), 声の大きさ(volume)を変えられるので聞き取りやすさのチューニングができる

改めてPollyをいろいろ使ってみましたが、どんな文章も聞きやすく読み上げてくれます。そんな中、たまにおもしろい発音をするのでクスッとしてしまいました。 今後Mizukiさんにたくさんの語彙を伝えられるといいですね。

おまけ

で紹介しているSSMLのサンプル文を、日本語と英語ボイスで話したMP3を作成するためのシェルスクリプトを作ったので公開しておきます。