我正在尝试向语音信号(.wav)添加噪声文件(.wav)。
[b fs]=audioread('AzBio_01-01_S60.wav');
[babble fs1]=audioread('cafeteria_babble.wav');问题是这两个文件具有不同的采样率(fs=22050、fs1=44100)。
当我将它们相加时,由于采样率不同,它会使另一个信号失真。我该怎么解决这个问题。我正在通过via播放声音
p=audioplayer (total,fs)
play (p)发布于 2017-03-10 06:15:14
失真是由于采样值总和大于1,而不是采样率差异造成的。为了处理这种风险,在求和之前,将两个向量除以2。
也就是说,您仍然需要处理采样率差异。有两种方法可以做到这一点:要么降低采样率较高的信号的采样率,要么提高另一个信号的采样率。
用较高的采样率降低信号的采样率比较容易,但也有一个缺点,那就是您实际上正在丢失数据。您可以使用resample来完成此操作。resample(babble, fs, fs1)
或者,您可以使用较低的采样频率对信号进行上采样。这不会给你更多的数据,但它将意味着采样率匹配。您可以使用interp1来实现这一点。b = interp1(1:length(b),b,0.5:0.5:length(b))
所以总而言之
[b fs]=audioread('AzBio_01-01_S60.wav');
[babble fs1]=audioread('cafeteria_babble.wav');
b = interp1(1:length(b),b,0.5:0.5:length(b)); % interpolate b to fs1
total = b/2 + babble/2; % sum at half the sample values
p=audioplayer (total,fs1);
play (p)https://stackoverflow.com/questions/42705989
复制相似问题