2017年8月9日水曜日

I2C接続顔モジュール製作 ソフト編

前回の続きです.

ブロック図はこんな感じ



配線はゴチャゴチャですが,意外とシンプル.
Ver.2を作るときは一枚にまとめたいです.

プログラムはこんな感じです.
前回はJuliusを使用しておりましたが,今回は
音声認識もdocomo apiに任せることにしました.
それに伴い,pyaudioで録音し送信する形を取っております.

参考にさせて頂きました.
http://qiita.com/kinpira/items/75513eaab6eed19da9a3

全体のフローは以下のとおり

  1. ボタン入力待ち
  2. マイクからデータ取得
  3. ボタンが離されるまで待つ
  4. 3を音声認識apiに送信.返答を受け取る.
  5. 4を雑談対話apiに送信.返答を受け取る.
  6. 5を発音
  7. 5の内容によって何かしらのアクション
GPIOにLEDとボタンを接続し,キーボードレスで
会話することができます.ここではLED点灯
のときボタンを押すとLEDが消灯します.
ボタンを押している間,録音が可能となっております.
ボタンの前はenterキーにしてました.

さらに顔モジュールと連動させるようにしました.
アクションはaction.pyにまとめられています.
適当なテキストを渡すと特定の単語を抽出し
マトリクスLEDを変化させます.
とりあえず思いつく限りの単語を登録しました.

動作の様子です.



全プログラムをもう一度まとめておきます.





2017年8月8日火曜日

I2C接続顔モジュール製作 色々進化?

お久しぶりです.
大学が夏休みに入り,すっかりゲーム・バイトに明け暮れております.
まあ大学生らしいといえばらしいですが.

そんな中,i2c顔モジュールが前回から大きく進化しましたので
メモを残します.



なんか下部がやたらでかくなっております.



まず前方にプッシュスイッチとLEDを配置しました.
コレでいちいちリモートしなくともある程度はRpiを操作できます.



そして側面にスピーカーを配置.これで電源に接続しちょっと待つだけで
raspiと会話することができます.



内部の様子はなかなかカオスです.最近の省スペースPCでも
もっとすっきりしています.



構成はこんな感じ.制御ユニットとアンプの電源用に
モバイルバッテリを搭載しました.
フロントパネルに無理やり電源スイッチを引き出したため
配線が多くなってしまいました.

今回は100均パーツを多く使用しました.
なので結構簡単に作ることができます.



ダイソー(300円)モバイルバッテリ.
本来の用途では力不足ですが,電子工作との親和性は高そう.
ネットを見る限り簡単に改造できそうで,今後も使って行きたいです.



すっかりタッパーでケースを作るのにはまりました.
100均のタッパー売り場に行くとワクワクします.



ダイソーのアンプ.数年前に買ったものです.ちなみにスピーカ
もダイソーです.基盤を抜き出し,電源を付け替えて使用しています.
音質はギリ許せる程度です.モバイルバッテリに接続するとノイズが
減ったのか若干改善しました.



動いている動画です.



ちなみに,ソフト面もだいぶ変わり,juliusからdocomo_apiに変更,
ボタン入力待ち,マトリクスLEDとの連動などを追加しています.
詳しいプログラムはまた次回で.














2017年7月17日月曜日

PlayStation4を買った話

どうもcaketetuです.
電子工作とはまったく関係ないですが,PS4を買った話.

amazonで購入しました.



開封の儀~
ちなみに奮発してproを買いました.



とりあえず起動.
最初に買ったゲームはFF12のリメイクです.
ps2版をやったことがありますが,システムが超面白くてオススメです.



ゲームに明け暮れずブログも大学生活も頑張りましょう笑




2017年7月13日木曜日

過去記事修正中

どうもcaketetuです.

スマホでブログを見ていたらレイアウトが乱れていることと
動画が再生されないことに気づきました.
現在,過去記事を修正しています.

一回PCにOSを入れなおしたので過去から発掘しなければ・・・

I2C接続顔モジュール製作 ソフト編

どうもcake tetuです.
この記事の続きです.

前回までにi2c経由で2軸サーボとマトリクスLEDを制御することができました.
今回はweb経由で操作できるようにしたいと思います.

ちなみにwebプログラミングに関する知識は全くといっていいほど
ありません.現在勉強中です.
今回コチラを参考にさせて頂きました.

webサーバにはlighttpdを使用します.
lighttpdのインストール
% sudo apt-get install lighttpd

設定ファイルは/etc/lighttpd/lighttpd.confです.
fastcgiでpythonを動かしますので,私の設定はこんな感じになりました.

/var/www/htmlにhtmlファイルをおきます.
自分はindexとマウント操作用の2つを作成しました.
このように表示されます.htmlは初めてでしたが結構がんばってデザインしました.



