EdisonにUSBオーディオを接続するとALSA経由でアクセスすることが出来る。最初からarecord
やaplay
コマンドは使えるが、soxをインストールすれば
- 『一定音量が来たら録音』
- 『決めた時間再生』
- トリミング・混合
- X倍速再生
などの細かいコントロールができる。
soxについては以下を参照の事:
『今更聞けない目的別soxの使い方』
インストール
cd /usr/src
wget http://sourceforge.net/projects/sox/files/sox/14.4.1/sox-14.4.1.tar.gz
tar zxvf sox-14.4.1.tar.gz
cd sox-14.4.1
./configure
make all
make install
結構時間が掛かる。
ALSAデフォルトカードの設定
/etc/asound.conf
に以下を記載する。
pcm.!default {
type hw
card 2
}
ctl.!default {
type hw
card 2
}
リブートして以下の様なコマンドで音声が再生されるか確認する
sox test.wav -d
作例
また、Pythonを使ってスイッチを押すとメモが録音できる装置を作ってみた。
soundcut_text
import mraa
import time
import commands
sw = mraa.Gpio(32)
sw.dir(mraa.DIR_IN)
sw.mode(mraa.MODE_PULLUP)
state = 0
while True:
if sw.read() == 0:
commands.getoutput("sox gochuumonwodouzo_01.wav -d")
commands.getoutput("sox -c 1 -d voice.wav silence 1 00:00:00.05 -25d 1 00:00:01 -25d")
time.sleep(1)
commands.getoutput("sox voice.wav -d")
time.sleep(2)
commands.getoutput("sox gochuumonwaijou_01.wav -d")
time.sleep(0.2)
押しボタンが繋がっているGPIO(32)を監視して、もし押されたら音声再生。その後Voice.wavには録音したものが収められるのだが、-25dB以上の音が0.05秒来たら録音開始、逆に-25dB以下の入力が1秒以上続いたら録音終了というコードです。
最後に
かなりたくさんの機能があるsoxと、コンパクトで使いやすいEdisonを組み合わせると大変ユカイであることがわかった。特に録音。例えばJuliusを乗っけて音声認識とか、コスプレ用ガジェット(音も出る!!)とかやって行きたい。