Voice Text API の登録
によれば
音声合成に
HOYAのVoiceText Web APIを使うことで
安い音声合成LSI使うより
よほど自然にしゃべらせることができ
感情とかの設定も可能
とのことなので、さっそく登録
まず無料で試すため
無料利用登録をクリック
名前とメールアドレス、利用目的を入力
企業、部署名は個人の場合は
個人と入力
これで登録が完了すると
メールでAPIキーが送信されてくるので
それを使う
Just another WordPress site
Voice Text API の登録
によれば
音声合成に
HOYAのVoiceText Web APIを使うことで
安い音声合成LSI使うより
よほど自然にしゃべらせることができ
感情とかの設定も可能
とのことなので、さっそく登録
まず無料で試すため
無料利用登録をクリック
名前とメールアドレス、利用目的を入力
企業、部署名は個人の場合は
個人と入力
これで登録が完了すると
メールでAPIキーが送信されてくるので
それを使う
rapiro に nodejs + express
dotinstall で
node.js と express を以前やったこともあり
今回は
RAPIRO(ラピロ)をWebサーバにする
を参考に
node.js をインストール
apache は以前インストールしたことがあるので
今回は node.js にしてみます
まずは sshでログイン
そして
node.js のバージョン管理ツール nodebrew のインストール
curl -L git.io/nodebrew | perl - setup
次に環境変数の設定
vim .bashrc
で
一番下の行へ
export PATH=$HOME/.nodebrew/current/bin:$PATH
を追記し保存
設定反映のため
source .bashrc
次にインストールだけど
基本的にはじめてやることは
再現性を求めるなら
同じバージョンを使うことが鉄則
でないと
自力で修正する手間が増える
nodebrew install-binary v0.10.3
これでインストール
次に使用するバージョンを設定するため
nodebrew use v0.10.3
インストールしているバージョンと
現在利用設定しているのを調べるなら
nodebrew list
もし1つだけだと
v0.10.3 current: v0.10.3
となる
次に express のインストール
まず作業ディレクトリを作成し
そこへ移動して実行する
mkdir Rapiro cd Rapiro
次にプロジェクトの初期設定
npm init
でOK
npm はパッケージ管理で
ubuntu なら apt-get
centOS なら yum のようなもの
このコマンド実行で
package.json
が作成される
今回は全部 enter してみた
以下、質問内容
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (Rapiro)
version: (0.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (BSD)
About to write to /home/pi/Rapiro/package.json:
{
"name": "Rapiro",
"version": "0.0.0",
"description": "ERROR: No README.md file found!",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": "",
"author": "",
"license": "BSD"
}
Is this ok? (yes)
これで最後に
npm WARN package.json Rapiro@0.0.0 No README.md file found!
となる
次に express のインストール
npm install express --save
インストール完了したら
vim app.js
でファイル作成
内容は
var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
これは
node.js express の hello world のコード
http://expressjs.com/starter/hello-world.html
ファイルが作成できたら実行
node app.js
すると
Example app listening at http://0.0.0.0:3000
で3000ポートまちになるので
ブラウザで
http://192.168.10.159:3000/
というように
Rapiro のIP:3000
でアクセスすると
hello world が表示される

なお、終了は ctrl +c でOK
もっと詳しく node.js をやるなら
ドットインストールの node.js がおすすめ
Rapiro の音声操作その4
今回は Julius を音声認識サーバとして機能させる
これを行うのが Julius の
モジュールモード
これを使えば独立した音声認識サーバーになる
このモジュールモードだと
音声認識結果を
Julius サーバーから
ソケット通信で他のプログラムへ渡すことができる
この仕組みを使うことで
RaspberryPi で音声認識結果を受け取る
これをやるには
rapiro.conf の
一番下の行へ
-module
を追加する
cd dictation-kit-v4.3.1-linux/
でディレクトリ移動して
sudo vim rapiro.conf
でファイルを開き編集
全部を書くと
-w rapiro.dic -v model/lang_m/bccwj.60k.htkdic -h model/phone_m/jnas-tri-3k16-gid.binhmm -hlist model/phone_m/logicalTri -n 5 -output 1 -input mic -input alsa -rejectshort 800 -lv 1500 -demo -module
最後に -module を追加している
これで
julius -C rapiro.conf
で起動
----------------------- System Information end ----------------------- Notice for feature extraction (01), ************************************************************* * Cepstral mean normalization for real-time decoding: * * NOTICE: The first input may not be recognized, since * * no initial mean is available on startup. * ************************************************************* Stat: capture audio at 16000Hz Stat: adin_alsa: current latency time: 21 msec Stat: adin_alsa: current latency (21ms) is shorter than 32ms, leave it Stat: "default": Device [USB PnP Sound Device] device USB Audio [USB Audio] subdevice #0 STAT: AD-in thread created <<< please speak >>>
が普通に起動した Julius で
今回サーバーモードだと
Stat: server-client: socket ready as server /////////////////////////////// /// Module mode ready /// waiting client at 10500 ///////////////////////////////
となりちょっと変わる
client at 10500
とあるように
ポート 10500 を使うことになります
どちらも停止方法は
ctrl + c
これで辞書ファイルの結果を渡せるので
前回作成した辞書ファイルを
Rapiro のコマンドになるように編集
ちなみに Rapiro のコマンドは
http://wiki.rapiro.com/page/serial-command_ja/
にあるように
#M0
停止
#M1
前進
#M2
後退
#M3
右回り
#M4
左回り
#M5
両手をふる
#M6
右手をふる
#M7
両手を握る
#M8
右手をふる
#M9
右手を伸ばす
となっている
なので、これに対応するようにファイルを編集する
まず、バックアップをとっておく
cp rapiro.dic rapiro.dic_bak
これでいざというときにはこれから復旧できる
次にファイルの編集
sudo vim rapiro.dic
でファイルを開いて
<sil> silB <sil> silE <sp> sp ラピロ r a p i r o はっしん h a q sh i N こうたい k o u t a i バック b a q k u 右 m i g i 左 h i d a r i バンザイ b a N z a i たたかえ t a t a k a e
の日本語部分を Rapiro のコマンドに変える
<sil> silB <sil> silE <sp> sp #M0 r a p i r o #M1 h a q sh i N #M2 k o u t a i #M2 b a q k u #M6 m i g i #M8 h i d a r i #M5 b a N z a i #M9 t a t a k a e
これで保存
次に
制御コマンドを Julius から受け取り
GPIOのTXピンから
UARTシリアル通信でRapiro の基盤になっている
Ardunioに送信するプログラムを準備
これにより受け取った動作コマンドに応じて
サーボモータなどを動かす
vim rapiro_main.py
で python ファイルを作成
内容は
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import serial
host = 'localhost'
port = 10500
clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsock.connect((host, port))
com = serial.Serial('/dev/ttyAMA0', 57600, timeout=10)
while True:
recv_data = clientsock.recv(512)
com.write(recv_data)
次に必要なパッケージ
python-serial をインストール
sudo apt-get install python-serial
これでようやく起動
julius -C rapiro.conf &
&をつけてバックグランド動作
これをつけないと端末入力できなくなる
途中で
/////////////////////////////// /// Module mode ready /// waiting client at 10500 ///////////////////////////////
がでたら Enter をおす
次に
sudo python rapiro_main.py
しかし、まったく動かない
原因を調べた結果、マイクの機種によってはうまく動作しないらしい
RAPIRO(ラピロ)の音声制御(参考:日経Linux 2014 6月号)
にXMLパースのソースが載っていたので
これを使わせていただくことで無事に動作することができました
なお、参考にした書籍
ラズパイマガジンの読者限定ページで
この問題対応のソースも用意されているので
こちらで対処することも可能です
Rapiro の音声操作 その3
音声入力はできたけど
Julius で音声の認識から結果が表示されるまで
長い理由はJulius の初期設定の
辞書ファイルが大きいため
Juius の動作は
マイクから入力された音声を
辞書に登録されている単語と比較
そして
もっとも近い単語を選び出す
という処理になっている
そういえば音声で動く Android の音声関連も
どうなっているのか興味深いところ
それはさておき
この辞書ファイルに登録された単語の中から
最適な言葉を検索するため
活舌の曖昧な音声だったりすると
誤認識もするし
探すのに時間がかかる
Rapiro の動作に RaspberryPi だけでなく
ネットワークでサーバーで処理するとかできれば
もっとはやいのかもしれない
ただし、Julius ではそんなことをしなくても
音声認識させたい言葉だけを登録した
オリジナル辞書ファイルの作成が可能とのこと
つまり、必要最低限の単語だけ
登録した辞書ファイルをつくれば
音声認識のスピードアップ
そして認識精度の向上が可能
ただし、そのぶん反応する言葉は減る
用途ごとに絞るといいのかもしれない
なお、辞書ファイルとはいっても拡張子を
.dic という拡張子のファイルでつくるだけ
まずはログインして
cd dictation-kit-v4.3.1-linux/
で移動
次に
sudo vim rapiro.dic
で辞書ファイルを作成
内容は
<sil> silB <sil> silE <sp> sp ラピロ r a p i r o はっしん h a q sh i N こうたい k o u t a i バック b a q k u 右 m i g i 左 h i d a r i バンザイ b a N z a i たたかえ t a t a k a e
左に認識させたい言葉
右に対応するモーションをローマ字で入力
入力するときの注意点としては
ナ行とかぶらないために
んのときには
N を大文字にすること
そして
っ を入れるときには q をつかうこと
m i g i
というように途中にスペースをいれること
くっつけて
mi gi
とするとエラーになるので注意
あと最終行に改行をいれないこと
これで辞書ファイルはできたので
次にこの作成した辞書ファイルを Julius に組み込む設定を行う
設定ファイルは .conf が拡張子の設定ファイルを作成する
sudo vim rapiro.conf
でファイルを作成
内容は
-w rapiro.dic -v model/lang_m/bccwj.60k.htkdic -h model/phone_m/jnas-tri-3k16-gid.binhmm -hlist model/phone_m/logicalTri -n 5 -output 1 -input mic -input alsa -rejectshort 800 -lv 1500 -demo
これで設定ファイルができたので
julius -C rapiro.conf
を実行したらエラー
Stat: adin_alsa: device name from ALSADEV: "plughw:1,0" Error: adin_alsa: cannot open PCM device "plughw:1,0" (No such file or directory) failed to begin input stream
原因を考えたら
設定ファイルを書き換えたため
以前設定ファイルを変更したのが原因だった
vim ~/.profile
でファイルを開いて
#export ALSADEV=plughw:1,0
というように
最下行をコメントアウトする
設定反映のため
sudo reboot
で再起動
これで再度
julius -C rapiro.conf
を実行すると
pass1_best: はっしん sentence1: はっしん pass1_best: はっしん sentence1: はっしん pass1_best: はっしん sentence1: はっしん pass1_best: 右<input rejected by short input> pass1_best: 左 sentence1: 左 pass1_best: 右 sentence1: 右 pass1_best: 左<input rejected by short input> pass1_best: バック<input rejected by short input> pass1_best: ラピロ<input rejected by short input> pass1_best: 右<input rejected by short input>
というように指定した言語のみ反映されるようになる
ちなみに、途中で上とか下とか音声入力したけど
右とか左として認識された
終了は ctrl + c で終了
これで音声辞書作成と起動検証はできたので
次回は Julius のモジュールモードの起動
Rapiro の音声操作その2
なんとかマイクで録音したものを再生することができたので続き
デフォルトが raspberryPI そのものだと
後々面倒なので、
USBのものを標準になるように設定ファイルを編集
ちなみに現在の優先順位を表示するなら
cat /proc/asound/modules
この結果が
0 snd_bcm2835 1 snd_usb_audio
0がデフォルト設定扱いなので
USBのほうがデフォルトになるように設定する
sudo vim /etc/modprobe.d/alsa-base.conf
で編集
編集するときに
:set number
を使うと編集するときに便利
編集する場所は
17行めの
options snd-usb-audio index=-2
の部分
これを
options snd-usb-audio index=0
にして保存
設定反映のため再起動
sudo reboot
再度ログインして
cat /proc/asound/modules
を実行
0 snd_usb_audio 1 snd_bcm2835
というように
USBのほうが0に表示されていれば成功
次に音声認識エンジンの Julius
のインストール
もっと新しいバージョンがあるかもしれないけど
基本的に同じものが手に入るのなら
それを試したほうが無難
なぜなら、バージョンアップしたものを使うと
変更に対処しないとならなくなり
それができないと起動すらしないという結果になるため
ということで
4.3.1を使用
wget http://jaist.dl.sourceforge.jp/julius/60273/julius-4.3.1.tar.gz wget http://jaist.dl.sourceforge.jp/julius/60416/dictation-kit-v4.3.1-linux.tgz
でファイルを取得
次に、インストールに必要になるパッケージをインストール
sudo apt-get install libasound2-dev libesd0-dev libsndfile1-dev
必要なものがそろったので
julius のインストール
tar zxvf julius-4.3.1.tar.gz
で解凍
コンパイルとインストールだけど時間がかかる
私の環境では10分以上かかった
cd julius-4.3.1/ ./configure -with-mictype=alsa make sudo make install
次に
ディクテーションキットの準備
ディクテーションキットは
聞き取った言葉をテキストにする部分のこと
これには日本語の音響モデルと言語モデルが含まれるので
これを追加する
まず圧縮ファイルを解凍し、移動する
tar zxvf dictation-kit-v4.3.1-linux.tgz cd dictation-kit-v4.3.1-linux/
次に Julius は使用するオーディオデバイスの指定が必要なため
export で指定する
export ALSADEV=plughw:0,0
次に julius の起動
julius -C main.jconf -C am-gmm.jconf -demo
これを実行すると
----------------------- System Information end ----------------------- Notice for feature extraction (01), ************************************************************* * Cepstral mean normalization for real-time decoding: * * NOTICE: The first input may not be recognized, since * * no initial mean is available on startup. * ************************************************************* Stat: adin_alsa: device name from ALSADEV: "plughw:0,0" Stat: capture audio at 16000Hz Stat: adin_alsa: latency set to 32 msec (chunk = 512 bytes) Stat: "plughw:0,0": Device [USB PnP Sound Device] device USB Audio [USB Audio] subdevice #0 STAT: AD-in thread created <<< please speak >>>
という画面がでてくるので
この状態になったら
マイクで喋るとその音声をテキスト表示してくれる
しかしあまり正確ではないので
早口で喋ったりすると誤変換される
今回の結果だと
STAT: AD-in thread created pass1_best: わい て き sentence1: 満鉄 。 <input rejected by short input> pass1_best: もう 著 、 sentence1: もう ちょっと 。 pass1_best: そう<input rejected by short input> pass1_best: ちょっと 、 sentence1: ちょっと 。 pass1_best: いや 場合 sentence1: いや 場合 。 pass1_best: 微妙 。 sentence1: 微妙 。 pass1_best: こんにちは 。 sentence1: こんにちは 。 pass1_best: 全身<input rejected by short input> pass1_best: 知事 が 、 sentence1: 血 じゃ ない 。 <<< please speak >>>
というように
変な言葉になってしまった
中断するには ctrl + c で終了できる
なお、このままだとログインするたびに
export コマンドが必要なので
面倒なら
vim .profile
でファイルを開き
最終行に
export ALSADEV=plughw:1,0
を追加
設定を反映するために
source .profile
を実行
これで
printenv | grep ALSA
で結果が
ALSADEV=plughw:1,0
となっていればOK
続きは次回
rapiro の音声制御その1
使用するのは RaspberryPi type
type B+ だと Rapiro をちょっと改造する必要があるので
面倒なら type B のほうがおすすめ
なお、Rapiro の頭部に入れるので、ケースは不要
そして Rapiro
Rapiro に関しては電池よりもACアダプタを使ったほうが楽
これはスイッチサイエンスで購入可能
ACアダプター 6V/3.8A(ACコード付)
まず
USBオーディオデバイスの音響4
を差し込む
これを使い、マイク入力ができるようにする
マイクについてはiBuffalo のマイクを利用
差し込んだら
lsusb コマンドで利用可能なのかを確認
lsusbの実行結果は
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller Bus 001 Device 005: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
結果の中の
Bus 001 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
がUSBオーディオ
そして
Bus 001 Device 005: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
が無線LANのアダプター
次にオーディオデバイスの認識を調べたいので
arecord -l
を実行
結果は
**** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
で認識もOK
なお、録音にはデバイスを指定する必要があるので
これをやらないと後で困りそう
次に録音
これは arecord コマンドを使う
実行するときに
hw:1,0
をつけるとうまくいかないみたいなので
arecord -D plughw:1,0 -f S16_LE -r 16000 test.wav
を実行
すると録音が開始される
なお録音の中止は
ctrl + c
で修了
とりあえずテストなので
石焼き芋うま
というかんじで適当でOK
これを再生する
aplay test.wav
しかし、機械のような音しか聞こえないので
音量の調整をすることに
まずはオーディオデバイスの有線順位を確認
cat /proc/asound/modules
実行結果は
0 snd_bcm2835 1 snd_usb_audio
なので、これを元に調整
amixer コマンドで
-c オプションサウンドカードの番号が必要なので
今回調べた番号を使う
amixer -c 1 sset 'Mic'10%
これで再度録音
結局のところ、イヤホンがうまくはまっていなかっただけみたいだった
あと、デフォルトだとUSBではなく
Raspberry PI 本体のステレオミニジャックになるので
USBで再生するのなら
aplay -D plughw:1,0 test.wav
となる
次回、音の標準出力先を変更予定
Rapiro を raspberry Pi から操作
まず raspberryPi に ssh でログイン
次に
sudo apt-get install cu
で
cu
をインストール
cu -s 57600 -l /dev/ttyAMA0
で
cu コマンドでb Ardunio へ接続
あとは
#M0 停止
#M1 前進
#M2 後退
#M3 右に曲がる
#M4 左に曲がる
#M5 両手を振る
#M6 右手を振る
#M7 両手を握る
#M8 左手を振る
#M9 右手を伸ばす
を実行することで操作することができます
この操作モードからは
Enter
~
.
と順番に押すことででれますが
RaspberryPi からもログアウトしてしまいます
ちなみに、 ardunio で操作するときには
管理者権限で起動しないと
シリアルポートの変更ができないので注意が必要です
なお検索して参考にさせていただいた
http://onoono-life.blogspot.jp/2014/03/rapiro.html
にあった
/boot/cmdline.txt の編集は行わずに実行することができました
おそらく、他のパッケージなどでシリアルポートを使えるようにしたのが理由と思われます
Rapiro でライブ映像の配信
を参考に実践
今後、いろいろな機能をつけたときに使えそうな予感
Ustream みたいに世界中に配信するのではなく
ローカルで使う予定なので
これは使えそう
この機能に必要なのが
MPEG-streamer
sudo apt-get install subversion libjpeg-dev imagemagick
でバージョン管理ソフト subversion を入れている
次に subversion を使い
MPEG-streamer を取得
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
そして make でコンパイルして
make install でインストールする
cd mjpg-streamer make sudo make install
これでインストール完了
これからやるほうほうだと
定期的に撮影した写真を連続で送りつづける
というものになるらしい
なので、これに使う一時保存フォルダを作成
mkdir /tmp/stream
次に raspstill で定期的に写真を撮影し
mjpg-stream で配信開始となる
次にスクリプトで配信開始する
vim stream_start.sh
でファイルを作り
#!/bin/sh raspistill -w 640 -h 480 -rot 180 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 & export LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream" -o "output_http.so -w /usr/local/www -p 8080" &
が内容になる
raspistill -w 640 -h 480 -rot 180 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &
で写真撮影
-rot 180
で写真を反対にして rapiro に合わせている
これをやらないと逆さになる
-q 5
でpjeg のクオリティを0~100のうち
5にしてファイルを軽くしている
-o /tmp/stream/pic.jpg
はファイルの出力先
-tl 100
で撮影間隔を指定
これはミリ秒
つまり 100 ミリ秒間隔で撮影
これだとフレームレートが 10fps になる
-t 9999999
は撮影時間の指定
これはそこまで撮影しなくて途中で修了してもOK
最大時間と考えるといいかも
-th 0:0:0
はサムネイルに燗する設定だけど
今回はなしでやるので 0:0:0
&をつけるのは linux おなじみのバックグランド動作
2行めの
export LD_LIBRARY_PATH=/usr/local/lib
はライブラリのパスの指定
これが MJPG-streamer の共有ライブラリへの参照設定
これをしないと mjpg_streamer が使えない
そして
mjpg_streamer -i "input_file.so -f /tmp/stream" -o "output_http.so -w /usr/local/www -p 8080" &
が実際に配信開始するところ
-i “input_file.so -f /tmp/stream”
が
/tmp/stream
の中の画像が更新されるたびに配信する仕組み
らしい
-o “output_http.so -w /usr/local/www -p 8080”
は配信の出力先
今回なら webサーバーのIPアドレスになる
そして
-p 8080
なので
8080ポートを使う
次に停止するスクリプトも作っておく
vim stream_stop.sh
これは killall コマンドで動作を停止する
を参考にするとわかりやすい
今回、バックグランドで動いている
撮影のための raspistill
配信のための mjpg_streamer
を停止したいので
killall raspistill killall mjpg_streamer
となる
これでみれるかをテストするので
まずはスクリプトに実行権限を付与する
chmod 755 stream_start.sh chmod 755 stream_stop.sh
これで
./stream_start.sh
で実行
そして
サーバーIP:8080
でアクセスするとカメラ画像をみることができます
Stream のところで動画をみることができます
ただし、負荷がかかり過ぎるとダウンします
電源が落とした場合
/tmp 以下が消えていたので
再度
mkdir /tmp/stream
で一時保存ディレクトリを作成
これをやらないとエラー
なお、この状態だと
誰でも見れるという状態なので
パスワードつきで配信をするのなら
オプションを追加して
-c ユーザ名:パスワード
とします
もし
ユーザ名 pi
パスワード raspberry
とするなら
export LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream" -o "output_http.so -w /usr/local/www -p 8080 -c pi:raspberry"&
というようにすれば
パスワードつきで配信可能になります
もし今後公開するなどしてメンテする必要があるのなら
変数にするとより使いやすくなります
例えば
ポート
ユーザ名
パスワードを変数にすると
#!/bin/sh PORT="8080" ID="pi" PW="raspberry" raspistill -w 640 -h 480 -rot 180 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 & export LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream" -o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW"&
というようにしても同じように動きます
なお、Ustream などのネットへ公開するには
mmfpeg を使用
インストール方法は
sudo apt-get install ffmpeg
個人的には Ustream の無料枠だと制限がつくので
Linux でストリーミングサーバーを構築してみようと思います
rapiro へサーバ機能を加える
を参考に実践
とりあえず bluetooth 関連は予算越えるため
機会をみて今後行うことに
まず RaspberryPi を載せたRapiro を起動する
次に ssh でログイン
今回は無線LAN経由でログイン
ssh pi@192.168.10.132
次に
RaspberryPI で Samba を設置して
GUIでファイルのやりとりをできるようにする
sudo apt-get -y install samba sudo apt-get -y install samba-common-bin
ファイルを編集する前にバックアップ作製
cd /etc/samba/ sudo cp smb.conf smb.conf_bak
そしてファイル編集
sudo vim /etc/samba/smb.conf
でファイルを開いて
shift + g で最終行へ移動
[pi] comment = pi's home path = home/pi public = Yes read only = No writable = Yes quest ok = Yes force user = pi directory mode = 0777 create mode = 0666
を追記
sudo smbpasswd -a pi
でパスワードを設定
一度入力すると確認のため
Retype new SMB password:
となり、もう一回入力する
あとは samba を再起動して設定を反映する
sudo service samba restart
これでファイルのやりとりが楽になるはず
次に カメラ関連
まず写真保存用のディレクトリを作製
mkdir Photo
次に
raspistill -w 640 -h 480 -rot 180 -o Photo/image.jpg -n -t 10
で撮影テスト
エラーがでなければ撮影成功
-w 640 -h 480
は幅と高さの設定
これをやらないと
2592×1944
という巨大サイズになる
-rot 180
は画面を180度回転
理由は rapiro に設置するときに反対に設置するから
-o Photo/image.jpg
は出力するファイルパス
-n はプレビューなし
-t 10
で待ち時間
これはミリ秒で設定なので
10ミリ秒したら撮影
これで撮影した画像をみるには
samba からアクセスするか
SFTPでダウンロードしてみることができる
でもDLNAサーバーを入れれば
スマホやタブレットアプリで見れる
まずはc DLNAサーバインストール
sudo apt-get install minidlna
次にフォルダ設定
編集する前に
cd /etc/ sudo cp minidlna.conf minidlna.conf_bak cd -
でバックアップしておく
sudo vim /etc/minidlna.conf
で設定ファイルを編集
26行めの
media_dir=/var/lib/minidlna
をコメントアウトして
#media_dir=/var/lib/minidlna media_dir=V, /home/pi/Video media_dir=A, /home/pi/Music media_dir=P, /home/pi/Photo
と変えて保存
次に
それぞれ対応するディレクトリを作製しておく
mkdir Music mkdir Video
設定が終わったので
sudo /etc/init.d/minidlna start
で MiniDLNAサーバーを起動する
また、毎回起動は面倒なので
sudo update-rc.d minidlna defaults
でDLNAサーバーを自動起動するようにしておく
これは centos とかの chkconfig 設定と似ている
次にお手軽に見れるように
Nexus7 には
MediaHouseのUPnP / DLNA対応ブラウザ
ipod touch には
media:connect
をインストール
しかし、なぜかどちらも撮影した画像が表示されない
設定ファイルを書き換えているので
設定ファイルの読み込みを実行
sudo /etc/init.d/minidlna force-reload sudo /etc/init.d/minidlna restart
その後、表示されたので
もしかしたら DLNAに反映されるまで時間がかかるのかもしれない
このあたりを調べてみたら
どうやら自動更新されないときがあるらしく
この場合、手動で更新するか
自動更新するように設定が必要
sudo vim /etc/minidlna.conf
で設定ファイルを編集する
79行めの
#inotify=yes
を
inotify=yes
へ変更
94行めの
#notify_interval=895
を
notify_interval=895
に変更して保存
設定ファイルを書き換えているので
設定ファイルの読み込みを実行
sudo /etc/init.d/minidlna force-reload
これで自動更新されるようになる
次に動画を撮影
raspivid -w 640 -h 480 -rot 180 -o Video/sample_movie.h264 -n -t 10000
でも.h264のファイルは発見してくれない
ということなので mp4 へ変換する
sudo apt-get update sudo apt-get install gpac
これで必要なソフトが入ったので
MP4Box -add Video/sample_movie.h264 Video/sample_movie.mp4
で変換
しかし、なぜか今度は サーバーが発見できないので
sudo /etc/init.d/minidlna restart
で再起動
すると変換した動画をみることができた
CentOS 6.4 64bit へ Go 言語 インストール
http://golang.org/
が公式サイト
vagrantのCentOS 7 で動かすのなら
インストールは
sudo yum install golang
でできるらしいが
現在、vagrant で構築してあるのは
cat /etc/issue
で確認したら
CentOS release 6.4 (Final)
だった
以前いれて使ってなかったため
32bit か 64bit かを忘れていたため
uname -a
で確認した結果
Linux localhost.localdomain 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
となり、64bit であることが確認できた
これを元に
Installing Go Lang 1.1 on centos 6.4 *64-bit
を見ながらインストール
しかし、 yum で golang をインストールしようとしても
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp Setting up Install Process No package golang available. Error: Nothing to do
となるため
を参考にソースからインストール
wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
で
ファイルを取得
次に
sudo tar -C /usr/local/ -xzf go1.4.1.linux-amd64.tar.gz
で
/sur/local へ展開
あとは .bashrc へパスを設定
vim .bashrc
そして一番下へ
export PATH=$PATH:/usr/local/go/bin/
を追記して保存
設定反映のため
source .bashrc
これで
go version
とすれば
go version go1.4.1 linux/amd64
と表示される
あとはドットインストールみながら学習予定