GNU/Linux >> Linux の 問題 >  >> Linux

この用途の広いLinuxコマンドでオーディオファイルを変換する

私はメディアを扱っていますが、あらゆる種類のメディアを扱うと、標準化が価値のあるツールであることがすぐにわかります。どちらか一方を変換せずに小数に分数を追加しようとしないのと同じように、異なる形式のメディアを組み合わせるのは理想的ではないことを学びました。ほとんどの趣味レベルのアプリケーションでは、便宜上、変換プロセスがユーザーに見えなくなります。ただし、アセットの詳細を制御する必要のあるユーザーを対象とした柔軟なソフトウェアは、メディアを事前に目的の形式に変換することをユーザーに任せることがよくあります。変換用のお気に入りのツールがいくつかあります。そのうちの1つは、いわゆるスイスアーミーナイフの音です。 、SoX。

インストール

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

LinuxまたはBSDでは、 soxをインストールできます。 ソフトウェアリポジトリまたはポートツリーからのコマンド(およびいくつかの有用なシンボリックリンク)。

Sourceforge.netのホームからSoXをインストールすることもできます。頻繁にリリースされることはありませんが、コードベースは安定している傾向があるため、最新の機能(Opusサポートなど)が必要な場合は、簡単かつ安全に構築できます。

SoXは、主に soxを提供します コマンドですが、インストールするといくつかの便利なシンボリックリンクも作成されます: play rec 、および soxi

SoXを使用したファイルに関する情報の取得

SoXは、オーディオデータの読み取りと再書き込みを行います。書き換えられたオーディオデータを保存するかどうかはあなた次第です。たとえば、出力をスピーカーに直接送信して再生する場合など、変換されたデータを保存する必要がないユースケースがあります。ただし、変換を行う前に、最初に何を扱っているかを正確に判断することをお勧めします。

オーディオファイルに関する情報を収集するには、 soxiを使用します 指図。これはsox--infoへのシンボリックリンクです 。

$ soxi countdown.mp3
Input File     : '/home/tux/countdown.mp3'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.21 = 494185 samples...
File Size      : 179k
Bit Rate       : 128k
Sample Encoding: MPEG audio (layer I, II or III)

この出力により、オーディオファイルがエンコードされているコーデック、ファイルの長さ、ファイルサイズ、サンプルレート、およびチャネル数がわかります。これらのいくつかは考える あなたはすでに知っていますが、メディアがクライアントによって私にもたらされたときの仮定を私は決して信用しません。 soxiを使用してメディア属性を確認します 。

ファイルの変換

この例では、ゲーム番組のカウントダウンの音声がMP3ファイルとして配信されています。ほとんどすべての編集アプリケーションは圧縮オーディオを受け入れますが、実際に圧縮データを編集するものはありません。変換は、秘密のバックグラウンドタスクであろうと、コピーを保存するためのプロンプトであろうと、どこかで発生しています。私は通常、事前に自分で変換を行うことを好みます。このようにして、使用しているフォーマットを制御できます。編集アプリケーションがオンデマンドでメディアを処理するのを待つ貴重な制作時間を無駄にする代わりに、一晩で大量のメディアをまとめて作成できます。

ソックス コマンドは、オーディオファイルを変換するためのものです。 soxにはいくつかの段階があります パイプライン:

  • 入力
  • 組み合わせる
  • 効果
  • 出力

コマンド構文では、効果のステップは、紛らわしいことに、最後と書かれています。 。つまり、パイプラインは次のように構成されています。

input → combine → output → effects

エンコーディング

最も単純な変換コマンドには、入力ファイルと出力ファイルのみが含まれます。 MP3ファイルをロスレスFLACファイルに変換するコマンドは次のとおりです。

$ sox countdown.mp3 output.flac
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.18 = 493056 samples...
File Size      : 545k
Bit Rate       : 390k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

効果

エフェクトチェーンは、コマンドの最後で指定されます。データを最終的な宛先に送信する前に、オーディオを変更できます。たとえば、音声が大きすぎると、変換中に問題が発生する場合があります。

