Twilioに追加されたPolly連携が有用なのかをドキュメントからまとめた

はじめに

9月にTwilioのPolly連携を使うとどうなりそうなのかを調べたのでまとめました。

料金

  • 通話料金にPolly使用料が上乗せされる
  • 100文字単位で従量課金
  • 10の位の単位は切捨て
  • 利用量に応じてディスカウントはある。
  • AWS Accountの紐付けはできないので、無料利用枠(500万文字/月)は享受できない。
  • 同一テキストでも電話をかけた分だけPollyの利用料がかかる
    (Cacheとか存在しないから、かけた分だけかかる哀しみ)

機能面

  • 使うのはSay APIを使えば簡単に使える
    https://jp.twilio.com/docs/voice/twiml/say/text-speech#amazon-polly

  • 音声はPollyでサポートされているものなら使える

  • 辞書機能はあるが、Twilioでは使用不可
    Pollyでも日本語の辞書は作れないっぽい(半角英字指定あり ※2018/9時点)
  • SSMLのPollyが作ったカスタムタグ(W3C標準ではないもの)は使えない
  • 3000文字制限がある
    Pollyのリアルタイム音声合成APIの上限値に紐づくので、Twilioがコントロールできる仕様ではない

以上のことを踏まえると、
自前でTwilio -> Polly連携できる会社には使うメリットはないという結果になっちゃいました。

折角なのでザックリやり方も考えたので載せておきます。

自前でお安くやる方法の例

Pollyの非同期APIを使う

音声合成した結果のファイルがS3に置かれる。

S3に置かれたタイミングでSNSで通知可能なため、
LambdaでもSQSでもHTTP/Sエンドポイントでも好きなところに通知してアプリ側で紐づけてあげる。

作られたファイルをTWIMLなりに含んでTwilioに電話をかけさせるだけで実現可能。

同期実行する

文字列が3000文字未満であることが約束できる場合は、
同期実行して結果をS3などに保存してあげればOK

Twilio -> Polly連携と比べたメリット

  • 全く同じ内容のものが毎回合成されないようにコントロール可能
  • Pollyのアップデートに対して、Twilio側の制約を受けなくて済む
  • Polly利用料はAWSの無料分が有効になる。

Twilio -> Polly連携と比べたデメリット

自前で作らないといけないくらい。 どのみちフルマネージドサービスで閉じてるので運用コストはかからない想定。

まとめ

初期構築費用をケチらなければ、AWSの無料枠が沢山あるので、サービス利用量は抑えられます。

ITエンジニア目線だと、あまりTwilio - Polly連携を使う意味がないように思えました。

AWSのアカウントを持ってなかったり、アカウント管理に自信のない組織では、
Twilio -> Polly連携は簡単に使えるので使えばイイと思います。