サウンド録音(ALSA0.9.0)


以下は、ALSAドライバのVer0.9.0の場合の説明です。Ver0.5.9の場合はこちらです。

サウンド録音について

  • サウンドカードの「LineIn」から入力したサウンドをWAV形式で録音(キャプチャ)します。例えば、ラジオ番組の録音に利用できます。

サウンド録音に必要なソフトのインストール

  • ALSAサウンドドライバに含まれるALSAユーティリティ付属の録音ツール(amixer,arecord)を使用します。このツールはコマンドラインから使用するもので、最終的には自動録音のスクリプトから利用します。
  • ALSAサウンドドライバのインストールは下記を参照して下さい。

    ALSAサウンドドライバ(Ver0.9.0)


録音レベルの調整

  1. ここでは、ラジオ番組を録音する場合を想定します。まず、ラジオのイヤホン端子とサウンドカードの「LineIn」端子をケーブルで接続します。ラジオのボリュームは通常聞いているレベルにしておきます。

  2. ALSAユーティリティ付属のミキサーコマンド(amixer)を使用して音量レベル等の設定をします。この時ラジオからの音声がそのままスピーカから流れてくるので、適当なレベルになる様に、ライン入力レベル(Line)とスピーカ出力レベル(Master)を設定します。

    $ amixer set Line 50% unmute cap <-ライン入力レベル設定。キャプチャ設定。
    Simple mixer control 'Line',0
      Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-joined cswitch-exclusive
      Capture exclusive group: 0
      Playback channels: Front Left - Front Right 
      Capture channels: Front Left - Front Right 
      Limits: Playback 0 - 31 
      Front Left: Playback 16 [52%] [on] Capture [on] 
      Front Right: Playback 16 [52%] [on] Capture [on] 
    
    $ amixer set Master 100% unmute <-スピーカ出力レベル設定。
    Simple mixer control 'Master',0
      Capabilities: pvolume pswitch pswitch-joined
      Playback channels: Front Left - Front Right 
      Limits: Playback 0 - 31 
      Front Left: Playback 31 [100%] [on] 
      Front Right: Playback 31 [100%] [on] 
    
    $ amixer set Capture 80% unmute <-録音レベル設定。
    Simple mixer control 'Capture',0
      Capabilities: cvolume cswitch cswitch-joined
      Capture channels: Front Left - Front Right 
      Limits: Capture 0 - 15
      Front Left: Capture 12 [80%] [on] 
      Front Right: Capture 12 [80%] [on] 
    
    $ amixer set PCM 100% unmute <-PCM出力レベル設定。
    Simple mixer control 'PCM',0
      Capabilities: pvolume pswitch pswitch-joined
      Playback channels: Front Left - Front Right 
      Limits: Playback 0 - 31 
      Front Left: Playback 31 [100%] [on] 
      Front Right: Playback 31 [100%] [on] 
    

  3. arecordコマンドで録音します。例えば5秒間だけ、「test.wav」ファイルとして録音する場合は以下の様になります。デフォルトでは、Unsigned 8 bit、サンプリング周波数は8000Hzになっています。

    $ arecord -t wav -d 5 test.wav
    Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
    

    ALSAのVer0.5.9の場合と同様に、Signed 16 bit Little Endian、サンプリング周波数44.1KHzで録音する場合は以下の様になります。

    $ arecord -t wav -d 5 -r 44100 -f S16_LE test.wav
    Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    

    arecordの各種パラメータは、ヘルプで確認できます。

    $ arecord --help
    Usage: arecord [OPTION]... [FILE]...
    
    --help                  help
    --version               print current version
    -l, --list-devices      list all soundcards and digital audio devices
    -L, --list-pcms         list all PCMs defined
    -D, --device=NAME       select PCM by name
    -q, --quiet             quiet mode
    -t, --file-type TYPE    file type (voc, wav, raw or au)
    -c, --channels=#        channels
    -f, --format=FORMAT     sample format (case insensitive)
    -r, --rate=#            sample rate
    -d, --duration=#        interrupt after # seconds
    -s, --sleep-min=#       min ticks to sleep
    -M, --mmap              mmap stream
    -N, --nonblock          nonblocking mode
    -F, --period-time=#     distance between interrupts is # microseconds
    -B, --buffer-time=#     buffer duration is # microseconds
    -A, --avail-min=#       min available space for wakeup is # microseconds
    -R, --start-delay=#     delay for automatic PCM start is # microseconds 
                            (relative to buffer size if <= 0)
    -T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xru
    -v, --verbose           show PCM structure and setup (accumulative)
    -I, --separate-channels one file for each channel
    Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE
     24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_B
     IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL
     24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE
     18_3LE
    Some of these may not be available on selected hardware
    The availabled format shortcuts are:
    -f cd (16 bit little endian, 44100, stereo)
    -f dat (16 bit little endian, 48000, stereo)
    

  4. 次に、今録音した「test.wav」ファイルをaplayコマンドで再生してみます。この時スピーカから再生される音声レベルが、2項で確認したラジオからの生の入力レベルと同程度になる様にします。レベルに差がある場合は、2項の録音レベル(Capture)の設定を変えて、3項から繰り返します。

    $ aplay test.wav
    Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    

録音レベル設定の自動化

  • 「録音レベルの調整」の項で確認した設定が、マシン起動時に自動設定される様にします。
  • 「/etc/rc.d/rc.local」に下記を追加します。PCMの出力レベルも合わせて設定しました。

    /sbin/modprobe snd-card-0
    /usr/bin/amixer -c 0 set Line 80% unmute cap
    /usr/bin/amixer -c 0 set Master 100% unmute
    /usr/bin/amixer -c 0 set Capture 80% unmute
    /usr/bin/amixer -c 0 set PCM 100% unmute
    


トップへもどる


Copyright (c) 2002 Hiroshi Nakamura. All rights reserved.