ハイレゾFLACをLinuxで再サンプルする方法

ハイレゾFLACファイルは、ハイファイオーディオ体験の一つの頂点です。しかし、CDをFLACファイルにリッピングすると、そのファイルを作成した機器以外で再生するのが難しいことがあります。これは、高解像度の音楽トラックを持っているが、適切に再生するためのツールを持っていないユーザーにとって問題です。
これを修正する一つの方法は、soxを使用してハイレゾFLACファイルを再サンプルすることです。このチュートリアルでは、soxの基本とLinuxでFLACファイルを再サンプルする方法を教えます。
ヒント: 異なるオーディオフォーマットについて混乱している場合は、MP3、AAC、FLACを含むさまざまなフォーマットの違いを理解するためにこのガイドをチェックしてください。
目次
- Soxとは?再サンプルの仕組みは?
- soxを使用したハイレゾFLACファイルの再サンプル
- 再サンプルプロセスの自動化
- よくある質問
Soxとは?再サンプルの仕組みは?
基本的に、soxはコマンドラインのオーディオ処理プログラムです。Audacityとは異なり、ターミナルから直接オーディオファイルを操作できます。これにより、簡単な編集を行ったり、複雑なオーディオタスクを自動化したりすることができます。

一方で、再サンプルとは、高忠実度の信号を低い信号に変換するための複雑なアルゴリズムを使用するプロセスです。このアプローチは、音声トラックの品質を保ちながら、コンピュータに保存するデータ量を削減します。
また、再サンプルを行うことで、ハイレゾFLACファイルを低スペックのデバイスで再生できるようになります。例えば、RockboxのiPod Videoは、24ビットのオーディオファイルを再生する際に遅延やカクつきが生じる可能性があります。

代替手段: sox以外に、flac2allを使用してFLACファイルを他の現代のオーディオフォーマットにトランスコードすることもできます。
soxを使用したハイレゾFLACファイルの再サンプル
注意: 以下の手順はUbuntu用ですが、使用するLinuxディストリビューションに関係なく同じです。
FLACファイルを再サンプルする最初のステップは、soxユーティリティとその依存関係を両方インストールすることです。DebianとUbuntuで以下のコマンドを実行します:
sudo apt install sox flac ffmpeg
正しくインストールされているか確認するには:sox --version。

組み込みのfileプログラムを使用して、FLACファイルのビット深度とサンプルレートを確認します:
file sample.flac私のFLACファイルの場合、ビット深度は24ビット、サンプルレートは96kHzです。

soxのための適切な再サンプルレートを見つける
FLACファイルに対する適切な再サンプルレートを見つけてください。再サンプルに関する一般的なルールは、ターゲットの再サンプルレートは元のサンプルレートの2または4で割り切れるべきということです。

192kHzのFLACファイルは、96kHzまたは48kHzにのみ再サンプルすべきで、再サンプルアルゴリズムが元の信号を可能な限り歪みを少なくして変換できることを確保します。
ハイレゾFLACファイルの再サンプルを最適化する
使用する正しい再サンプルレートがわかったら、soxを実行してFLACファイルを再サンプルすることができます。私のケースでは、96kHzのファイルを再サンプルしているので、次のコマンドを実行しています:
sox -S sample.flac -b 16 resample.flac rate -v -L 48000 dither-bフラグは、soxに出力ファイルの新しいビット深度を設定するように指示します。例えば、16の値は新しいビット深度を16ビットに設定します。- 一方、
rateオプションは、soxに出力ファイルの新しいサンプルレートを設定するよう指示します。 -vフラグは、soxに「非常に高品質」の再サンプルアルゴリズムを使用するよう強制します。-Lフラグも、再サンプル中にsoxに「線形位相」の応答を使用するよう強制します。これは、FLACファイル内の「信号エコー」を中和しようとするフィルターです。- 最後に、
ditherオプションは、トラック全体にわたって少量のノイズを生成します。これは、再サンプルプロセス内の不完全さを隠すマスクとして機能します。

再サンプルプロセスの自動化
ファイルごとにsoxを使用することは可能ですが、シェルを使用してプロセス全体を自動化することもできます。(シェルスクリプティングの初心者向けガイドをチェックしてください。)これは、ハイレゾFLACトラックのアルバム全体を再サンプルするつもりの場合に便利です。
再サンプルプロセスを自動化する最も簡単な方法の1つは、Bashのforループを使用することです。例えば、次のコードを実行してFLACファイルのフォルダー全体を再サンプルできます:
mkdir -p ./flac-dir/resample && cd ./flac-dir
for flac in *.flac; do sox -S "${flac}" -b 16 resample/"${flac}" rate -v -L 48000 dither; done最初のコマンドは、新しいFLACファイルの出力フォルダを作成し、現在の作業ディレクトリを変更します。2番目のコマンドは、現在のフォルダ内のすべてのファイルをループし、soxを使用して再サンプルします。

よくある質問
soxを使用してMP3ファイルを再サンプルすることは可能ですか?
soxのrateコマンドはロスのあるフォーマットでは機能しないため、MP3ファイルを再サンプルすることはできません。
「検出されたファイルタイプのハンドラがない」というエラーが表示されています。soxは壊れていますか?
いいえ!このエラーは、soxがあなたのハイレゾFLACファイルを読んでデコードできないときに発生します。この問題の一般的な原因は、システムライブラリが欠如しているか、コンパイラフラグが不足していることです。
システムライブラリの欠如を修正するには、次のコマンドを実行します:sudo apt install libsox-fmt-all。コンパイラフラグの不足を修正するには、現在のsoxパッケージをアンインストールし、ソースからコンパイルする必要があります。
soxが私のハイレゾFLACファイルがクリッピングしていると報告しています。再サンプルは失敗したのですか?
ハイレゾFLACファイルが再サンプル中にクリッピングするのは正常です。再サンプルプロセスでは、FLACファイルの高周波数および不可聴周波数データの大部分が省略されます。
それにもかかわらず、soxに再サンプル中のクリッピングを補正するよう指示することもできます。これを行うには、soxコマンドに-Gフラグを追加します:sox -S sample.flac -G -b 16 resample.flac rate -v -L 48000 dither。
画像クレジット:Unsplash。すべての変更とスクリーンショットはRamces Redによるものです。