AquesTalk Pi の使い方まとめ
に倣いAquesTalk Pi を「個人的」に使ってみます。
http://www.a-quest.com/products/aquestalkpi.html
からダウンロードします。
Raspberry Piのブラウザ Midoriを使いました。
/home/piに
aquestalkpi-20130827.tar.gz
がダウンロードされるので展開します。
$tar xzvf aquestalkpi-20130827.tar.gz
/home/piの中にaquestalkpiといディレクトリが作成されるのでそこに移動します。
しゃべらせてみます。
$./AquesTalkPi"おはよう。"|aplay
声を声種f2にするには(デフォルトはf1)
$./AquesTalkPi-vf2"こんにちは。"|aplay
にします。
AquesTalk Piを入れるといままで使えていたOpenJTalkが使えなくなってしまいました。
aquestalkpiのディレクトリを削除してもだめだったので
OpenJTalkを再インストールしました。
共存できないようです。
AquesTalk Piはインストールも簡単でとても扱いやすくてすばらしいのですが、
大学などで公式に使用するにはライセンスが必要なので
とりあえず、現在はマグボットでは使用しません。
非商用、個人でマグボッットで使用するのには問題ないと思います。
ライセンスについては
AquesTalk Pi の使い方まとめ
AquesTalk Piの詳しい使用方法については
AquesTalk Pi
をご覧下さい。
Rubyで作ったWebSocketサーバを自動起動してみます。
で
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname-I)||true
if["$_IP"];then
printf"My IP address is %s\n""$_IP"
fi
exit0
の
の前に
ruby/home/pi/mubogt_server_v1_0_0.rb&
と書く。
mubogt_server_v1_0_0.rbはWebSocketサーバのファイル名
最初にruby、最後に&をつける。これがミソ。
バックグラウンドで実行します。
これをつけないとフォラグラウンドで実行されて、いつまでたっても解放されず
コマンド受付状態にならない。
&をつけないと、
先に行けずに止まってしまうでしょう。
mubogt_server_v1_0_0.rbに実行権を付与。(これが必要かどうかわからない)
chmod+x/home/pi/mubogt_server_v1_0_0.rb
自動起動後に
でこのプロセスが走っているか確認できます。
しかし、この方法ではシステム起動時に「一度だけ」起動するので、途中で何かの原因でプロセスが止まるとそれきりになります。
止まってもなんどでも起動するのではればデーモン化が必要です。
これは次のステップで。
起動時にスクリプトを実行する方法としていくつか方法があるが、ここでは比較的簡単にできるrc.localにスクリプトを書く方法を試してみる。
rc.localを編集
中身は以下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname-I)||true
if["$_IP"];then
printf"My IP address is %s\n""$_IP"
fi
exit0
例えば
mubogt_server_v1_0_0.rb
を
exit 0の前に
ruby/home/pi/mubogt_server_v1_0_0.rb
と書いて
再起動
する。
スクリプトは
シェルスクリプトでもRubyやPythonの起動スクリプトでもいい。
ハマったのはデフォルトでrc.local内のスクリプトが自動起動しなかったこと
sh/etc/rc.local/mubogt_server_v1_0_0.rb
とすれば動くのでスクリプトには問題ない。
仕方ないので実行権を付与してみる。
sudo chmod+x/etc/rc.local
これで動いた。
デフォルトで動かないのは、こう書いてあるので当然ですね。
# In order to enable or disable this script just change the execution
# bits.
rc.local内のスクリプト
_IP=$(hostname-I)||true
if["$_IP"];then
printf"My IP address is %s\n""$_IP"
fi
は、起動するとIPアドレスを表示してくれます。
以前にjsayという日本語音声プログラムを試してみたので
Raspberry Piで音声合成
これを
_IP=$(hostname-I)||true
if["$_IP"];then
printf"My IP address is %s\n""$_IP"
jsay"$_IP"
fi
と加えることで
起動時にIPアドレスをしゃべるようになりました。
参考
Raspberry PiをSHOUTcastクライアントにする
RUbyのファイルの1行名に
(シェバン)
があるが、それがあると
test.rbを実行するのにホームディレクトリ上で
でも起動するが、
だけで起動する。
ファイル名のtest.rbはtestでもいい。Linuxは拡張子で判断していない。
実際やってみると以下のことでハマった。
#!/usr/bin/ruby
puts"Ruby start"
をなぜか1行目は空白で、2行名から書いていたので、ファイルが実行できず。1行名から書く。
ruby test.rbは、実際はファイルの位置を明記して
として実行する。最初にrubyと書かなくていい。
もしくは、
で実行。
.はホームディレクトリをさす。
test.rbではなく、./test.rbと打たないといけないのは
ホームディレクトリにパスが通っていないから。
本当はtest.rbと打ちたいですが
ホームディレクトリにパスを通すと危険だそうです。
参考
カレントディレクトリのプログラムを実行するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/040execcaprog.html
変数pathにカレントディレクトリを含める方法(あまりよくない)
http://www.not-enough.org/abe/manual/comm/command-path.html
Raspberry PiにUSBスピーカーをつなげても鳴らない。
alsamixer でF6を押してUSBスピーカーを選択してもUSBスピーカーに切り替わらない。
sudo amixer cset numid=3 1 にはUSBスピーカーの項目はない。
USBスピーカーは サンワサプライ MM-SPS2UWH
http://www.sanwa.co.jp/product/syohin.asp?code=MM-SPS2UWH&cate=1
USBハブ経由でつなげました。
http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/RaspberryPi/%C6%FC%CB%DC%B8%EC%B2%BB%C0%BC%C7%A7%BC%B1/
に習って
USBスピーカーの優先順位を上げる。
sudo nano/etc/modprobe.d/alsa-base.conf
options snd-usb-audio index=-2
を
options snd-usb-audio index=0
にする。
保存してリブート
優先度を確認
0snd_usb_audio
1snd_bcm2835
となっていれば成功。
USBスピーカーから音がでました!
追伸
せっかくUSBスピーカーにしたのに音質が悪いです。他に問題があるのかもしれません。