0

WAV ファイルのリストを含むプレーン テキスト ファイルがあります。

0001.wav 0002.wav
0003.wav 0004.wav
0005.wav 0006.wav 00007.wav 0008.wav
0009.wav
0010.wav
0011.wav 0012.wav 0013.wav
0014.wav
0015.wav

これらの同じファイルは、プレーン テキスト ファイルと同じフォルダーにあります。

sox を使用して複数のオーディオ ファイルをマージする方法によると、sox -m <filename> <filename> <filename>任意のファイルを .xml ファイルにマージするために使用できますsoxsox同じ行にリストされているすべてのファイルを 1 つのファイルにマージし、出力ファイルの名前を順番に付けるにはどうすればよいですか。

  • 0001.wav 0002.wav → m0001.wav
  • 0003.wav 0004.wav → m0002.wav
  • 0005.wav 0006.wav 00007.wav 0008.wav → m0003.wav
4

2 に答える 2

1

あなたはこれを行うことができるはずです:

#!/bin/bash

filename=$1
i=1

while IFS=" " read -r -a line
do
     sox ${line[@]} m$(printf "%04d" $i).wav
     let i+=1
done < $filename

ここでは、スクリプトの最初のパラメーターとして指定されたファイルを配列に読み取ります。ここではlineIFS=" "区切り文字にスペースを使用するように指示されています。タブを使用している場合は、これを に変更する必要がありますIFS="\t"

${line[@]}入力ファイル名の配列を展開します。

m$(printf "%04d" $i).wavmXXXX.wav 形式のファイル名を指定するように指示します。ここで、形式printfを取得するために使用されます。

i出力ファイル名に対して反復する変数です。

于 2013-11-15T04:12:56.187 に答える