LoginSignup
8
9

More than 5 years have passed since last update.

Edisonで音声を扱うためにsoxをインストールする

Last updated at Posted at 2016-05-23

EdisonにUSBオーディオを接続するとALSA経由でアクセスすることが出来る。最初からarecordaplayコマンドは使えるが、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を乗っけて音声認識とか、コスプレ用ガジェット(音も出る!!)とかやって行きたい。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9