2017-04-15 16 views
1

私はこれまでDSP.SEでこの質問をしましたが、私の質問には何の注意もありません。たぶんそれは信号処理にはあまり関係していなかったでしょう。オーディオ信号にゼロローカル信号を得る良い方法はありますか?

個別のオーディオ信号をいくつかのセグメントに分割して統計処理と分析を行う必要がありました。したがって、局所的に固定されたセグメントは、私の場合に非常に役立ちます。セグメントの長さは予め定義されている。 サンプル。

私はいくつかのことを試しました。私は、セグメントにオーディオ信号を分割するreshape()関数を使用しない、そして次にとして各セグメントの手段を計算する:各seg(:,k)からx(k)を引くと各局所平均がゼロになるだろう

L = 512;        % Length of segment 
N = floor(length(audio(:,1))/L);  % Number of segments 
seg = reshape(audio(1:N*L,1), L, N); % Reshape into LxN sized matrix 
x = mean(seg);       % Calculate mean of each column 

、まだときセグメントは、オーディオ信号をたくさん歪めることになります再び結合される。

ので、ハニング窓の平均値は、ほぼ0.5、各seg(:,k)から2*x(k)*hann(L)をsubstractingされているので、私が試した最初のものでした。しかし、今度は、 (ハニング窓の平均をとほぼ等しくする)を乗じては、各セグメント自体の中点の近傍を歪めた。

enter image description here

そして、私の代わりに直接乗算し、各seg(:,k)から(下図に示すように)これらを減算小さいハニング窓により畳み込みを使用しています。

enter image description here

この最後のステップは、より良い結果を与え、まだセグメントが小さい場合、それはまだ非常に便利ではありません。私はさまざまな問題のためにこのサイトで多くの素晴らしいアプローチを見てきました。だから私はちょうど巧妙な方法やオーディオ信号を少なく歪めるローカルゼロを得るための既存の方法があるのだろうかと思う。私はこれを読んで、このプロパティは、EMDのようないくつかの分解で有用です。だから私はそのような分解が必要かもしれない?

+0

おそらくあなたは、局所的な平均、プロセスを引く必要があり、その後、一緒にバックセグメントに参加する前に、再び背中に局所的な平均を追加します。また、セグメントを重ねて(たとえば50%)、再結合するとセグメント間でフェードすることもできます。 – mikado

+0

@mikado私は地元の手段を戻さない。私はブラインド処理のためにこの操作が必要です。私は、各セグメントのローカル平均値をゼロにしながらオーディオファイルの歪みを少なくする良い方法を探しています。あなたの助言に感謝します。 – kdrtkl

答えて

1

あなたは、移動平均フィルタを使用しようとすることができます:

x = cumsum(rand(15*512, 1)-0.5); % generate a random input signal 
mean_filter = 1/512 * ones(1, 512); % generate a mean filter 
mean = filtfilt(mean_filter, 1, x); % filtfilt is used instead of filter to obtain a symmetric moving average. 

% plot the result 
figure 
subplot(2,1,1) 
plot(x); 
hold on 
plot(mean); 
subplot(2,1,2) 
plot(x - mean); 

あなたはできる平均フィルタの間隔を変更することで調整するフィルタを。狭い間隔を使用すると、各インターバル内の平均値が低くなりますが、信号のうち低周波もフィルタリングされます。

enter image description here

+0

私はあなたのソリューションをmatlabでオーディオ信号で試してみましたが、各セグメントのローカル平均値が0になっていません。これらのセグメントのローカル平均の最大値は** 0.035 **以前であり、ソリューションでは0.021 **になる必要があります。しかし、私はそれをゼロに近いveeeryにする必要があります。私は 'filtfilt()'フィルターについて知らなかったので、あなたの答えに感謝します。あなたは私の+1を持っています:) – kdrtkl

+0

私はそれがあなたに適しているかどうかわかりませんチューニングオプションを追加しました。がんばろう。 – m7913d

+1

また、このメソッドを最初に使用し、その後、あなたの質問に記載されているメソッドを試すことができます。これはおそらく、メソッドを直接適用するよりも歪みが少なくなります。 – m7913d

関連する問題