Matlab音频处理一些代码

保存.wav

audiowrite(filename,y,Fs)
audiowrite(filename,y,Fs,Name,Value)

播放.wav

%方法1
[filename,pathname]=uigetfile('.wav','选择原始声音文件');
file=[pathname,filename];
fs = audioinfo(file).SampleRate;
[x,fs] = audioread(file);
sound(x,fs);

% 方法2
filename=strcat('doing_the_dishes.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
nbits = 8;
player=audioplayer(x,fs,nbits);
play(player)

% 要终止播放的时候只需
clear sound
% 或者
clear player

给一段音频添加指定的噪声

function [Y, NOISE] = add_noise(X, filepath_name, SNR, fs_X)
    % add_noisem add determinated noise to a signal.
    % X is a signal, and its sample frequency is fs;
    % filepath_name is NOISE's path and name, and the SNR is signal to
    % noise ratio in dB.
    
    [wavin, fs1] = audioread(filepath_name);
    if fs1~=fs_X
        wavin1 = resample(wavin, fs_X, fs1);
    else
        wavin1 = wavin;
    end
    nx = size(X,1);
    NOISE = wavin1(1:nx);
    NOISE = NOISE - mean(NOISE);
    signal_power = 1/nx*sum(X.*X);
    noise_variance = signal_power / (10^(SNR/10));
    NOISE = sqrt(noise_variance)/std(NOISE)*NOISE;
    Y = X + NOISE;
end

信噪比为10,-3,5如下图所示
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值