首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中对语音进行不同采样率的噪声添加

在matlab中对语音进行不同采样率的噪声添加
EN

Stack Overflow用户
提问于 2017-03-10 05:41:43
回答 1查看 327关注 0票数 1

我正在尝试向语音信号(.wav)添加噪声文件(.wav)。

代码语言:javascript
复制
[b fs]=audioread('AzBio_01-01_S60.wav');
[babble fs1]=audioread('cafeteria_babble.wav');

问题是这两个文件具有不同的采样率(fs=22050、fs1=44100)。

当我将它们相加时,由于采样率不同,它会使另一个信号失真。我该怎么解决这个问题。我正在通过via播放声音

代码语言:javascript
复制
 p=audioplayer (total,fs)
  play (p)
EN

回答 1

Stack Overflow用户

发布于 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))

所以总而言之

代码语言:javascript
复制
[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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42705989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档