$ sox bad.wav bad.ogg
sox WARN sox: `bad.ogg' output clipped 126 samples; decrease volume?

ゲインを適用する 効果はこの問題を解決できることがよくあります:

$ sox bad.wav bad.ogg gain -1

フェード

もう1つの便利な効果は、フェードです。 。このエフェクトを使用すると、フェードインまたはフェードアウトの形状と、フェードにまたがる秒数を定義できます。

逆放物線を使用した6秒間のフェードインの例を次に示します。

$ sox intro.ogg intro.flac fade p 6

これにより、オーディオのヘッドに3秒のフェードインが適用され、8秒のマークからフェードアウトが開始されます(イントロ音楽はわずか11秒なので、この場合はフェードアウトも3秒です) :

$ sox intro.ogg intro.flac fade p 3 8

さまざまな種類のフェード(正弦、線形、逆放物線など)、およびオプションのフェード オファー(フェードイン、フェードアウト)は、 soxにリストされています マニュアルページ。

エフェクト構文

各エフェクトプラグインには独自の構文があるため、それぞれを呼び出す方法の詳細については、マニュアルページを参照してください。

エフェクトは、少なくともそれらを組み合わせたい範囲で、1つのコマンドでデイジーチェーン接続できます。つまり、フランジャーを適用するための構文はありません。 6秒間のフェードアウト中にのみ効果があります。より正確なものを得るには、グラフィカルな音波エディタ、またはLMMSやRosegardenなどのデジタルオーディオワークステーションが必要です。ただし、一度だけ適用したい効果がある場合は、同じコマンドでそれらをまとめて一覧表示できます。

このコマンドは-1のゲインを適用します エフェクト、テンポストレッチ 1.35、およびフェードアウト

$ sox intro.ogg output.flac gain -1 stretch 1.35 fade p 0 6
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:15.10 = 665808 samples...
File Size      : 712k
Bit Rate       : 377k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

オーディオの組み合わせ

SoXは、オーディオファイルを連結するか、ミキシングすることによって、オーディオファイルを結合することもできます。

参加する(または連結する )ファイルを1つにまとめ、コマンドで複数の入力ファイルを指定します:

$ sox countdown.mp3 intro.ogg output.flac

この例では、 output.flac カウントダウンが含まれるようになりました 音声、直後にイントロ 音楽。

ただし、2つのトラックを同時に再生したい場合は、-combine mixを使用できます。 オプション:

$ sox --combine mix countdown.mp3 intro.ogg output.flac

ただし、2つの入力ファイルがコーデックだけでなく異なると想像してみてください。ボーカルトラックがモノラル(1チャンネル)で録音されることは珍しくありませんが、音楽が少なくともステレオ(2チャンネル)で録音されることは珍しくありません。 SoXはデフォルトでソリューションを使用しないため、最初に2つのファイルの形式を自分で標準化する必要があります。

オーディオファイルの変更

にリストされているファイル名に関連するオプション それ。たとえば、-channels このコマンドのオプションはのみ適用されます input.wav example.oggではありません またはoutput.flac

$ sox --channels 2 input.wav example.ogg output.flac

これは、オプションの位置がSoXで非常に重要であることを意味します。コマンドの開始時にオプションを指定した場合、基本的には、入力ファイルからSoXが独自に収集するものをオーバーライドするだけです。 出力の直前に配置されたオプション ただし、ファイルはSoXがオーディオデータを書き込む方法を決定します。

互換性のないチャネルの以前の問題を解決するには、最初に入力を標準化し、次に混合することができます:

$ sox countdown.mp3 --channels 2 countdown-stereo.flac gain -1
$ soxi countdown-stereo.flac

Input File     : 'countdown-stereo.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.18 = 493056 samples...
File Size      : 545k
Bit Rate       : 390k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

$ sox --combine mix \
countdown-stereo.flac \
intro.ogg \
output.flac

SoXは、複雑なアクションに対して複数のコマンドを絶対に必要とするため、必要に応じていくつかの一時ファイルと中間ファイルを作成するのが通常です。

マルチチャンネルオーディオ

もちろん、すべてのオーディオが1つまたは2つのチャネルに制限されているわけではありません。複数のオーディオチャンネルを1つのファイルに結合する場合は、SoXと-結合マージを使用して行うことができます。 オプション:

$ sox --combine merge countdown.mp3 intro.ogg output.flac
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 3
[...]

簡単な音声操作

ビジュアルインターフェイスを使用せずにオーディオを操作するのは奇妙に思えるかもしれません。一部のタスクでは、SoXは間違いなく最高のツールではありません。ただし、多くのタスクに対して、SoXは簡単で軽量なツールキットを提供します。 SoXは、強力な可能性を秘めたシンプルなコマンドです。これを使用すると、オーディオを変換したり、チャネルや波形を操作したり、独自のサウンドを生成したりすることができます。この記事では、その機能の概要のみを説明しているため、マニュアルページまたはオンラインドキュメントを読んで、作成できるものを確認してください。


Linux
  1. Linuxで動作するための10のすばらしいヒントとコツ

  2. Locateコマンドを使用してLinuxでファイルをすばやく検索する

  3. Linuxでfdコマンドを使用してファイルを検索する方法

  1. SoundConverterを使用してLinuxでオーディオをバッチで変換する

  2. 例を含むwcLinuxコマンド

  3. 実用的な例を含む Linux rsync コマンド

  1. 検索コマンドを使用してLinuxでファイルを検索する方法

  2. Linuxipコマンドと例

  3. LinuxのRmコマンド