CD音源の高精度アップサンプリングで、ハイレゾ相当のリアル音源を作る。
CD音源からハイレゾ音質を作り出せないかと過去に何度となく取り組んできましたが、いずれの手法も
「22.05KHz以上の失われた高域の倍音を再現して付加する」と言う考えがベースにありました。
でも、そんなことは必要なかった・・・
CDを高精度に「アップサンプリング→加算→減算→ダウンサンプリング」するだけでハイレゾ相当
のリアル音源( Real sound 勝手に命名(^^;)になることがわかりました。
1、CDからハイレゾ相当のリアル音源を作る。「変換の概念」
2、使用するソフトと設定
Audacity Ver 3.2.5 推奨(プロジェクトのサンプリング周波数の指定が簡単)
※2-1、Ver 3.2.5は、現在アーカイブからのダウンロードになります。
2023/08/16現在 https://www.fosshub.com/Audacity-old.html
※2-2、Ver 3.3.3 最新バージョンでも使えますが多用する「プロジェクトのサンプリング周波数」
の指定が階層の深いところに変わって使いにくいです。日本語表記も変わりました。
1)Audacityの設定 (Ver3.2.5)
メニュー 編集→環境設定→品質
サンプリング
サンプリング周波数: 44100Hz
サンプル形式 : 32bit 浮動小数点 ・・・必須
リアルタイム変換
サンプリング周波数: 最高品質(最低速)
ディザリング : 無し
高品質変換
サンプリング周波数: 最高品質(最低速)・・・必須
ディザリング : 無し ・・・必須
2)「複製マクロ」の作成
操作でWAVの増幅(256倍)を行いますが、「エフェクトの増幅」はdB単位で整数倍が
できないため、トラック1を複数コピーして書き出し時の加算を使って整数倍増幅を行います。
ここでは、「4回の複製で全16トラック作成」を2回行って16倍x16倍=256倍にするため、
「4回複製」のマクロを作ります。
手動で複製コマンドを繰り返してもいいのですが、省力化と複製回数の間違いをなくす
ために「複製のマクロ」作ります。
マクロ名: +0_c4n16 (先頭の+0_ はマクロ欄のトップに置くためのダミー)
マクロ編集: 複製を4回 (トラック1 をマクロで、全16トラックに複製します)
3、変換作業前の注意
1) 作業中の中間ファイルは絶対に再生しないでください。
クリップ波形になっているため、再生すると過大な音で耳や再生機器にダメージを与えます。
2) CD1枚連結のWAVファイル(57:30)を192KHz-24bitに変換するのに必要な時間とSSDの空き容量
・変換に掛かる時間 約45分 (i7-2670QM+SATA600のSSD)の場合
・SSDの必要な空き容量
WAVorg/中間ファイル/192KHz-24bit ファイル合計 38GB
Audacity 一時ファイル(プロジェクト毎にクリアの時の最大) 36GB ※2-1
SSDの必要空き容量の合計 74GB
※2-1、CD1枚(57:30)を変換するとき、一時ファイルをクリアしながらでも総書き込み量は、
112GB で、ファイルと合わせると合計の書き込み量は、150GBになります。
変換作業はSSDの寿命を縮めます。(SSDを消耗品と割り切らないとできません)
3)WAV(44.1KHz16bit)音源以外に、非可逆圧縮音源のmp3,m4aなども同様に変換できます。
前のブログ記事
m4a,mp3などの非可逆圧縮音源を、WAV(44.1KHz 16bit)音質に簡易復元
http://r1rawd.cocolog-nifty.com/blog/2023/08/post-bb84e4.html
を参考に前処理を行い、WAV(44.1KHz16bit)に変換してから行ってください。
4、変換作業の流れ
CD音源(44.1KHz16bit)の変換例(ファイル名例:44wav.wav)
1)Audacityを起動して、「ファイル→開く」で、44wav.wav を読み込み
2)アップサンプリング周波数を 262,144Hz に指定
画面左下の「プロジェクトのサンプリング周波数」のBOXに、262144 と直接入力
(262,144Hz は、二進数で割り切れる時間軸 T=1/2^18 (s))
3)「ファイル→書き出し→音声を書き出す」で、32bit float/rf64形式で書き出し(※4-1)
ファイル名例 44wav_262144f.rf64
※4-1、1曲単位で変換するのなら、32bit float/wav形式でも可ですが、CD1枚連結ファイル
で書き出すことがある場合は4GBを超えるためrf64形式を使用します。
4)「ファイル→新規」で空の新しいプロジェクトを開く。
そのあとに、3)書き出し で終わった直前のプロジェクトを終了させる。
・複数のプロジェクトが開くのを防止 ・Audacityの一時ファイルの累積を防止
5)「ファイル→開く」で、44wav_262144f.rf64 を読み込み、トラック1を選択
6)「ツール→マクロの適用→マクロ(複製4回)」を実行
トラック1が複製されて下に15トラック並び、全16トラックが作成されます。
7)「ファイル→書き出し→音声を書き出す」で16トラックを加算で16倍の増幅として書き出す。
ファイル名例 44wav_262144f_n16.rf64
8)「ファイル→新規」で空の新しいプロジェクトを開く。
そのあとに、7)書き出し で終わった直前のプロジェクトを終了させる。
・複数のプロジェクトが開くのを防止 ・Audacityの一時ファイルの累積を防止
9)「ファイル→開く」で、44wav_262144f_n16.rf64 を読み込み、トラック1を選択。
10)「ツール→マクロの適用→マクロ(複製4回)」を実行
トラック1が複製されて下に15トラック並び、全16トラックが作成されます。
11)「ファイル→書き出し→音声を書き出す」で16トラックを加算。
16倍x16倍=256倍の増幅として書き出す。
ファイル名例 44wav_262144f_n256.rf64
12)「ファイル→新規」で空の新しいプロジェクトを開く。
そのあとに、11)書き出し で終わった直前のプロジェクトを終了させる。
・複数のプロジェクトが開くのを防止 ・Audacityの一時ファイルの累積を防止
13)「ファイル→開く」で、44wav_262144f_n256.rf64 を読み込み。
14)トラック1を選択し「エフェクト→上下を反転」
この操作で、256倍が-256倍になります。
15)「ファイル→取り込み→音声」で、44wav_262144f.rf64 をトラック2に読み込み
16)「ファイル→書き出し→音声を書き出す」で、トラック1と2を加算で書き出す。
この操作で -256倍+1倍 = -255倍 になる。
ファイル名例 44wav_262144f_-n255.rf64
17)「ファイル→新規」で空の新しいプロジェクトを開く。
そのあとに、16)書き出し で終わった直前のプロジェクトを終了させる。
・複数のプロジェクトが開くのを防止 ・Audacityの一時ファイルの累積を防止
18)「ファイル→取り込み→音声」 で、Ctrlを押しながら、
44wav_262144f_-n255.rf64 と44wav_262144f_n256.rf64 を取り込む
トラック1、44wav_262144f_-n255.rf64
トラック2、44wav_262144f_n256.rf64
19)「ファイル→書き出し→音声を書き出す」でトラック1,2を加算(利得1の波形の書き出し)
ファイル名例 44wav_262144f_n256-n255.rf64
20)「ファイル→新規」で空の新しいプロジェクトを開く。
そのあとに、19)書き出し で終わった直前のプロジェクトを終了させる。
・複数のプロジェクトが開くのを防止 ・Audacityの一時ファイルの累積を防止
21)「ファイル→開く」で、44wav_262144f_n256-n255.rf64 を読み込む。
(注意-1)ここでオリジナルのWAVと相似した波形になっていなければ操作ミスがあります。
22)リアル音源(WAVファイル)の書き出し。
指定できる周波数とbit深度の組み合わせ
1、44.1KHz 16bit
2、48KHz 16bit (or 24bit) (映像系として使う場合)
3、96KHz 24bit
4、192KHz 24bit
(88.2/176.4KHz 24bit が必要なら同様に書き出してください)
先に画面左下の「プロジェクトのサンプリング周波数」で周波数を指定し、
「ファイル→書き出し→WAVファイルとして書き出し」で、bit深度を16 or 24bitに指定。
書き出しファイル名の例
44100Hz 16bit ファイル名例 44wav_Rs-44-16.wav、
96000Hz 24bit ファイル名例 44wav_Rs-96-24.wav、
192000Hz 24bit ファイル名例 44wav_Rs-192-24.wav
複数の周波数で書き出したいときは、周波数とbit深度を再指定して繰り返してください。
(注意-2)192KHz24bitで書き出したファイルから、96KHz24bitや44.1KHz16bitなどに間接的に
ダウンサンプリングすると音質が落ちます。
必ず 44wav_262144f_n256-n255.rf64 から直にダウンサンプリングしてください。
(注意-3) CD1枚連結WAVファイルの場合、192KHz24bitで書き出せるのは約1時間までです。
約1時間を超えると書き出し時に「4GBオーバー」の警告が出ますので、ファイル分割
してください。
(書き出し時に 44wav_Rs-192-24.rf64(192KHz24bitのrf64形式)で一度書き出してから、
分割してWAV形式で書き出します)
5、何をしているのか?
アイデアの発端は「聞こえない高域の倍音成分を付加しなくても、アップサンプリングと
増幅で16bitデータを高精度で滑らかな24bitデータに水増ししたら音が良くなるのでは?」
から始まってこんな形にたどり着きました。
1)アップサンプリング周波数を 262,144Hz にしているのは
二進数で割り切れる時間軸 T=1/2^n (s)にすると時間軸の演算誤差(割り切れない揺らぎ)
が無く、アップ/ダウンサンプリング時の音質が向上するのがわかったから。
262,144Hz (T=1/2^18 (s))は、(n16~n20)よりヒアリングで決定。
2)256倍は、16bitの下に空の8bitを挿入して仮想24bitとするため。(と考えた)
(アップサンプリング後に256倍しているので正確ではないと思うがイメージです(^^;)
また、-255倍も必要なので、256倍の仮想24bitから1倍の仮想24bitを引き算して
仮想32bitを作り上下反転で(x-1)にする。
(仮想32bitは、演算が32bit-floatなので、下位8bitは切り捨てられる。 と思います)
256倍-255倍 ≒ 1倍
正確に1倍にならないのは、-255倍の下位8bitが切り捨てられているためで、このおかげで?
全体域に渡りハイレゾ相当のリアル音源に聞こえる成分が生成されていると思われる。
この成分は、音の大きさによって「切り捨ての桁数」が変化するので大きさも変動します。
(数学的な考察はできないのでイメージでとらえた説明です)
3)操作でWAVの増幅/減衰を行うのですが、「エフェクトの増幅」を使うとdB単位のため2^n乗
の整数倍の増幅/減衰(ビットシフト)ができないため音質が劣化する。
そこで整数倍の増幅/減衰を「複数トラックの加算/減算」で行うことにした。
手動で複製コマンドを繰り返してもいいのですが、多用するのと複製回数の間違いをなくす
ために「複製のマクロ」を作って使います。
複製は、トラック1の音源を増幅する整数倍の数だけコピーして、書き出し→トラック加算で
増幅します。
増幅は256倍が必要なため「コピー4回で16トラック」を2回行うことで、16x16=256倍になる。
マクロで、複製8回を一度に行うとトラック256個の複製が1度に出来ますが加算時間が
約8倍になります(T256=256加算、T16x2=16加算+16加算=32加算、256/32=8倍)
4)44.1KHz16bit で書き出した場合でも、262144Hzのリアル音源の全帯域(131072Hz)に渡り、
リアル音源に聞こえる成分が生成されている(0-22.05KHzにも重畳されている)ため、
元のCDより音質が向上してハイレゾ音質に近づいています。