カメラのストリーミングはmjpg-streamerを使用しました.コチラで記事にしています.
htmlへの挿入は
<body onload="createImageLayer();">
<div id="webcam"><noscript><img src="http://IPアドレス:ポート?action=snapshot" /></noscript></div>
</body> 
でいけるようです.
常時起動にはしていませんので(結構CPU食うっぽい)以下コマンドで起動します.
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 60 -y -n" -o "./output_http.so -p 8081 -w ./www -c test:password" &
カメラが起動しなくともプログラムは動きます.

/var/wwwにpythonプログラムをおきます.
非常に稚拙なプログラムだと思います.もっと勉強しなければ.

ブラウザでip/index.htmlにアクセスすれば表示されます.


これでハードウェアの制御部分はほぼ完成しました.
今回製作したものを用いていろいろ遊んでいきたいと思います.



2017年7月10日月曜日

Rasoberry Pi docomo雑談apiと会話してみる

どうもcaketetuです.

今回はdocomo雑談apiを用いてraspberry pi と会話してみます.
docomo雑談対話api
コチラのサイトを参考にさせて頂きました.

サイトのコードをそのまま動かしてみた結果,
なんか微妙に会話がかみ合っていませんが
何とか成立はしています.
やたらカレーが好きなようです.

juliusとopen Jtalkを用いて会話を試みます.
それぞれのコードはコチラとコチラ参考にさせて頂きました.

現在の環境はこんな感じ.


acerのハードオフで買ったスピーカーを接続.型番は不明です.
マトリクスLEDが光っていますが,今回は動きません.

動かした動画
raspberry piは動かないので今回はコンソールだけ.


動作は遅いですが,何とか会話しています.
ちょっと質問が意地悪ですが笑

今回は
音声認識ー>julius
AI->docomo api
出力ー>open Jtalk
の組み合わせを試しましたが,今後いろいろなサービスを
利用し,処理の高速化&精度の向上を目指したいと思います.

需要ないかもですが今回作ってみたみたスクリプト
起動シェルスクリプト 環境に合わせて変更
https://drive.google.com/open?id=0B4sMYcSdF0SFZ011ME5rUnBxU2c
Open Jtalk
https://drive.google.com/open?id=0B4sMYcSdF0SFaENYbmxzR0VYTG8
メインのjuliusプログラム docomo_api_key を環境に合わせて変更
https://drive.google.com/open?id=0B4sMYcSdF0SFaFMzb2ZieS1IcGs
ドコモ雑談API
https://drive.google.com/open?id=0B4sMYcSdF0SFX0ltaGdRcUZMdlE




2017年7月5日水曜日

Rasoberry Pi juliusとopen Jtalkを試してみる

I2C接続顔モジュールの形がほぼ定まってきたので,
なんとかしてRasPiと会話したい.

いろいろ調べた結果,音声認識にJulius,音声合成にopen Jtalkを
使用している例が多かったので,今回はこれらを導入したいと思います.

カメラ・マイクはLOGICOOL ウェブカム HD画質 120万画素 C270
スピーカーは外部電源の取れるものをイヤフォンジャックから出力しています.

・Julius
導入は参考サイトが多くあるので省略します.
ただ一点だけjuliusインストール時に./configureが実行できませんでした.
どうやらautomakeを使うらしい.
以下を実行すると無事makeできました.
$aclocal && libtoolize --force && automake --add-missing && autoreconf

ちょっと試してみます
$cd julius-kits/dictation-kit-v4.3.1-linux

$ALSADEV="plughw:0,0" ~/julius-4.4.2/julius/julius -C ~/julius-kits/dictation-kit-v4.4/main.jconf -C ~/julius-kits/dictation-kit-v4.4/am-gmm.jconf -nostrip


撮影環境が悪くて動画がブレブレです笑
精度がかなり高くて驚きました.

・Open Jtalk
こちらも導入は省略.
適当なテキストファイルを用意しました.

voice.txt
ハロー ラズベリーパイ オープンジェイトーク デモ

ついでにインストールした女性(mei)の声でwavファイルに変換します.
$open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow test.wav voice.txt

aplayコマンドで再生します.
$aplay -Dhw:1,0 test.wav



思ったより自然な声です.
個人的にはもっと落ち着いた声がいいななんて.

次回からこれらを用いて具体的なソフトの製作をしたいと思います.

参考にさせていただいたサイト
http://qiita.com/t_oginogin/items/f0ba9d2eb622c05558f4
http://www.pentacreation.com/blog/2016/12/161223.html
http://qiita.com/lutecia16v/items/8d220885082e40ace252