1
|
[Twitter タイムラインだけでなく Mastodon タイムラインの読み上げにも対応したバージョンがあります。](https://github.com/mizo0203/TimelineTalker)
|
2
|
|
3
|
---
|
4
|
|
5
|
# Raspberry Pi でゆっくり達に Twitter タイムラインを読み上げてもらう
|
6
|
|
7
|
## 背景・動機
|
8
|
|
9
|
私事ですが、先日 Google Home を購入しました。早速、Google Home と Twitter を IFTTT 連携させ、音声操作によるツイートをしばらく楽しんでいました。しかし、ツイート後のタイムラインの様子を確認するため、結局スマートフォンを手に取ってしまいます。
|
10
|
|
11
|
タイムラインも音声で確認したいと思い、Google Home にタイムラインを読み上げてもらおうと考えたのですが、本稿執筆時点では IFTTT で Twitter をトリガーに指定できても Google Assistant をアクションに指定することはできません。
|
12
|
|
13
|
そこで、Google Home での読み上げを諦め、Raspberry Pi に読み上げてもらおうと本アプリを作りました。
|
14
|
|
15
|
※ あとがきで後述する通り、ここで Google Home での読み上げを断念するのは早計でした。
|
16
|
|
17
|
## 作ったもの
|
18
|
|
19
|
TwitterTimelineTalker.jar v1.1
|
20
|
|
21
|
Raspberry Pi 上で、ゆっくり霊夢・ゆっくり魔理沙が交互に Twitter タイムラインを読み上げてくれます。
|
22
|
|
23
|
* [アプリケーション](http://redmine.mizo0203.com/attachments/64/TwitterTimelineTalker.jar)
|
24
|
* [ソースコード](https://github.com/mizo0203/TwitterTimelineTalker)
|
25
|
|
26
|
### 古いバージョン
|
27
|
|
28
|
* TwitterTimelineTalker.jar v1.0 - [アプリケーション](http://redmine.mizo0203.com/attachments/57/TwitterTimelineTalker.jar)
|
29
|
* 2018/08/16 廃止予定の User Streams API を使用してタイムラインを取得しているため、使用不可
|
30
|
|
31
|
## 使い方
|
32
|
|
33
|
### 動作確認環境
|
34
|
|
35
|
| | Version |
|
36
|
|:-------------|:---------------------------------|
|
37
|
| ボード | Raspberry Pi 3 Model B |
|
38
|
| OS | Raspbian GNU/Linux 9.4 (stretch) |
|
39
|
| Java | OpenJDK 9-Raspbian |
|
40
|
| AquesTalk Pi | Ver.1.00 |
|
41
|
|
42
|
### Twitter API Key を取得する
|
43
|
|
44
|
[Twitter Application Management](https://apps.twitter.com) から、下記 4 つの Key を取得します。
|
45
|
|
46
|
* Consumer Key (API Key)
|
47
|
* Consumer Secret (API Secret)
|
48
|
* Access Token
|
49
|
* Access Token Secret
|
50
|
|
51
|
[phi 様の記事](http://phiary.me/twitter-api-key-get-how-to/)がわかりやすいので、詳細手順は割愛します。
|
52
|
|
53
|
Access level は Read and Write がデフォルトのようですが、本アプリに投稿機能は無いため Read only に変更しても問題ありません。
|
54
|
|
55
|
もし、Access Token の発行後に Access level を変更したのであれば、Access Token を Regenerate してください。
|
56
|
|
57
|
### TwitterTimelineTalker および音声合成アプリ「AquesTalk Pi」のダウンロード
|
58
|
|
59
|
1. [AquesTalk Pi](https://www.a-quest.com/products/aquestalkpi.html) をダウンロード、および tgz ファイルを展開
|
60
|
2. [TwitterTimelineTalker.jar v1.1](http://redmine.mizo0203.com/attachments/64/TwitterTimelineTalker.jar) をダウンロード
|
61
|
3. ダウンロードおよび展開したファイルを下記のように配置
|
62
|
* TwitterTimelineTalker.jar
|
63
|
* aquestalkpi/AquesTalkPi
|
64
|
* aquestalkpi/aq_dic
|
65
|
|
66
|
### TwitterTimelineTalker.jar を起動
|
67
|
|
68
|
Raspberry Pi にスピーカーを接続して、下記コマンドを実行してください。(4 つの引数は、取得した Twitter API Key に置き換えてください)
|
69
|
|
70
|
ゆっくり霊夢が『アプリケーションを起動しました』と発声します。その後、Twitter タイムラインに更新があれば、ゆっくり霊夢・ゆっくり魔理沙が交互にツイートを読み上げます。
|
71
|
|
72
|
```bash
|
73
|
$ nohup java -jar TwitterTimelineTalker.jar <Consumer Key> <Consumer Secret> <Access Token> <Access Token Secret> &
|
74
|
```
|
75
|
|
76
|
## 使用しているもの
|
77
|
|
78
|
### 音声合成アプリ「AquesTalk Pi」
|
79
|
|
80
|
YouTube やニコニコ動画でおなじみの「ゆっくりボイス」とは、[株式会社アクエスト](https://www.a-quest.com/index.html)社製の音声合成エンジン「[AquesTalk](https://www.a-quest.com/products/aquestalk_1.html)」によって生成された音声です。有名な読み上げフリーソフトに「[SofTalk](https://www35.atwiki.jp/softalk/)」や「[棒読みちゃん](http://chi.usamimi.info/Program/Application/BouyomiChan/)」がありますが、いずれにも「AquesTalk」が使われています。
|
81
|
|
82
|
音声合成アプリ「[AquesTalk Pi](https://www.a-quest.com/products/aquestalkpi.html)」には、ARM 用にビルドされた「AquesTalk」が使われています。また、言語処理エンジン「[AqKanji2Koe](https://www.a-quest.com/products/aqkanji2koe.html)」もアプリに含まれるため、漢字も読み上げてくれます。
|
83
|
|
84
|
個人かつ非営利に限り、無償で使用することができます。
|
85
|
|
86
|
### Java ライブラリ「Twitter4J」
|
87
|
|
88
|
~~Twitter の User Streams API を使用するため、~~
|
89
|
|
90
|
Twitter の statuses/home_timeline API を使用するため、[Twitter4J](http://twitter4j.org/)を使用しています。
|
91
|
|
92
|
Apache License 2.0 で使用できる Twitter 非公式のライブラリです。
|
93
|
|
94
|
User Streams API は 2018/08/16 廃止予定[^1]のため、
|
95
|
v1.1 にてタイムライン取得方法を User Streams API から statuses/home_timeline API へ置き換えました。
|
96
|
|
97
|
![powered-by-twitter4j-138x30.png](https://qiita-image-store.s3.amazonaws.com/0/40619/6e7bb573-0590-e434-42f3-759355d3971c.png "powered-by-twitter4j-138x30.png")
|
98
|
|
99
|
## あとがき
|
100
|
|
101
|
### 人々の営みが感じられる
|
102
|
|
103
|
本アプリを起動していると、部屋がちょっと賑やかになります。夜が更けるにつれて静寂を取り戻し、朝になるとまた賑やかになります。
|
104
|
|
105
|
そんなちょっとしたことではありますが、人々の営みが感じられて、朝から少し元気になれます。
|
106
|
|
107
|
### google-home-notifier で Google Home に読み上げてもらう方法もあった
|
108
|
|
109
|
今回の方法では、Raspberry Pi に別途スピーカーを接続させる必要があります。
|
110
|
|
111
|
Google Home を持っているならば、[google-home-notifier](https://github.com/noelportugal/google-home-notifier)を使って Google Home に読み上げてもらうほうがスマートでした。調査不足です。
|
112
|
|
113
|
### いたずらツイートに気をつけて
|
114
|
|
115
|
例えば「OK Google、アラームを解除して」と Twitter フォローしている誰かがツイートすると、Raspberry Pi の読み上げによって Google Home が反応してしまう場合があります。前述の google-home-notifier を使用すれば、回避できるかもしれません。
|
116
|
|
117
|
[^1]: https://blog.twitter.com/developer/en_us/topics/tools/2018/enabling-all-developers-to-build-on-the-account-activity-api.html
|