YOU@Pohwa 2007年10月28日
WindowsPCでサウンドカード経由の録音を行うと、収録時間が伸び縮みする場合がある。各種録音経路および録音ソフトウェアで同一音源を録音したところ、MMEもしくはDirectSoundにサンプルレート変換を任せた場合にのみ大きなズレが見られた。サンプルレート変換を行わないか、信頼できるサンプルレート変換経路を確保することで問題を解消できると考えられる。
キーワード:録音、サンプルレート(サンプリングレート)、録音ソフトウェア、マルチトラックレコーディング、リサンプリング
WindowsPCを用いたデジタル録音において、録音ファイルに収録時間が生じる場合がある。これがどの部分で起きており、回避にはどのような手段が有効であるか明らかにしたい。
セレロン1.2GHzと512MBメモリを搭載したWindows2000にて、各種ソフトウェアでの録音結果を比較する。録音にはすべてCreative SB Audigy LS(ネイティブ動作は48000Hz)を用い、正確に10秒(480000サンプル)間隔で440Hzの正弦波(4800サンプル)を録音したWaveファイル(サンプルレート48000Hz、16bit、モノラル:Audacityで作成)を再生し、サウンドカードのミキサ(再生リダイレクト)から録音する。
録音結果は最初の正弦波が現れる時刻が録音開始10秒後になるようAudacityで切りそろえ、最初の正弦波(録音開始10秒後)から最後の正弦波(オリジナルファイルでは録音開始110秒後)までの時間を計算する。録音は各1回しか行っていない。
録音に用いたソフトウェアは、ぽけっとれこーだーバージョン2.10、HDRecoder v1.15 for Windows2000/XP、Reaper v0.999、Audacity v1.26である。録音元ファイルの再生にはSoundPlayer Lilith Ver.0.991を用いた。ASIO4ALLはv2.7で、設定はsimpleである。DirectXのバージョンは9.0c。
ぽけっとれこーだー(prec441.flac)
経路MME、サンプルレート44100Hz(最大設定)、16bit、ステレオ
原音10秒~110秒の間(100秒)が99.77秒になった。
HDRecoder(hdr48.flac)
経路DirectSound、サンプルレート48000Hz、16bit、ステレオ
原音10秒~110秒の間(100秒)が99.99996秒になった(ほぼ正確:40μ秒のズレ)。
HDRecoder(hdr441.flac)
経路DirectSound、サンプルレート41100Hz、16bit、ステレオ
原音10秒~110秒の間(100秒)が99.77秒になった。
Audacity(aud48.flac)
経路不明(おそらくMME)、サンプルレート48000Hz、32bit(float)録音16bit出力、モノラル、既に2トラックある状態で他のトラックをミュートして追加録音
原音10秒~110秒の間(100秒)が99.99999秒になった(ほぼ正確:10μ秒のズレ)。
Audacity(aud441.flac)
経路不明(おそらくMME)、サンプルレート41100Hz、32bit(float)録音16bit出力、モノラル、既に3トラックある状態で他のトラックをミュートして追加録音
原音10秒~110秒の間(100秒)が97.77秒になった。
Reaper(reaper48.flac)
経路ASIO4ALL、サンプルレート48000Hz、24bit録音16bit出力、モノラル
原音10秒~110秒の間(100秒)が100.00009秒になった(ほぼ正確:90μ秒のズレ)。
Reaper(reaper441.flac)
経路ASIO4ALL、サンプルレート41100Hz、24bit録音16bit出力、モノラル
原音10秒~110秒の間(100秒)が100.00002秒になった(ほぼ正確:20μ秒のズレ)。
Reaper(reaper48_441.flac)
経路ASIO4ALL、サンプルレート48000Hz録音41100Hz出力(高品質リサンプリング)、24bit録音16bit出力、モノラル
原音10秒~110秒の間(100秒)が100.00000秒になった(ほぼ正確:ズレの検出できず)。
Audacity(aud48_441.flac)
原音(サンプルレート48000Hz)を読み込んで41100Hzに変換
ほぼ正確でズレの検出できず
Audacity(aud48_wn.flac)
経路不明(おそらくMME)、サンプルレート48000Hz、32bit(float)録音16bit出力、モノラル、-48dbのホワイトノイズ4トラック(合計-36db)をAudacityで再生しながら録音
原音10秒~110秒の間(100秒)が約10.00009秒になった(ほぼ正確:90μ秒のズレ)。
上記とは別に、440Hzの正弦波30秒(440.flac)をAucacityにて48000Hzのサンプルレート(sine48.flac)と44100Hzのサンプルレート(sine441.flac)で録音し、スペアナ(サンプル数16384、Hanningウィンドウ)にかけたところ後者のみ周波数が1Hz上昇していた。
オーディオのプロパティから詳細ボタンで変更できるサンプルレート変換の質は「標準」にしても「最高」にしても結果が変わらない(「高」はテストしていない)。
48000Hz録音とASIO4ALL経由の録音において、100μ秒(0.01%)以上のズレが確認された例はなかった。ぽけっとれこーだー、HDRecoder、Audacityでの44100Hz録音時にはいづれも-0.27秒(-0.27%)程度のズレが出ている。48000Hz録音時に、経路による大きな差異は見られなかった。
ReaperおよびAudacityでのサンプルレート変換時に大きな録音時間のズレは生じておらず、Audacityで他のトラックを再生しながら録音した場合も同様である。
ぽけっとれこーだー、HDRecoder、Audacityで44100Hz録音した場合のズレがほぼ一様なため、大きなズレの原因はサウンドドライバにおけるサンプルレート変換ではないかと疑われる。ASIO4ALL経由では録音時のサンプルレートに関わらずほぼ正確な録音ができていることも、この推論を支持する。
MMEを経由するぽけっとれこーだーとDirectSoundを経由するHDRecoderによる44100Hz録音で同様の結果が出ていることから、MMEとDirectSoundが共通して利用するコンポーネント(カーネルミキサもしくはサウンドカードが提供するサウンドドライバ)が問題なのであろう。
録音後の周波数にも変化が見られたことから、収録時間のずれは結果的に早送り再生と同義になっていると思われる。
正確な録音を行うには、サウンドカードのネイティブなサンプルレートに合わせるか、信頼度の高いサンプルレート変換が行われるようにする必要があると考えられる。
上記録音結果をhttp://yppts.dip.jp:18080/music/rectest/にて公開している。
ファイル名は「lag.lzh」で、録音元のWaveファイルは「lag.flac」という名称になっている(ファイルサイズの都合で圧縮してある)。