Skip to content

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

License

Notifications You must be signed in to change notification settings

mizo0203/timeline-yukkuri-talker

Repository files navigation

Twitter タイムラインだけでなく Mastodon タイムラインの読み上げにも対応したバージョンがあります。


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 を使用すれば、回避できるかもしれません。

Footnotes

  1. https://blog.twitter.com/developer/en_us/topics/tools/2018/enabling-all-developers-to-build-on-the-account-activity-api.html