Soxとは何か、そしてリサンプリングはどのように行われるのか?
sox は、その中核は、コマンドラインのオーディオ処理プログラムです。Audacity とは異なり、ターミナルから直接オーディオファイルを操作することができます。このため、sox は、簡単な編集をしたり、複雑なオーディオタスクを自動化したりしたい人に便利です。
一方、リサンプリングは、複雑なアルゴリズムを使って、高忠実度の信号を低忠実度の信号に変換するプロセスである。この方法は、コンピュータに保存するデータ量を減らしながら、オーディオトラックの品質を保持します。 また、リサンプリングは、ハイレゾ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 ファイルのビット深度とサンプルレート を調べ、これらの情報をターミナルに表示させます。
ファイル sample.flac
私の場合、FLACファイルのビット深度は24ビットで、サンプルレートは96kHzです。
soxの正しいリサンプルレートを探す
FLACファイルに適したリサンプリングレートを探します。リサンプリングにおける一般的な経験則は、目標とするリサンプリングレートは、オリジナルのサンプルレートに対して2または4で割り切れるものであるべきということです。
192 kHzのFLACファイルを96または48 kHzに再サンプリングするのは、再サンプリングアルゴリズムが元の信号をできるだけ歪まずに変換できるようにするためです。ハイレゾFLACファイルにおけるリサンプリングの最適化
正しいリサンプリングレートがわかったら、soxを実行してFLACファイルをリサンプリングすることができます。私の場合、96kHzのファイルをリサンプリングしているので、以下のコマンドを実行しています。
sox -S sample.flac -b 16 resample.flac rate -v -L 48000 dither
- b` フラグは、sox に出力ファイルのビット深度を設定するように指示します。例えば、16を指定すると、新しいビット深度が16ビットに設定されます。
- 一方、
rate
オプションは、出力ファイルのサンプルレートを設定します。 - v` フラグは、“Very High Quality” リサンプリングアルゴリズムを使用するように強制します。
- L` フラグは、リサンプリング時に “Linear Phase” 応答を使用するように強制します。これは、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を使用してリサンプリングします。
よくある質問
MP3ファイルをsoxでリサンプルすることは可能ですか?
sox の rate コマンドはロッシーなフォーマットでは動作しないので、MP3 ファイルのリサンプリングには使えません。
“no handler for detected file type” というエラーが発生します。soxが壊れているのでしょうか?
いいえ、これはsoxが高解像度FLACファイルを読み込んでデコードできないときに起こります。この問題の最も一般的な原因は、システムライブラリの欠落とコンパイラフラグの欠落です。
システムライブラリの欠落を修正するには、以下のコマンドを実行してください。sudo apt install libsox-fmt-all`. コンパイラーフラグの欠落を修正するには、現在の sox パッケージをアンインストールして、ソースからコンパイルする必要があります。Soxは私のHi-Res FLACファイルがクリッピングしていると報告しています。リサンプリングに失敗したのでしょうか?
リサンプリング処理では、FLACファイルの高域および聞き取れない周波数のデータのほとんどが省略されるため、高解像度FLACファイルがリサンプリング中にクリップするのは正常な現象です。
しかし、soxは、リサンプリング時にクリップを補正することができます。これを行うには、soxコマンドに-G
フラグを追加してください。sox -S sample.flac -G -b 16 resample.flac rate -v -L 48000 dither`.