« 2023年6月 | トップページ | 2023年9月 »

2023年8月

2023年8月22日 (火)

CD音源の高精度アップサンプリングで、ハイレゾ相当のリアル音源を作る。

 CD音源からハイレゾ音質を作り出せないかと過去に何度となく取り組んできましたが、いずれの手法も
「22.05KHz以上の失われた高域の倍音を再現して付加する」と言う考えがベースにありました。
でも、そんなことは必要なかった・・・

CDを高精度に「アップサンプリング→加算→減算→ダウンサンプリング」するだけでハイレゾ相当
のリアル音源( Real sound 勝手に命名(^^;)になることがわかりました。


1、CDからハイレゾ相当のリアル音源を作る。「変換の概念」

_009

 

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トラックに複製します)

C4n16_001

 

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より音質が向上してハイレゾ音質に近づいています。

 

にほんブログ村 写真ブログ 立体写真へ

 

にほんブログ村 写真ブログ 水中写真へ

| | コメント (0)

2023年8月17日 (木)

m4a,mp3などの非可逆圧縮音源を、WAV(44.1KHz 16bit)音質に簡易復元

 m4a,mp3などの非可逆圧縮音源は、元のWAV(44.1KHz 16bit)より音質が劣化しています。
非可逆圧縮音源の帯域バランスは一般的に「高域は強調され、低域はスカスカ」の傾向になります。
(聴覚の特性に基づいて圧縮しているため、こうなってしまうのでしょうか?)
しかし、そんな圧縮音源でも圧縮前のWAV相当の音質で聞くことができないか? その答えです。

約16KHz以上のカットされた帯域と、マスキングでカットされた周波数成分は復元不可能ですが、
帯域バランスをWAVに近づけることで、圧縮音源くささをなくしました。

※1、聴力検査で約8KHzまでしか聞こえない耳で音質を評価しています。
   20KHzまで聞こえる若い方にはどんなふうに聞こえているんでしょう?

 圧縮音源からWAV相当の音質への簡易復元は簡単な操作なので是非試してみてください。

 

1、使用するソフト

 Audacity Ver 3.2.5 推奨(プロジェクトのサンプリング周波数の指定が簡単)

 ※2、Ver 3.2.5は、現在アーカイブからのダウンロードになります。
   2023/08/16現在  https://www.fosshub.com/Audacity-old.html

 ※3、Ver 3.3.3 最新バージョンでも使えますが多用する(プロジェクトのサンプリング周波数)の
   指定が階層の深いところに変わって使いにくいです。
   エフェクトの日本語表記も変更されています。


 Audacityの設定 (Ver3.2.5)

 1)編集→環境設定→品質
  サンプリング
   サンプリング周波数: 44100Hz
   サンプル形式   : 32bit 浮動小数点 ・・・必須
  リアルタイム変換
   サンプリング周波数: 最高品質(最低速)
   ディザリング   : 無し
  高品質変換
   サンプリング周波数: 最高品質(最低速)・・・必須
   ディザリング   : 無し       ・・・必須 

  ※4、他のソフトでも、下記を満たせば使えると思います。
    ・サンプリング周波数の指定が任意設定できる(f=2^n)
    ・32bit-float 編集ができる
    ・アップ/ダウンサンプリング計算がsinc関数演算
    (他のソフトが使えてもパラメーターの見直しは必要と思います)


2、操作の流れ

   変換フロー (m4a 44.1KHz の例)

   m4a (44.1KHz) → 262144Hz 32bit-float → wav (44.1KHz/16bit)

 

 m4a(44.1Khz)音源の変換例(ファイル名:44m4a.m4a)

 1)44m4a.m4a 読み込み

 2)アップサンプリング周波数を 262,144Hz に指定
  画面左下の(プロジェクトのサンプリング周波数)のBOXに、262144 と直接入力
  262,144Hz は、二進数で割り切れる時間軸 T=1/2^18 (s)  

 3)32bit float/rf64形式で書き出し
  ファイル名例 44m4a_262f.rf64

  ※5、32bit float/wav形式でも可 (CD1枚連結を書き出すと4GBを超えるのでrf64を推奨)

 4)44m4a_262f.rf64 読み込み

 5)ダウンサンプリング周波数 44100Hz を選択 (※6)
  画面左下の(プロジェクトのサンプリング周波数)で44100 を選択。

  ※6,映像から分離したAAC、AC3などの48KHzの非可逆圧縮音源は、wavの書き出し時に
    48KHz/16bit を選択します。
    48KHz系を44.1KHz系に変換(逆も)すると音質が落ちます。

 6)wav/16bit で書き出し(※7)
  ファイル名例:44m4a_262f_44-16.wav

  ※7、44.1KHz16bit以外(例 96/192KHz24bit)で書き出しても、WAV音質にもハイレゾ音質にも
     なりません。劣化するだけです。


 ※8、CD1枚分などの長時間の音源の場合、次の項目に進む前に「新規プロジェクト」を先に
   開いてから、作業の終わったプロジェクトを終了させながら進むと、複数のプロジェクトを
   開かずに済み、audacityの作業ファイルの累積が無くなくなり作業容量の節約ができ、
   操作のレスポンス低下をなくすことができます。
  
 ※9,蛇足ですが、ASIOソフトの「BRAVO-HD Audio CPL」を開いてしまうと、Audacityがまともに
   動作しなくなる(速度低下)現象が出ています。


