归一化两个音频信号的能量

时间:2015-06-25 15:06:52

标签: matlab audio normalization envelope

我有不同的音频信号,我想确保它们都具有相同的能量。目标是当我演奏它们时听起来相同(相同音量)。 我尝试了以下方法(如上所述)但是当我播放它们时听起来不同。另外,如果我在我应用的归一化之后计算能量,则它是不同的。我做错了什么?

我的工作是: 1)使用具有希尔伯特变换的包络计算每个音频信号的能量,

% Calculate the envelope
envelope = abs(hilbert(wave));

% Calculate the energy in the sound
energyInSound=sum(envelope.^2)

2)确保他们拥有相同的能量,

for channel=1:2
        regWave(:,channel) =  1000.* wave(:,channel)./energyInSound(channel);
end

1 个答案:

答案 0 :(得分:0)

我所做的(两个相同长度的信号)是将最大能量的信号乘以sqrt(energyRatio),再乘以另一个。* energyRatio。

tempSig1 = sig1.*energyRatio;
tempSig2 = sig2.*sqrt(energyRatio);

这会将信号的能量值更改为相等。