Top
音楽再生ソフトによる音質劣化とビットパーフェクトについて
2013年 12月 23日 *
数日前、ローランドのUA-4FXのデジタル出力の音が劣化しているという記事を書いた。
ただその記事はあくまで感覚的なもので、もし間違っていたらどうしようと後になって少し気になっていた。
ので、誰が見ても客観的にわかるようにしようと考えた。

方法としては藤本健氏やありぱぱさんが書いているような、元ファイルと録音ファイルの差を比較することで実現できる。
ところが実際にやってみるとUA-4FXどころか他のオーディオインターフェースでもファイルが一致しなかった。
そうして色々試行錯誤の末、ようやくビットパーフェクトができるようになった。

実際やってみて思ったのは、ビットパーフェクトの文字で検索するとオーディオ関連のページが沢山ヒットするが、その環境を作るのに苦労する場合があるという事だ。
そのおかげで当初は、「本当にビットパーフェクトなど存在するのか?」と軽く疑心暗鬼になりかけた程である。
いくつかの項目について挙げてみよう。

■再生ソフトウェア
再生ソフトによって音に違いは生じるのか? という素朴な疑問に関して結論から先に言うと、ソフトの違いよりも再生モードの違いの方が大きい。
例えばネットで出回っている多くの音楽再生ソフトは一部を除きDirectSoundを使用したものだ。(WindowsMediaPlayer、GOMPlayer、等沢山。)
これらのソフトウェア中でも再生データに違いがあるのではないかと考えていたが、実際再生データを比較すると元データとの乖離幅はほとんど同じだった。
(DirectSoundの音質劣化に関して詳しく知りたい人は藤本健氏やありぱぱさんの記事を参考にして下さい。)
よって音楽再生ソフトがASIOやWASAPI排他モードに対応しているかが重要な要素となる。
更に言えば、ネットによくこのソフトをASIO対応する方法みたいのが載っているが、実際その通りにやってもASIOで再生されない場合があるので、再生モードには注意を払った方がいい。
(ほとんどの人がわざわざ検証したりしないと思うので…)

■録音ソフトウェア
録音ソフトによってもデータに違いが生じる。
言い換えると、オーディオインターフェース側でいくらビットパーフェクト対応していても、録音ソフトの違いによってビットパーフェクトにならない場合がある。
いくつか試してみた結果を書く。

・SoundEngine Free
 ビットパーフェクト不可だった。

・Sound Forge Pro 11
 ビットパーフェクト不可だった。
 というか、差分を抽出しても全然波形が消えない。
 ただしありぱぱ氏の記事によるとバージョン6でビットパーフェクトになるらしいので、このverもどこか設定を変えればいけるのかもしれない。

・Sound Forge Audio Studio 10
 こちらは「Sound Forge Pro 11」の廉価版に相当するソフトだが、ビットパーフェクト可能だった。

・Sonar8.5
 ビットパーフェクト不可だった。
 SoundEngine Freeもそうだったが、無音状態を録音したデータですら無音にならない。
 (DAWがそんなのでいいのかという疑問もあるが…)

・ACID Music Studio 9
 ビットパーフェクト可能だった。
 Sound Forgeと同じ会社が作っているのでいけるのではないかと試してみたが、ビットパーフェクトが実現できた。

■音楽ソース
適当に作った。
ただしありぱぱ氏の指摘にもあるように、冒頭に無音部分がないとWASAPI排他モードでうまく再生されないようで、録音データに差異が生じてしまうので注意。

■WAVE波形編集ソフトウェア
SoundEngine Freeで無音部分を追加したり削除したりできる。
ただし無音部分の削除パラメータは-96dbのように低くし過ぎてもうまくいかなかった。

■WAVE波形比較ソフトウェア
WaveCompareは「確かにビットパーフェクトになってるよね嬉しい」という喜びを実感するためのソフトであり、最初のうちはWAVEファイルの差分を抽出してどのくらいの違いがあるのか確認する作業がほとんどだった。
比較はSound Forgeで差分ファイルを作成し、SoundEngine Freeの解析タブでどの位乖離があるのか確認した。

■比較手順
1. waveファイルを用意する。
 ファイルは冒頭に無音部分がないと正しく比較が行えない。
 また、録音後の比較用にSoundEngine Freeで無音部分を削除したデータも保存しておく。

2.再生ソフトでwaveファイルをWASAPI排他モードで再生する。
 この時再生するのは、無音部分を削除したファイルではなく、冒頭に無音部分を含んたファイルの方だ。
 再生モードを切り替えて色々検証する場合は、AIMP3のようなソフトを使うのがいいと思う。

3.録音ソフトで録音する。

4.録音したWAVEファイルの無音部分をSoundEngine Freeで削除する。
 これにより、時間軸を合わせたファイル比較が可能になる。

5.手順1と手順4で保存したファイルを比較する。
 Sound Forgeで2つのWAVEファイルを開く。
 片方のWAVEファイルを「プロセス」→「反転/フリップ」で位相を反転する。
 片方のWAVEファイルを全選択し、コピーする。
 それを「編集」→「特殊貼り付け」→「ミックス」でもう一方のWAVEファイルに貼り付ける。
 すると2つのWAVE波形が打ち消される。
 このデータを名前を付けて保存する。

6.手順5で作成したデータをSoundEngine Freeで開き、解析タブを参照するとビットパーフェクトが達成できているかどうかがわかる。
 WAVE波形が全くの無音(ビットパーフェクト)であれば解析タブが以下のようになる。
 また、ビットパーフェクトにならなかった場合に目指すべきデータもこれになる。

