Amazon Pollyを使った音声合成サービス「Talestreamer」を使ってみた

はじめに

先日AWS re:Invent 2017に参加した際に、以下のセッションに参加しました。

このセッションでは、Amazon Alexaを使った音声版ゲームブックをサービス提供しているThe Magic Doorが提供している、Amazon Pollyを使った音声合成サービス「Talestreamer」が紹介されていました。

このTalestreamer、一般の人でも使う事ができます。ということで早速やってみました。

やってみた

サービス登録

TalestreamerのWebサイトで[Sign up now]ボタンをクリックします。

メールアドレスとパスワードを入力し、Termsに同意のチェックをして、[Create Account]ボタンをクリックします。

ログインされます。登録したメールアドレスにConfirmメールが来ているのでConfirmします。

タグについて

簡単に言うと、要素は3つです。

streamタグ

streamタグで全体を囲みます。xmlnsは変更不要です。styleで全体に対するオプションの設定が可能です。

<stream xmlns="http://talestreamer.ai/schema/tsml" style="volume-profile: prenormalized">
</stream>

audioタグ

MP3オーディオファイルを埋め込みます。

<audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/TS_INTRO_1_PART_LOGO_START.mp3"></audio>

styleを付与し、startとendで開始する秒と終了する秒を指定することで、MP3ファイルをトリミングすることが出来ます。

    <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/MagicDoor_GhostCaptain.mp3" style="start: 146; end: 151.3; volume: 5db"></audio>

FAQページで参照されている、フリーの音源がダウンロード出来るページは以下です。

spanタグ

spanで囲まれている範囲に対しstyleでオプションを設定します。

  <span style="background-sound: https://s3.amazonaws.com/magicdoor.huntwork.net/library/ts_intro/bg.mp3; background-volume: loud">
    <span style="voice: Raveena">We’re all here to help. Let’s get started!</span>
    <span style="break: 0.1s"></span>
  </span>

styleについて

Styleで設定出来るものは以下の通りです。

rate

スピーチレートを設定します。設定値はx-slow、slow、medium、fast、x-fastの5段階で、デフォルトはmediumです。

voice

Talestreamerでは元々Amazon Pollyが持っているVoiceに対してrateやpitchでカスタマイズしたものを、名前を付けた声として提供しています。設定可能な名前はAstrid、Brian、Carla、Carmen、Celine、Chantal、Conchita、Cristiano、Dora、Emma、Enrique、Ewa、Filiz、Geraint、Giorgio、Gwyneth、Hans、Ines、Ivy、Jacek、Jan、Joanna、Joey、Justin、Karl、Kendra、Kimberly、Liv、Lotte、Mads、Maja、Marlene、Mathieu、Matthew、Maxim、Miguel、Mizuki、Naja、Nicole、Penelope、Raveena、Ricardo、Ruben、Russell、Tatyana、Salli、Vicki、Vitoriaと非常に多いです。

pitch

ピッチを設定します。設定値はx-slow、slow、medium、fast、x-fastで、デフォルトはmediumです。

volume

音量を設定します。設定値はloud、x-loud、soft、x-soft、medium、quiet、x-quietで、デフォルトはmediumです。

volume-profile

音量を正規化するアルゴリズムを設定することが出来ます。noneかprenormalizedを選択します。

background-sound

バックグラウンドで流れる音となるMP3ファイルを指定します。background-startとbackground-endで開始する秒と終了する秒を指定することで、MP3ファイルをトリミングすることが出来ます。

background-volume

バックグラウンドで流れる音の音量を設定します。設定値はloud、x-loud、soft、x-soft、medium、quiet、x-quietで、デフォルトはmediumです。

background-volume-profile

バックグラウンドで流れる音の音量を正規化するアルゴリズムを設定することが出来ます。noneかprenormalizedを選択します。

break

spanで囲まれたブロックを再生した後に一時的する秒数を指定します。

pre-break

spanで囲まれたブロックを再生する前に一時的する秒数を指定します。

実行

最初から用意されているサンプルは以下。

<stream xmlns="http://talestreamer.ai/schema/tsml" style="volume-profile: prenormalized">
  <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/TS_INTRO_1_PART_LOGO_START.mp3"></audio>
  <span style="background-sound: https://s3.amazonaws.com/magicdoor.huntwork.net/library/ts_intro/bg.mp3; background-volume: loud">
    <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/MagicDoor_GhostCaptain.mp3" style="start: 146; end: 151.3; volume: 5db"></audio>
    <span style="break: 0.5s"></span>
    <span>You can add audible personality, branding, and emotion to your voice bot, using Talestreamer.</span>
    <span style="break: 0.5s"></span>
    <span style="voice: Raveena">We’re all here to help. Let’s get started!</span>
    <span style="break: 0.1s"></span>
  </span>
  <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/TS_INTRO_1_PART_LOGO_END.mp3" style="volume: -10db"></audio>
</stream>

これを再生するとこうなります。audioやbackground-soundが使われていることが分かります。

じゃあこんな風にしてみましょうか。

<stream xmlns="http://talestreamer.ai/schema/tsml" style="volume-profile: prenormalized; voice: Mizuki">
  <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/TS_INTRO_1_PART_LOGO_START.mp3"></audio>
  <span style="background-sound: https://s3.amazonaws.com/magicdoor.huntwork.net/library/ts_intro/bg.mp3; background-volume: loud">
    <span>ようこそ、テイルストリーマーへ。</span>
    <span style="break: 0.5s"></span>
   </span>
   <audio src="http://s3.amazonaws.com/magicdoor.huntwork.net/library/TS_INTRO_1_PART_LOGO_END.mp3" style="volume: -10db"></audio>
  このように、ミズキが喋ることも出来るんですよ。
  <span style="break: 0.1s"></span>
</stream>

こうやってMizukiが使えるので、日本語にも対応しています。

さいごに

音声の細かなコントロールだけであればPollyでも出来ますが、バックグラウンドサウンドやある特定のサウンドを含めて音声ファイルを作りたい場合には重宝するのではないでしょうか。