Digi Fi No.15付属のDDCを使ってカセットテープをデジタル化する。
といっても、中断していたのを再開するだけ。
■録音
中断前にデジタル化していたファイルは
mobile@mobile-ThinkPad-X201s:~$ ffmpeg -i /media/mobile/FAT32/Sound/Tape/xxx.wav・・・とサンプリング周波数が48kHz、量子化ビットが24bit でキャプチャーできているが、今日はうまくいかない。最初からおさらいする。
Input #0, wav, from '/media/mobile/FAT32/Sound/Tape/xxx.wav':
Metadata:
title : SL
album : SL
artist : ''Y
genre : JPop
Duration: 00:05:28.89, bitrate: 2304 kb/s
Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s
mobile@mobile-ThinkPad-X201s:~$ cat /proc/asound/Olasonic/stream0録音は arecord コマンドでやってみる(が今のところ、フォーマットの指定 -f S24_3LE あたりでうまくいかない)
TOWA Electronics Olasonic at usb-0000:00:1a.0-1.2, full speed : USB Audio
Playback:
Status: Stop
Interface 3
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 96000, 88200, 48000, 44100
Interface 3
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 96000, 88200, 48000, 44100
Capture:
Status: Running
Interface = 2
Altset = 1
Packet Size = 243
Momentary freq = 48000 Hz (0x30.0000)
Interface 2
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 2 IN (ADAPTIVE)
Rates: 96000, 48000
Interface 2
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 2 IN (ADAPTIVE)
Rates: 96000, 48000
まずは、録音デバイスの認識
mobile@mobile-ThinkPad-X201s:~$ arecord -lとなっているので、このDDCを -D オプションで
**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: MID [HDA Intel MID], デバイス 0: CX20585 Analog [CX20585 Analog]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
カード 1: Olasonic [Olasonic], デバイス 0: USB Audio [USB Audio]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
arecord -c 2 -f S24_3LE -r 48000 -D hw:1,0 StardustRevue.wavのように指定する。
Ubuntuのサウンドの設定で、「入力」ー「サウンドの入力元」にてこのDDCをデフォルトに選択していれば -D オプション は不要。
■サンプリングデータの正規化
サンプリングしたばかりのデータは正規化が必要なものもある。
こちらのサイトを参考にさせていただいた。
http://nico-lab.net/normalize_audio_with_ffmpeg/
以下、シェルスクリプトにしているが ffmpeg の volumedetect というフィルター?で
ffmpeg -i $1 -af volumedetect -f null /dev/nullを実行すると、あるデータでは
・・・max_volume の -1.0db 分が正規化の余地あり。(と思う)
[Parsed_volumedetect_0 @ 0x148bea0] n_samples: 31573194
[Parsed_volumedetect_0 @ 0x148bea0] mean_volume: -18.4 dB
[Parsed_volumedetect_0 @ 0x148bea0] max_volume: -1.0 dB
[Parsed_volumedetect_0 @ 0x148bea0] histogram_1db: 835
[Parsed_volumedetect_0 @ 0x148bea0] histogram_2db: 4076
[Parsed_volumedetect_0 @ 0x148bea0] histogram_3db: 12005
[Parsed_volumedetect_0 @ 0x148bea0] histogram_4db: 27239
そこで、ffmpegの -af "volume=1.0dB" オプションを使う。
ffmpeg -i xxx.wav -af "volume=1.0dB" xxx-2.wavで、volumedetectすると max_volume とともに mean_volume も 1.0dB 大きくなった。
[Parsed_volumedetect_0 @ 0x148dbc0] n_samples: 31573194ただし、なぜか24bitが16bitになったようで、ファイルサイズも約2/3になっていた。
[Parsed_volumedetect_0 @ 0x148dbc0] mean_volume: -17.4 dB
[Parsed_volumedetect_0 @ 0x148dbc0] max_volume: -0.0 dB
[Parsed_volumedetect_0 @ 0x148dbc0] histogram_0db: 835
[Parsed_volumedetect_0 @ 0x148dbc0] histogram_1db: 4076
[Parsed_volumedetect_0 @ 0x148dbc0] histogram_2db: 12008
[Parsed_volumedetect_0 @ 0x148dbc0] histogram_3db: 27231
これでは折角24bitでサンプリングしたのが無駄になってしまう。
ffmpegでうまく処理できないか試したが
ffmpeg -i xxx.wav -af "format=S24LE|volume=1.0dB" xxx-2.wavのように24bitの指定をしつつボリュームをあげようとするとエラーになる。
結局、正規化にはAudacityを使った。
- メニューの「エフェクト」-「正規化」から最大振幅を0dbに
- メニューの「ファイル」-「オーディオの書き出し」から、「その他の非圧縮ファイル」をとし、「オプション」から「ヘッダ」を「WAV(Microsoft)」、「エンコーディング」を「Signed 24bit PCM」
今後、ffmpegでできないか調査する。