Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

しかたないので、AACを別録音する-その3

 いや~、朝晩だんだん寒くなってきて、布団からなかなか出られなくなってきました。にゃんこ達はあさごはんが遅くなってしまい、死にそうな声でせがんだりしてます(笑)。

 


 

(2009/10/29 追記) スクリプトはちょっとバグってたので修正しました。

それはともかく、arecord直では自動運転するのにすこし不便なので、一枚皮をかぶせるためにrubyでスクリプトをさくっと書いてみました。

 

ruby arecord_suga.rb [-D デバイス名] [-F 保存フォルダ] [-s] ファイル名
-s は録音ストップの指定

みたいに使います。
ソースはこんな感じ


#!/usr/bin/ruby -wKu
# (c) 2009 BO
# usage
#   arecord-sugar [-D device] [-F FolderToSave] [filename]
#   arecord-sugar -s
# History
#  2009/10/29
#    fix
#      (1) way to identify PID of the running arecord
#      (2) snding kill SIGTERM to arecord correctly
#
#tested on
#   ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
require 'optparse'
opt = OptionParser.new

Config = Hash.new
#default config
Config[:folder] = '.'
Config[:stop] = false
Config[:device] = 'hw:1,0'

opt.on('-F FOLDER', '--folder=FOLDER') {|v| Config[:folder] = v.to_s  }
opt.on('-D DEVICE', '--device=DEVICE') {|v| Config[:device] = v.to_s  }
opt.on('-s', '--stop') {|v| Config[:stop] = true }
opt.parse!(ARGV)

previous_run = `ps -C arecord h`
reg = / *(\d*).*arecord .*-D +#{Config[:device]}/m

# if previus one exists, kill it
if reg =~ previous_run
    p $1
    `kill #{$1}`
end

#check if STOP mode
if Config[:stop]
    exit( 0 )
end

if ARGV[0]
    basename = ARGV[0]
else
    basename = Time.now.strftime('%Y_%m_%d__%H_%M_%S')
end

filename= "#{Config[:folder]}/#{basename}.wav"
num=0
while( File.exist?( filename ) )
    num = num +1
    filename= "#{Config[:folder]}/#{basename}_#{num}.wav"
end

cmd = "arecord -t wav -f dat -D #{Config[:device]} #{filename} & "
system( cmd )



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/724-44d4f661
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。