TECHSCORE Advent Calendar 2016 の 7 日目の記事です。
Amazon Polly を使って Twitter のタイムラインを喋らせてみる
先日、Amazon Polly というテキストから音声を生成するサービスがリリースされました。
合成音声のサービスは色々あると思いますが、AWS で提供されるメリットはなかなか大きいかもしれませんね。
今回は、この Amazon Polly を使って Twitter のタイムラインを喋らせるスクリプトをサクっと作ってみようと思います。
Twitter クライアントを作る? 面倒だ!
やりたい事は簡単なので、一からアプリを作るようなことしたくありません。
そこで、コマンドラインで使える twty という既存のクライアントを使います。
実行すると、標準出力にタイムラインを出力してくれるので、今回の目的にピッタリです。
go 言語製でインストールも設定も超簡単なので、まずはインストールします。(詳しくは こちら)
API を叩く? 面倒だ!
API を叩くコードも書きたくないので、awscli を使います。
これは説明するまでもないですね。
一つだけ注意点として、まだ全てのリージョンで提供されているわけではないので、 export AWS_DEFAULT_REGION=us-east-1 などとして提供されているリージョンを使うようにしてやる必要があります。
みんな大好きシェルスクリプト
みんな大好きなので、シェルスクリプトは書くことにします。
http や @〜 を削除したものを 1 行ずつ polly に渡してやります。
(mpv はただのメディアプレイヤーのコマンドなので、各自で適当なコマンドに置き換えてください)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash export AWS_DEFAULT_REGION=us-east-1 twty | while read -r tweet do simplified=$(echo "$tweet" | sed 's/http[^ ]*\|@[^ ]*//g') echo "$tweet" aws polly synthesize-speech --output-format mp3 --voice-id Mizuki --text "$simplified" /tmp/polly.mp3 mpv --loop=no --really-quiet --no-config --idle=once /tmp/polly.mp3 done |
あとは、実行するだけ。
音声の品質
本当に人間が喋っている、という感じはしませんが、なかなか聞きやすい音声が出力されます。
また、日本語の合成音声ライブラリを使うと、Hello を えいちいーえるえるおー などと読んでしまうものがありますが、
Amazon Polly は、英語部分もほぼ読んでくれるようです。
声を変えたい、しかし
ちなみに、声も指定できるようですが、日本語については一人しかいません。
--voice-id オプションで指定可能な声は、↓のようにして調べられますが、返ってくるのは一つだけなのです。
1 |
$ aws polly describe-voices --language-code ja-JP |
いつか増えるを期待しています。
個人的には↓のようなタイプの声を希望します。