ご無沙汰しております。
最近はソフトウェアラジオでFMステレオチューナーソフトを作ろうなんてしてました。
FMチューナーを作るにはサンプリング周波数2.4MHz(240Kじゃないよ!)のデーターを1/5にダウンサンプリングして480KHzにして、それを更にFM復調・ステレオデコードし、さらに1/10にダウンサンプリングして48KHzの音声データにするなんて手順を踏みます。
その経過で「あれっ?サンプリング周波数変換って意外と誤差なく出来るんじゃない?」と思って44.1Kから96Kへの変換を考えてみました。
いままで色々能書きを垂れて来ましたが、今回は「実際にアップサンプリングソフトを作って」考えてみました。
私の再生環境はすべてのデーターを96KHzに変換してから再生しています。この変換にはsoxのリサンプリングを使っています。
測定上は十分な性能で私の耳では劣化は感じられなかったので採用しています。
今回自作したアップサンプリングソフトはsox以上の精度でsoxよりは2割増しくらいの時間で変換できます。
Core™ i5-1135G7 シングルスレッドで120秒の音声データの変換に1.9秒くらい。
この過程でわかったのは
「適切に変換すれば44.1Kから96Kへは高速・音質劣化なしに行うことが出来る」
「もし音質変化があるならば、そもそも再生系で44.1K系と48K系で音質が違う」
ということです。
いずれにしてもこれで気兼ねなく周波数変換できるようになりました。
コメント ※編集/削除は管理者のみ
assiさん、こんにちは。
遅レスですみません。
私もdBpowerampを使ってリッピングするときにアップサンプリングしています。
dBpowerampの昔のバージョンでは96KHz/24bitしか選択できなかったのですがバージョンアップしてから88.2KHz/24bitも使えるようになったのでそれからはそちらの方を選択しています。
私の耳にはその差は良くわかりません。(笑)
ただ、オリジナルの44.1KHzよりは音が柔らかいアップサンプリング処理された方が好きです。
DACでもオーバーサンプリングされていますが、オフラインでのアップサンプリングは効果的で私の好みはオフライン・アップサンプリングです。
オフライン処理の方が計算精度を上げられるからかなと思ったりしますが本当のところはどうなんでしょうね。
最近はNOSを好む方もいるので人の好みは様々ですね。
K&Kさん、こんばんは。
アップサンプリングには色々な方法がありますが、今回私が使ったのはFFTを利用したサンプリング周波数変換で、一発で44.1KHzから96KHzへの320/147倍の変換が音質劣化なく(32bit精度の場合)行うことが出来ます。
詳細はこのサイトに相応しくないのでQiitaに書いてみました。https://qiita.com/assi-dangomushi/items/6a47425be929fd5b8a33
この方法の場合には時間をかければ精度が上がるわけではありません。これがほぼ目一杯の精度と思われます。
変換方式によっては短時間で行うと精度が低くなる場合もあるみたいです。
なお、アップサンプリングに使うローパスフィルタの最適な特性は「音源が録音されたときのローパスフィルタの特性」、「再生するスピーカーの高域特性」によって変化して一意に決まりません。
DACによっては色々設定できるようになってるのはこのためです。
最適なものが1つあるのなら他は必要ないはずです。
まあ、聴いてみて納得できるものが一番です。
assiさん、
情報ありがとうございます。
私は専門家ではありませんが、学生時代に学んだSamplingの情報理論ではSampling情報から元のアナログ波形を完全に復元するためには時間軸上のある1点の時間の値を計算するのに-∞から+無限大の各サンプリングデータを使う必要があるということでした。
現実にはそれは不可能なのでそのある時間の前後の限られたポイントの情報を使って計算するのが一般的で、アップサンプリングもそうやって計算するのが一般的なのだと思っていました。CHORDがそのDAC技術で謳っているタップ数の多さというのは計算に使用している前後の時間のポイント数の多さのことだと理解しています。
タップ数が多ければ誤差を小さくできる…
CHORDの場合はそれをリアルタイムでやるわけですから限られた時間の中でいかに高速演算を行えるかがカギになっているのだと思います。
オフラインでFileデータを変換処理する場合は時間の制約は少ないでしょうが、精度を上げようとすると当然変換処理時間が長くなるといういことになるのだと理解していました。
assiさんが行われている処理方法はCHORDなどとは違うやりかたのようですね。
興味深く拝見しました。