3、何をしているのか?

  数学的な説明は抜き(できません(^^;)で、下記のイメージの考えで簡易変換を行っています。

   非可逆圧縮音源はwavデータを間引くために関数の形のデータ(イメージでの理解です)に変換
  されていて、WAVに変換すると不連続の点を結んでつながれた「ガタガタ波形」になり、
  その「ガタガタ波形」が音質劣化の原因と考えました。
  (関数なのでbit深度の考えが無く、32bit-floatで復調すると、24bit値をとります)

  そこで、32bit-floatで復調された「ガタガタ波形」の24bitをsinc関数を使ったアップサンプリ
  ングで再計算して滑らかな 262,144Hz/24bitの波形に変換し、その滑らかな波形から再び
  44.1KHz/16bitにダウンサンプリングすることで、圧縮されて残った周波数成分を持った
  滑らかなWAV波形に戻すことができる。

   アップサンプリング周波数を 262,144Hz(二進数で割り切れる時間軸(T=1/2^18_s)に
  することでアップ/ダウン・サンプリング時の時間軸の割り切れない計算誤差をなくして、
  音質の劣化を少なくします。 
  262,144Hzは(2^17~20_Hz)の中からヒアリングで決定。

  ※10、192KHzなどは、T=1/192,000=0.0000052083…(s)と割り切れないため時間軸基準に
    揺らぎを生じて音質を劣化させていると考えられる。 (PC内部の2進数は理解不能です) 

   下図は、実際にmp3(44.1KHz128kbps)でWAV音質に簡易復元した例で、波形の変化(差分)と
  新たに生成された周波数成分です。

_001_h16002

 

   今回の処理は、「圧縮音源をハイレゾ音質相当に変換する」ためのプリ処理で、
  圧縮音源をCD音質相当(wav 44.1KHz16bit)に復元するために開発した。
  次回のブログで「WAV音源をハイレゾ相当に変換」を公開予定です。

 

にほんブログ村 写真ブログ 立体写真へ

 

にほんブログ村 写真ブログ 水中写真へ

| | コメント (0)

2023年8月 6日 (日)

2022年のフンガ・トンガ=フンガ・ハアパイ火山の大規模噴火

 2022年1月15日のフンガ・トンガ=フンガ・ハアパイ火山の大規模噴火を、ひまわり8号により 4:00 UTC から
6:50 UTC (10分間隔)に撮影されたカラー画像18枚をもとに、4K動画化しています。

図1、(0~9秒)
フンガ・トンガ=フンガ・ハアパイ火山の、噴火の様子(オリジナル画像を3倍に拡大)
(描写範囲は、横 1280Km, 縦 720Km (ひまわり8号のRGB解像度 1Kmより))

図2、(9~18秒)
噴火点から同心円で伝播していく、気圧波とみられる白い雲状の輪(オリジナル解像度)
(描写範囲は、横 3840Km, 縦 2160Km (ひまわり8号のRGB解像度 1Kmより))

4K(3840x2160)動画

 

GIF動画(640x360)

_2

 

 「白い雲状の輪は」、噴火で起きた気圧波の進行とともに大気が上下に動き、気圧の高い通過点では空気が持ち上げられ
雲が発生し、通過すると空気が再び下がり雲が消える現象で、単発の波状雲が進行している状態だと思われます。
(気象は素人なので間違っているかもしれません。)
気圧波は、音速に近い、約 300 m/s で進行します。
他のサイトの全地球規模の気圧波を鮮明化した動画を見ると、地球を一周して噴火点に戻ることが確認できます。


画像の出典:下記をもとにR1が作成
提供:情報通信研究所(NICT) Himawari-8(RGB)
ひまわりリアルタイムWeb
https://himawari8.nict.go.jp/ja/himawari8-image.htm
ひまわり衛星データダウンロード
https://sc-web.nict.go.jp/himawari/himawari-data-archive.html
hima820220115140000fd.png ~ hima820220115165000fd.png

音楽:魔王魂
https://maou.audio/
魔王魂 ピアノ38.m4a

 

にほんブログ村 科学ブログ 地学・地球科学へ

| | コメント (0)

« 2023年6月 | トップページ | 2023年9月 »