2017-04-14 2 views
0

私はオーディオファイルをたくさん持っており、無音に基づいて各ファイルを分割し、SOXを使用する必要があります。しかし、一部のファイルは非常にノイズの多い背景を持ち、一部のファイルは分割されているすべてのファイルを反復処理するために単一のパラメータセットを使用することはできません。私は騒々しいバックグラウンドでそれらをどのように分けるかを考え出します。ここで私は前者が騒々しい背景が含まれておらず、後者はないsox input1.flac -n statsox input2.flac -n statsoxを使用したオーディオ統計の説明

Samples read:   18207744 
Length (seconds): 568.992000 
Scaled by:   2147483647.0 
Maximum amplitude:  0.999969 
Minimum amplitude: -1.000000 
Midline amplitude: -0.000015 
Mean norm:   0.031888 
Mean amplitude: -0.000361 
RMS  amplitude:  0.053763 
Maximum delta:   0.858917 
Minimum delta:   0.000000 
Mean delta:   0.018609 
RMS  delta:   0.039249 
Rough frequency:   1859 
Volume adjustment:  1.000 

Samples read:   198976896 
Length (seconds): 6218.028000 
Scaled by:   2147483647.0 
Maximum amplitude:  0.999969 
Minimum amplitude: -1.000000 
Midline amplitude: -0.000015 
Mean norm:   0.156168 
Mean amplitude: -0.000010 
RMS  amplitude:  0.211787 
Maximum delta:   1.999969 
Minimum delta:   0.000000 
Mean delta:   0.091605 
RMS  delta:   0.123462 
Rough frequency:   1484 
Volume adjustment:  1.000 

から得たものです。大きなギャップのためSample MeanMax deltaであると私は思っています。 誰でも私のためにそれらの統計の意味を説明することができますか、私はそれを自分で得ることができます(私は公式の文書を見てみましたが、彼らは説明しません)。どうもありがとう。

答えて

1

私はこれらの統計の意味を説明することはできません。私は多くの場面で自分自身を理解しようとしましたが、どこにも書かれていないようです。個人的には、代わりにstat関数を使用して、その出力がはるかに理解しやすくなります。

多かれ少なかれ騒々しいオーディオを区別する尺度として、私は最高音圧レベルと最低音圧レベルの差を使ってみます。最も静かな部分はバックグラウンドノイズだけでは決して静かではありません。したがって、ほとんど違いがなければ、オーディオは常にノイズが多いか、まったく騒々しいです(例えば、compressed pop song)。最大RMS値と最小RMS値の差を取ることができます。 RMSウィンドウの長さはかなり短くしなければならず、オーディオにフェードインまたはフェードアウトのセクションがある場合は、それらを削除する必要がありますが、コードには含めませんでした。

audio="input1.flac" 
width=0.01 

peak=$(sox "$audio" -n channels 1 stats -w $width 2>&1 |\ 
    grep "Pk lev dB" |\ 
    sed 's/[^0-9.-]*//g') 
rmsmax=$(sox "$audio" -n channels 1 stats -w $width 2>&1 |\ 
    grep "RMS Pk dB" |\ 
    sed 's/[^0-9.-]*//g') 
rmsmin=$(sox "$audio" -n channels 1 stats -w $width 2>&1 |\ 
    grep "RMS Tr dB" |\ 
    sed 's/[^0-9.-]*//g') 
rmsdif=$(echo "($rmsmax)-($rmsmin)" | bc -l) 
pkmindif=$(echo "($peak)-($rmsmin)" | bc -l) 

echo " 
    max RMS: $max 
    min RMS: $min 

    diff RMS: $rmsdif 
    peak-min: $pkmindif 
" 
関連する問題