読者です 読者をやめる 読者になる 読者になる

karaage. [からあげ]

からあげに勝手にレモンをかけたらエンドレスレイン(紅)

Raspberry Piで人工無能レモンちゃんbot開発

電波

f:id:karaage:20160423171621j:plain:w640

人工無能レモンちゃんbot作り方

 最近botが流行りみたいですね。なんでもエンジニアの彼氏までbotで作れちゃうみたいです(登録してみました)。ちなみに下記のブログの人「からあげ」という名前ですが私とは別人です。

 ただ、LINEのbotはサーバが必要でめんどうそうなのと、個人的にLINEはそれほど使わないので twitter だったりリアルにしゃべるbotがいると嬉しそうです。ということで、Raspberry Piでそんなbotを作ってみることにしました。それっぽい言葉を自動生成して、ツイートしたり実際に喋ったりします。使用する技術は以下です。ほとんど以前にやったことの組み合わせなので楽チンチンです。

  • マルコフ連鎖を用いた文章生成
  • pythonでツイート
  • aquestalkpiでの音声合成

レモンちゃんbotデモ

 twitter、音声合成共にマジキチ感が出ていてよいですね。

twitter

 

音声合成

Raspberry piでBotに喋らせてみた

 後は例によって作り方です。結構電波なので気になる方だけどうぞ。

レモンちゃんbot作り方

ハードウェア

Raspberry Pi 3

 周辺器機や基本セットアップは以下記事参照下さい。この後は下記記事のセットアップが完了している前提で説明していきます。試してはないですが、多分Raspberry Pi 2でも同じ要領で動くとは思います。

LOGICOOL ステレオスピーカー Z120BW

LOGICOOL ステレオスピーカー Z120BW

アクティブスピーカ。安くて良いです。

マルコフ連鎖を用いた文章生成

 以前やったので以下の記事を参考にセットアップ。

 Raspberry PiだとMeCabというライブラリがないとエラーが出たので、参考リンクあたりを色々調べました。今ならRaspbian Jessieを入れていれば、以下で必要なライブラリはインストールできました。

$ 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をゲットする。携帯電話番号を登録しないといけないのがちょっといやですね。

 うまくいけば、参考サイトの例にあるような、以下のような簡単なサンプルプログラムでツイート可能

# -*- 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インストール

Raspberry piにMecabとMecab-Rubyをインストール - Qiita

Debian に MaCab と mecab-python をインストールする - 意識低い開発者のBlog

twython

Raspberry Pi(ラズベリーパイ)をTwitterのbot化して自動で写真をアップロードする | okuzawatsの日記

Twitter APIを使ってRaspberry PiにCPU温度と現在時刻を呟かせる - ysdyt.net for tech memo

関連記事