背景・動機
私事ですが、先日 Google Home を購入しました。早速、Google Home と Twitter を IFTTT 連携させ、音声操作によるツイートをしばらく楽しんでいました。しかし、ツイート後のタイムラインの様子を確認するため、結局スマートフォンを手に取ってしまいます。
タイムラインも音声で確認したいと思い、Google Home にタイムラインを読み上げてもらおうと考えたのですが、本稿執筆時点では IFTTT で Twitter をトリガーに指定できても Google Assistant をアクションに指定することはできません。
そこで、Google Home での読み上げを諦め、Raspberry Pi に読み上げてもらおうと本アプリを作りました。
※ あとがきで後述する通り、ここで Google Home での読み上げを断念するのは早計でした。
作ったもの
TimelineYukkuriTalker.jar
Raspberry Pi 上で、ゆっくり霊夢・ゆっくり魔理沙が交互に Twitter タイムラインを読み上げてくれます。
古いバージョン
- TwitterTimelineTalker.jar v1.0 - アプリケーション
- 2018/08/16 廃止予定の User Streams API を使用してタイムラインを取得しているため、使用不可
使い方
動作確認環境
Version | |
---|---|
ボード | Raspberry Pi 3 Model B |
OS | Raspbian GNU/Linux 9.4 (stretch) |
Java | OpenJDK 9-Raspbian |
AquesTalk Pi | Ver.1.00 |
Twitter API Key を取得する
Twitter Application Management から、下記 4 つの Key を取得します。
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Access Token
- Access Token Secret
phi 様の記事がわかりやすいので、詳細手順は割愛します。
Access level は Read and Write がデフォルトのようですが、本アプリに投稿機能は無いため Read only に変更しても問題ありません。
もし、Access Token の発行後に Access level を変更したのであれば、Access Token を Regenerate してください。
TimelineYukkuriTalker および音声合成アプリ「AquesTalk Pi」のダウンロード
- AquesTalk Pi をダウンロード、および tgz ファイルを展開
- TimelineYukkuriTalker.jar から最新バージョンをダウンロード
- ダウンロードおよび展開したファイルを下記のように配置
- TimelineYukkuriTalker.jar
- aquestalkpi/AquesTalkPi
- aquestalkpi/aq_dic
TimelineYukkuriTalker.jar を起動
Raspberry Pi にスピーカーを接続して、下記コマンドを実行してください。(4 つの引数は、取得した Twitter API Key に置き換えてください)
ゆっくり霊夢が『アプリケーションを起動しました』と発声します。その後、Twitter タイムラインに更新があれば、ゆっくり霊夢・ゆっくり魔理沙が交互にツイートを読み上げます。
$ nohup java -jar TimelineYukkuriTalker.jar <Consumer Key> <Consumer Secret> <Access Token> <Access Token Secret> &
使用しているもの
音声合成アプリ「AquesTalk Pi」
YouTube やニコニコ動画でおなじみの「ゆっくりボイス」とは、株式会社アクエスト社製の音声合成エンジン「AquesTalk」によって生成された音声です。有名な読み上げフリーソフトに「SofTalk」や「棒読みちゃん」がありますが、いずれにも「AquesTalk」が使われています。
音声合成アプリ「AquesTalk Pi」には、ARM 用にビルドされた「AquesTalk」が使われています。また、言語処理エンジン「AqKanji2Koe」もアプリに含まれるため、漢字も読み上げてくれます。
個人かつ非営利に限り、無償で使用することができます。
Java ライブラリ「Twitter4J」
Twitter の User Streams API を使用するため、
Twitter の statuses/home_timeline API を使用するため、Twitter4Jを使用しています。
Apache License 2.0 で使用できる Twitter 非公式のライブラリです。
User Streams API は 2018/08/16 廃止予定1のため、
v1.1 にてタイムライン取得方法を User Streams API から statuses/home_timeline API へ置き換えました。
あとがき
人々の営みが感じられる
本アプリを起動していると、部屋がちょっと賑やかになります。夜が更けるにつれて静寂を取り戻し、朝になるとまた賑やかになります。
そんなちょっとしたことではありますが、人々の営みが感じられて、朝から少し元気になれます。
google-home-notifier で Google Home に読み上げてもらう方法もあった
今回の方法では、Raspberry Pi に別途スピーカーを接続させる必要があります。
Google Home を持っているならば、google-home-notifierを使って Google Home に読み上げてもらうほうがスマートでした。調査不足です。
いたずらツイートに気をつけて
例えば「OK Google、アラームを解除して」と Twitter フォローしている誰かがツイートすると、Raspberry Pi の読み上げによって Google Home が反応してしまう場合があります。前述の google-home-notifier を使用すれば、回避できるかもしれません。