matlab混合音频维度不同,指定语音按一定信噪比加噪说维度不一致

本帖最后由 谁给我改了名 于 2017-5-21 10:01 编辑

老师,我自己录了一段语音,用您的add-noisfile函数加一定信噪比的指定噪声,为什么总说内部维度不一致,请问是什么原因呢

%

% pr7_1_1

close all;clear all; clc;

[filename,pathname] = uigetfile('*.wav','请选择语音文件:');

[filename1,pathname1] = uigetfile('*.wav','请选择噪声文件:');

filepath_name = [pathname1 filename1];

[s,fs] = wavread([pathname filename]);

[r1,r2] = add_noisefile(s,filepath_name,15,fs);

add-noisefile函数是

function [y,noise] = add_noisefile(s,filepath_name,SNR,fs)

s=s(:);                             % 把信号转换成列数据

s=s-mean(s);                        % 消除直流分量

[wavin,fs1,nbits]=wavread(filepath_name);   %读入噪声文件的数据

wavin=wavin(:);                     % 把噪声数据转换成列数据

if fs1~=fs                          % 纯语音信号的采样频率与噪声的采样频率不相等

wavin1=resample(wavin,fs,fs1);  % 对噪声重采样,使噪声采样频率与纯语音信号的采样频率相同

else

wavin1=wavin;

end

wavin1=wavin1-mean(wavin1);         % 消除直流分量

ns=length(s);                       % 求出s的长度

noise=wavin1(1:ns);                 % 把噪声长度截断为与s等长

noise=noise-mean(noise);            % 噪声去除直流分量

signal_power = 1/ns*sum(s.*s);      % 求出信号的能量

noise_power=1/ns*sum(noise.*noise); % 求出噪声的能量

noise_variance = signal_power / ( 10^(SNR/10) );   % 求出噪声设定的方差值

noise=sqrt(noise_variance/noise_power)*noise;      % 调整噪声幅值

y=s+noise;                          % 构成带噪语音

ab1c7ee18da4dfd6bd0e53ac6dfdfdba.gif

2017-5-21 10:01 上传

点击文件名下载附件

54.99 KB, 下载次数: 4

ab1c7ee18da4dfd6bd0e53ac6dfdfdba.gif

2017-5-21 10:01 上传

点击文件名下载附件

13.65 KB, 下载次数: 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值