Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした