Edited at

Raspberry Pi でゆっくり達に Twitter タイムラインを読み上げてもらう


背景・動機

私事ですが、先日 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」のダウンロード



  1. AquesTalk Pi をダウンロード、および tgz ファイルを展開


  2. TimelineYukkuriTalker.jar から最新バージョンをダウンロード

  3. ダウンロードおよび展開したファイルを下記のように配置


    • 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 へ置き換えました。

powered-by-twitter4j-138x30.png


あとがき


人々の営みが感じられる

本アプリを起動していると、部屋がちょっと賑やかになります。夜が更けるにつれて静寂を取り戻し、朝になるとまた賑やかになります。

そんなちょっとしたことではありますが、人々の営みが感じられて、朝から少し元気になれます。


google-home-notifier で Google Home に読み上げてもらう方法もあった

今回の方法では、Raspberry Pi に別途スピーカーを接続させる必要があります。

Google Home を持っているならば、google-home-notifierを使って Google Home に読み上げてもらうほうがスマートでした。調査不足です。


いたずらツイートに気をつけて

例えば「OK Google、アラームを解除して」と Twitter フォローしている誰かがツイートすると、Raspberry Pi の読み上げによって Google Home が反応してしまう場合があります。前述の google-home-notifier を使用すれば、回避できるかもしれません。