人工無能レモンちゃんbot作り方
最近botが流行りみたいですね。なんでもエンジニアの彼氏までbotで作れちゃうみたいです(登録してみました)。ちなみに下記のブログの人「からあげ」という名前ですが私とは別人です。
ただ、LINEのbotはサーバが必要でめんどうそうなのと、個人的にLINEはそれほど使わないので twitter だったりリアルにしゃべるbotがいると嬉しそうです。ということで、Raspberry Piでそんなbotを作ってみることにしました。それっぽい言葉を自動生成して、ツイートしたり実際に喋ったりします。使用する技術は以下です。ほとんど以前にやったことの組み合わせなので楽チンチンです。
- マルコフ連鎖を用いた文章生成
- pythonでツイート
- aquestalkpiでの音声合成
レモンちゃんbotデモ
twitter、音声合成共にマジキチ感が出ていてよいですね。
ウォズさんの鋭いチェックに気圧されて、各サービスの情報を得ました。ダイアログが出たとき。
— lemon_chan_bot (@lemon_chan_bot) 2016年4月11日
ただWindowsの方はテストしていたとき。お… この艶かしいタコの肌触り。
— lemon_chan_bot (@lemon_chan_bot) 2016年4月11日
音声合成
後は例によって作り方です。結構電波なので気になる方だけどうぞ。
レモンちゃんbot作り方
ハードウェア
Raspberry Pi 3周辺器機や基本セットアップは以下記事参照下さい。この後は下記記事のセットアップが完了している前提で説明していきます。試してはないですが、多分Raspberry Pi 2でも同じ要領で動くとは思います。
アクティブスピーカ。安くて良いです。マルコフ連鎖を用いた文章生成
以前やったので以下の記事を参考にセットアップ。
Raspberry PiだとMeCabというライブラリがないとエラーが出たので、参考リンク(本記事の最後にあります)あたりを色々調べました。今ならRaspbian Jessieを入れていれば、以下で必要なライブラリはインストールできました。
$ sudo apt-get install update $ sudo apt-get install mecab $ sudo apt-get install libmecab-dev $ sudo apt-get install mecab-ipadic-utf8 $ sudo apt-get install python-mecab
pythonでツイート
以前は自作ロボットからツイートさせるときとか、以下のtwを使っていました。
もの凄くシンプルにターミナルから呟けるので非常に気に入っているのですが、pythonからつぶやくといちいちシステムコールしないといけないので、pythonから手軽に呟けるtwythonというライブラリを使ってみることにしました。
まずは、以下コマンドでtwythonをインストール
$ sudo pip install twython
後は、以下サイトでtwitterアプリを登録して、Consumer keyとAccess tokenをゲットしましょう。携帯電話番号を登録しないといけないのがちょっとハードル高いですね。 https://apps.twitter.com
うまくいけば、参考サイトの例にあるような、以下のような簡単なサンプルプログラムでツイート可能
# -*- coding: utf-8 -*- import twython if __name__ == '__main__': consumerKey = 'CONSUMERKEY' consumerSecret = 'CONSUMERSECRET' accessToken = 'ACCESSTOKEN' accessSecret = 'ACCESSSECRET' api = twython.Twython(app_key=consumerKey, app_secret=consumerSecret, oauth_token=accessToken, oauth_token_secret=accessSecret) test_tweet_str = u'テストテスト' try: api.update_status(status=test_tweet_str) except twython.TwythonError as e: print e
aquestalkpiでの音声合成
以下の記事の音声合成の箇所を参考に実装
ホームディレクトリ(/home/pi/
)以下にaquestalkpiディレクトリを配置する。以下のコマンドで音声出力できた。接続しているUSBデバイス等環境によっては音が出ない場合もあるので、上記記事等参考にして設定してください。
$ ~/aquestalkpi/AquesTalkPi -f テスト | aplay
人工無能レモンちゃんbot
ここまでの技術の組み合わせで人工無能レモンちゃんbotをつくりました。ソースコードやセットアップ方法等をまとめてGitHubで公開しました。
書いてある通りにやれば、デモのようなことができます(運が良ければ)。もし興味あれば試してみて下さい。
まとめ
とりあえず作ってしまったけど、どうしようかなこれ。ちなみにRaspberry Pi 3 のアナログオーディオ、決して良い音質ではないのですが、Raspberry Pi 2に比べると心なしかノイズが改善している気がするのだけど気のせいかしら?
参考リンク
Raspberry PiでMeCabインストール
http://qiita.com/JO3QMA/items/6ab7ac46279b7c8f6378
Debian に MaCab と mecab-python をインストールする – ymyzk’s blog
twython
http://okuzawats.com/twitter-bot-20141010
Twitter APIを使ってRaspberry PiにCPU温度と現在時刻を呟かせる - ysdyt.net for tech memo