0

私はMatLabに取り組んでおり、自分自身を改善しようとしています。

私は現在、いくつかの.wavファイルを以下の関数でエコーバージョンに変換しました

function [ ] = lab2echo(alpha,m )

fil=wavread('daffy.wav'); 
fil=transpose(fil);
fil2=[fil zeros(1,m)];
shifting_fil=[zeros(1,m) fil];
fil_echo=alpha*shifting_fil;
result=fil2+fil_echo;
sound(result);
end

そして今、エコーされた音声を古いバージョンに変換する関数を書きたいと思います。

それを行う簡単な方法はありますか?

4

2 に答える 2

2

信号とそれ自体の相互相関を計算します。2つのピークが得られるはずです。ピーク間の差はエコー遅延である必要があります。

于 2012-11-07T17:24:27.210 に答える
0

おそらく簡単な方法ではありません。ただし、最初にxcorrを使用して信号自体を相互相関させ、ラグを見つけることを試みることができます。次に、エコーの寄与を推定し、それを差し引く必要があります。

のエネルギーを最小化する値alphaが存在する可能性がありますsignal + alpha*delayed_signal。ここで、alpha>0です。

于 2012-11-07T17:25:33.363 に答える