------------------------------------------------------------
最大音量: -Inf dB ( 1: -Inf dB, 2: -Inf dB )
平均音量: -Inf dB ( 1: -Inf dB, 2: -Inf dB )
オートマキシマイズ平均音量: -Inf dB
DCオフセット: 0.000000 ( 1: 0.000000, 2: 0.000000 )
サラウンド(位相): -Inf dB
歪み率: 0.00 % ( 1: 0.00 %, 2: 0.00 % )
正負平均音量差: 0.000000 ( 1: 0.000000, 2: 0.000000 )
------------------------------------------------------------


7.念のためWaveCompare等の比較ソフトを使い、本当に差分がないことを確認し、喜びに浸る。(必須ではないが…)


■検証結果
・デジタル音声出力がビットパーフェクトになったデバイス
 Roland SC-D70(WASAPI排他のみ)
 Realtek Digital Output(WASAPI排他のみ、ASIO非対応)
 tc electronic impact twin(WASAPI排他、ASIOともにOK)

・デジタル音声出力がビットパーフェクトにならなかったデバイス
 UA-4FX

UA-4FXの差分データ
------------------------------------------------------------
最大音量: -84.29 dB ( 1: -84.29 dB, 2: -84.29 dB )
平均音量: -94.82 dB ( 1: -94.68 dB, 2: -94.96 dB )
オートマキシマイズ平均音量: -97.75 dB
DCオフセット: 0.000000 ( 1: 0.000000, 2: 0.000000 )
サラウンド(位相): -3.48 dB
歪み率: 29.15 % ( 1: 29.15 %, 2: 27.77 % )
正負平均音量差: 0.458157 ( 1: 0.407834, 2: 0.511361 )
------------------------------------------------------------

WAVE波形を拡大すると、確かにゴミみたいなデータが混じっているのが見える。

b0041624_1049412.jpg


参考として、今回ビットパーフェクトを実現したRoland SC-D70を使い、AIMP3でASIO再生した場合にどうなるか試してみた。

AIMP3でASIO再生した場合の差分データ
------------------------------------------------------------
最大音量: -90.31 dB ( 1: -90.31 dB, 2: -90.31 dB )
平均音量: -134.37 dB ( 1: -134.76 dB, 2: -134.00 dB )
オートマキシマイズ平均音量: -137.71 dB
DCオフセット: 0.000000 ( 1: 0.000000, 2: 0.000000 )
サラウンド(位相): -39.50 dB
歪み率: 0.00 % ( 1: 0.00 %, 2: 0.00 % )
正負平均音量差: 2.547990 ( 1: 1.855080, 2: 3.135720 )
------------------------------------------------------------

これは耳で聴いて分かるレベルではないと思うが、なぜかビットパーフェクトにはならなかった。
差分のWAVEファイルの波形を見ると最後の方にゴミのようなものが混じっており、この部分を除去すればビットパーフェクトになった。

b0041624_19193914.jpg


その後AIMP3のASIO再生に問題があるのかと思い、tc electronicでASIO再生したところ、ビットパーフェクトで再生できていた。
よって原因はAIMP3にあるのではなく、Roland SC-D70にあるようだ。


■まとめ
WASAPI排他でもASIOでも同様にビットパーフェクトは達成できる。
色々試行錯誤したが、結局UA-4FXの再生データのゴミを除去することは出来なかった。(設定次第では何とかなるのかもしれないが)
試しにUA-4FXのデジタル録音してみたところビットパーフェクトで録音できたので、やはりUA-4FXの再生側に原因があると思われる。
ただ、マザーボード付属のサウンド機能でもWASAPI排他を使用すればビットパーフェクト再生が可能だった事から、よほどの欠陥がない限りWASAPI排他で再生すれば音質劣化は生じないだろう。
("デジタル"出力なのだから、当たり前と言えば当たり前の話だが。)
PC負荷の観点からするとASIOの方が優れていると言えるが、ASIO再生には再生機器が対応している必要がある。
(サイトによってはWASAPI排他とASIOで音質が違うと書かれてあったりするが、理論上は両方とも無劣化で再生されるのだから音質に変化が生じているかは疑問。)

■最後に
なぜわざわざこんな作業をしたかというと、UA-4FXの音は本当に劣化しているのか客観的なデータで示したかったからである。
数日前、UA-4FXのデジタル音声出力はオンボードの音に負けてると書いたが、何の証拠もない状態では、どうせ「お前の思い込みだ」というコメントが寄せられると思った。
しかし実際にやってみるとUA-4FXがオンボードに負けてるのは事実だったものの、個人が音楽を鑑賞する限りにおいてはそこまで大きな問題ではない気がする。
(レコーディング用途にも使用されるであろう機器がそれでいいのかという疑問もあるが…)
よって、依然としてUA-4FXのヘッドフォン出力&アナログ入出力が糞である事には変わらないが、デジタル音声出力も劣化している云々の記事は削除した。
(Googleキャッシュにまだ残っているじゃないかという突っ込みはなしでお願いします)

あと、UA-4FXがビットパーフェクト再生出来ない以上、UA-4FXのループバック機能を使用してもビットパーフェクトになりません。
[PR]
by nochoice1 | 2013-12-23 10:56 | Comments(0) *
<< 2013年のまとめ2 ページトップ 2013年まとめ(その1) >>
The Original by Sun&Moon