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

Sound eXchange (SoX) を使用してオーディオ ファイルを操作する 15 のすばらしい例


写真提供:Sean dreilinger


この記事は、進行中の Software for Geeks シリーズの一部です。 SoX だからの略 und eX 変化する。 SoX は、Linux、Windows、および MacOS で動作するクロスプラットフォームのコマンド ライン オーディオ ユーティリティ ツールです。オーディオおよび音楽ファイルを扱う際に、次の領域で非常に役立ちます。

  • オーディオ ファイル コンバーター
  • 音声ファイルの編集
  • 音声属性の変更
  • 音声効果の追加
  • さらに多くの高度なサウンド操作機能


一般に、音声データは次の 4 つの特徴によって記述されます。

<オール>
  • Rate – サンプル レートは 1 秒あたりのサンプル数です。例:44100/8000
  • データサイズ – データが保存される精度。例:8/16 ビット
  • データ エンコーディング – データ型が使用するエンコーディング。例:u-law,a-law
  • チャンネル – 音声データに含まれるチャンネルの数。例:ステレオ 2 チャンネル
  • SoX は 20 以上のオーディオ ファイル形式をサポートしています。サポートされているすべての形式のリストを取得するには、コマンド ラインから sox -h を実行します。コマンドライン オーディオ/音楽ツールの主な利点の 1 つは、スクリプトで簡単に使用して、より複雑なタスクをバッチ モードで実行できることです。

    以下に示す 15 の例はすべて、Unix、Windows、および MacOS でオーディオ ファイルを操作するために使用できます。お使いのプラットフォームに対応する SoX ユーティリティを SoX – Sound eXchange ダウンロード ページからダウンロードしてください。

    1.複数の音声ファイルを 1 つのファイルに結合

    -m フラグを指定すると、sox は 2 つの入力ファイルを一緒に追加して出力を生成します。以下の例では、first_part.wav と second_part.wav を追加して、結果を whole_part.wav に残します。この目的で soxmix コマンドを使用することもできます。

    $ sox -m first_part.wav second_part.wav whole_part.wav
    
    (or)
    
    $ soxmix first_part.wav second_part.wav whole_part.wav

    2.音声ファイルの一部を抽出

    トリムは、オーディオ ファイルから不要なオーディオをトリムできます。

    Syntax : sox old.wav new.wav trim [SECOND TO START] [SECONDS DURATION].
    • SECOND TO START – 音声ファイルの開始点
    • SECONDS DURATION – 削除する音声ファイルの長さ

    以下のコマンドは、input.wav から最初の 10 秒を抽出し、output.wav に保存します

    $ sox input.wav output.wav trim 0 10

    3.オプション -v を使用して音量を上げ下げする

    オプション -v は、音量を変更 (増加または減少) するために使用されます。

    音量を上げる

    $ sox -v 2.0 foo.wav bar.wav

    音量を下げる

    一部のファイルの音量を下げる必要がある場合は、負の数を使用して下げることができます。負の数を下げると、よりソフトになります。次の例では、1 番目のコマンド (-0.5) は 2 番目のコマンド (-0.1) よりも大きくなります

    $ sox -v -0.5 srcfile.wav test05.wav
    
    $ sox -v -0.1 srcfile.wav test01.wav

    4.音声ファイル情報を取得

    stat オプションは、特定のオーディオ ファイルに関する多くの統計情報を提供できます。 -e フラグは、統計情報以外の出力を生成しないように sox に指示します。

    $ sox foo.wav -e stat
    Samples read: 3528000
    Length (seconds): 40.000000
    Scaled by: 2147483647.0
    Maximum amplitude: 0.999969
    Minimum amplitude: -1.000000
    Midline amplitude: -0.000015
    Mean norm: 0.217511
    Mean amplitude: 0.003408
    RMS amplitude: 0.283895
    Maximum delta: 1.478455
    Minimum delta: 0.000000
    Mean delta: 0.115616
    RMS delta: 0.161088
    Rough frequency: 3982
    Volume adjustment: 1.000

    5.オーディオ ソングを再生する

    Sox は、サウンド ファイルを再生および録音するためのオプションを提供します。この例では、Unix、Linux でオーディオ ファイルを再生する方法について説明します。 サウンド ファイルを再生するには、ファイルをデバイス スペシャル ファイル /dev/dsp にコピーします。次のコマンドはファイル music.wav を再生します:オプション -t は、ファイル /dev/dsp のタイプを指定します。

    $ sox music.wav -t ossdsp /dev/dsp

    以下に示すように、play コマンドを使用して音声ファイルを再生することもできます。

    Syntax :play options Filename audio_effects
    
    $ play -r 8000 -w music.wav

    6.オーディオ ソングを逆方向に再生

    「リバース」エフェクトを使用して、サウンド ファイルのサウンドを逆にします。これにより、ファイルが逆になり、結果が output.wav に保存されます

    $ sox input.wav output.wav reverse

    以下に示すように、ソース ファイルを変更せずに再生コマンドを使用して曲を逆再生することもできます。

    $ play test.wav reverse

    7.音声ファイルを録音

    「play」および「rec」コマンドは、 sox のコンパニオン コマンドです。 /dev/dsp は、デジタル サンプリングおよびデジタル録音デバイスです。デバイスを読み取ると、録音と分析のために A/D コンバータがアクティブになります。 /dev/dsp ファイルは、サウンド サンプルの再生と録音の両方に使用できます。

    $ sox -t ossdsp /dev/dsp test.wav

    rec コマンドを使用して音声を録音することもできます。 SoX が「rec」として呼び出される場合、デフォルトのサウンド デバイスが入力ソースとして使用されます。

    $ rec -r 8000 -c 1 record_voice.wav

    8.サウンド ファイルのサンプリング レートの変更

    サウンド ファイルのサンプリング レートを変更するには、オプション -r の後に使用するサンプル レートをヘルツ単位で指定します。次の例を使用して、ファイル「old.wav」のサンプリング レートを 16000 Hz に変更し、出力を「new.wav」に書き込みます。

    $ sox old.wav -r 16000 new.wav

    9.サウンド ファイルのサンプリング サイズの変更

    サンプリングサイズを大きくすると、品質が向上します。オーディオのサンプル サイズは、ほとんどの場合、8 ビットまたは 16 ビットで表されます。 8 ビット オーディオは、音声録音によく使用されます。

    • -b サンプル データ サイズ (バイト単位)
    • -w サンプル データ サイズ (単語単位)
    • -l ロングワードでのサンプルデータサイズ
    • -d ダブルロングワードでのサンプルデータサイズ

    次の例では、8 ビットのオーディオ ファイルを 16 ビットのオーディオ ファイルに変換します。

    $ sox -b input.wav -w output.wav

    10.チャンネル数の変更

    次の例では、モノ オーディオ ファイルをステレオに変換します。 .オプション -c を使用して、チャネル数を指定します。

    $ sox mono.wav -c 2 stereo.wav

    ステレオ サウンド ファイルをモノラル サウンドに変換する方法があります .つまり、ステレオ ファイルから 1 つのチャンネルを取得します。

    特定のチャンネルを選択する

    これは、使用するチャネルを示すオプションを指定して avg 効果を使用することによって行われます。オプションは、左は -l、右は -r、前は -f、後ろは -b です。次の例では、左チャンネルを抽出します

    $ sox stereo.wav -c 1 mono.wav avg -l

    チャンネルを平均化

    $ sox stereo.wav -c 1 mono.wav avg

    11.オーディオ コンバーター – 音楽ファイル形式の変換

    Sox は、あるオーディオ形式を別の形式に変換するのに便利です。つまり、あるエンコーディング (ALAW、MP3) から別のエンコーディングへ。 Sox は、ファイル名の拡張子を解析することにより、入力形式と目的の出力形式を認識できます。 infile.ulaw を受け取り、outfile.gsm という GSM エンコード ファイルを作成します。 sox を使用して wav を mp3 に 変換することもできます .

    $ sox infile.ulaw outfile.gsm

    ファイルの名前に拡張子がない場合は、「-t」オプションを使用して意図を表現できます。オプション -t は、エンコード タイプを指定するために使用されます。

    $ sox -t ulaw infile -t gsm outfile

    12.さまざまな種類のサウンドを生成

    シンセ エフェクトを使用すると、多くの標準的な波形と種類のノイズを生成できます。この効果はオーディオを生成するために使用されますが、入力ファイルを指定する必要がありますが、「-n」オプションを使用して入力ファイルをヌル ファイルとして指定します。

    $ sox -n synth len type freq
    • レン – 合成するオーディオの長さ。時間の長さを指定する形式は hh:mm:ss.frac です
    • タイプ sine、square、triangle、sawtooth、trapezium、exp、[white]noise、pinknoise、brown-
      noise のいずれかです。デフォルトは正弦です
    • f 必須 – 合成の開始/終了時の周波数 (Hz)

    次の例では、300 から 3300 Hz まで掃引された正弦波を含む 3 秒間の 8000 kHz オーディオ ファイルを生成します。

    $ sox -r 8000 -n output.au synth 3 sine 300-3300

    13.オーディオ ファイルのサウンドを高速化

    ファイルのサウンドの速度を上げたり下げたりするには、speed を使用してファイルのピッチとデュレーションを変更します。これにより、速度が上がり、時間が短縮されます。デフォルトの係数は 1.0 で、オーディオは変更されません。 2.0 は速度を 2 倍にするため、時間の長さは半分になり、ピッチは 1 音程高くなります。

    Syntax: sox input.wav output.wav speed factor
    
    $ sox input.wav output.wav speed 2.0

    14. 1 つのコマンドで音声ファイルを複数変更

    デフォルトでは、SoX は、入力データと同じデータ型、サンプル レート、およびチャネル数を使用してオーディオ データを書き込もうとします。ユーザーが出力ファイルを別の形式にしたい場合、ユーザーは形式オプションを指定する必要があります。出力ファイル形式が、指定された入力ファイル形式と同じデータ型、サンプル レート、またはチャネル数をサポートしていない場合、SoX はサポートする最も近い値を自動的に選択します。

    wav を raw に変換します。次の例では、単一のコマンド ラインでサンプリング レート、サンプリング サイズ、チャネルを変換します。

    $ sox -r 8000 -w -c 1 -t wav source -r 16000 -b -c 2 -t raw destination

    15.生のオーディオ ファイルを MP3 音楽ファイルに変換

    mp3 は raw ファイルからの圧縮情報を必要とするため、raw を mp3 ファイルに直接変換する方法はありません。まず、raw を wav に変換する必要があります。次に、wav を mp3 に変換します。以下の例では、オプション -h は高品質を示しています。

    Raw 形式を Wav 形式に変換:

    $ sox -w -c 2 -r 8000 audio1.raw audio1.wav

    Wav 形式を MP3 形式に変換:

    $ lame -h audio1.wav audio1.mp3


    この記事は SelvaGaneshan によって書かれました。 S 彼は bk Systems (p) Ltd で働いており、オープン ソースへの貢献に関心があります。 The Geek Stuff は、あなたのヒントやゲスト記事を歓迎します


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

    2. Linuxでファイルをダウンロードするための5つのWgetコマンドの例。

    3. Linuxのコマンドラインを使用してファイルを作成する

    1. Linux / UNIX でファイルを管理する 10 の Cat コマンドの例

    2. 7 Linux で差分パッチ ファイルを適用するパッチ コマンドの例

    3. scp を使用してファイルの .txt ファイル リストを転送する

    1. Ansibleガイド:Ansibleを使用してファイルを管理する

    2. Linuxのfindコマンドの使用–例を使用した使用法

    3. LinuxでのLogrotateの使用ログファイルの管理(例を含む)