clear all
%% 读取信号添加高斯白噪声并播放
fs1=1e5; %设定采样率为100kHz
[x1,fs] = audioread('庐州月_2_1.wav'); % 输入第一路信号
x1=resample(x1,fs1,fs); %对采样率进行调整
fs=fs1;
snr=20; % 设置告诉白噪声与信号的信噪比
px_dBW=0; %信号指定功率
x1=awgn(x1,snr,px_dBW); % 调用awgn函数为信号添加高斯白噪声
[x2,fs] = audioread('标准录音1.mp3');
x2=x2*4; %对第二段音频本身响度低,响度进行增强
x2=resample(x2,fs1,fs);
fs=fs1;
x2=awgn(x2,snr,px_dBW);
%% 绘制信号时域和频域图
figure(1);
subplot(221);
N1=length(x1);
N2=length(x2);
N=max(N1,N2); %取两路信号中较长的那路长度作为下面信号操纵的长度,保证信号长度一致
x1=[x1;zeros(N-N1,2)]; %对较短的信号进行补零
x2=[x2;zeros(N-N2,2)];
t=(0:N-1)/fs;% 计算时间坐标
plot(t,x1);
xlabel("时间");
ylabel("幅度");
title("第一路信号时域图");
subplot(223);
y=abs(fftshift(fft(x1))); %快速傅里叶变换的幅值
f=(0:N-1)*fs/N-fs/2; %将横坐标转化,并对齐零点,显示为频率f
plot(f,y);
xlabel('频率');
ylabel('幅度');
title("第一路信号频域图");
subplot(222);
plot(t,x2);
xlabel("时间");
ylabel("幅度");
title("第二路信号时域图");
subplot(224);
y=abs(fftshift(fft(x2))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率');
ylabel('幅度');
title("第二路信号频域图");
%% 配置载波
f1=3.5e4; %第一路载波
y1=sin(2*pi*f1*t);
f2=2.5e4; %第二路载波
y2=sin(2*pi*f2*t);
%% 用AM调制方式将信号分别叠加到载波上
x1=x1+1;
z1=x1.*y1';
figure(2);
subplot(221);
plot(t,z1);
xlabel("时间");
ylabel("幅度");
title("第一路信号与载波叠加的时域图");
subplot(223);
y = abs(fftshift(fft(z1))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率');
ylabel('幅度');
title("第一路信号与载波叠加的频域图");
x2=x2+1;
z2=x2.*y2';
subplot(222);
plot(t,z2);
xlabel("时间");
ylabel("幅度");
title("第二路信号与载波叠加的时域图");
subplot(224);
y = abs(fftshift(fft(z2))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率');
ylabel('幅度');
title("第二路信号与载波叠加的频域图");
%% 信号在空间中叠加
z=z1+z2;
%% 信号分离
z1=filter(Chebyshev_two_high_15_100000_30000,z); %以30kHz为界,分开两路信号
z2=filter(Chebyshev_two_low_15_100000_30000,z);
%% 相干解调
r1=z1.*y1'; %对第一路信号使用相干解调方法进行解调
r1=2*(r1-0.5); %中心回归零位并调整与原信号幅度一致
r1=filter(Chebyshev_two_low_10_100000_20000,r1); %设计切比雪夫二型低通滤波器进行滤波,滤除载波信号,保留音频信号
figure(3);
subplot(221);
plot(t,r1);
xlabel("时间");
ylabel("幅度");
title("解调出的第一路音频时域图");
subplot(223);
z = abs(fftshift(fft(r1))); %快速傅里叶变换的幅值
plot(f,z);
xlabel('频率');
ylabel('幅度');
title("解调出的第一路音频频域图");
r2=z2.*y2'; %对第二路信号使用相干解调方法进行解调
r2=2*(r2-0.5); %中心回归零位并调整与原信号幅度一致
r2=filter(Chebyshev_two_low_10_100000_20000,r2); %设计切比雪夫二型低通滤波器进行滤波,滤除载波信号
subplot(222);
plot(t,r2);
xlabel("时间");
ylabel("幅度");
title("解调出的第二路音频时域图");
subplot(224);
z = abs(fftshift(fft(r2))); %快速傅里叶变换的幅值
plot(f,z);
xlabel('频率');
ylabel('幅度');
title("解调出的第二路音频频域图");
%% 暂停等待播发,按任意键结束程序
sound(r1,fs); %播放解调出的第一路音频
pause;
clear sound
sound(r2,fs); %播放解调出的第二路音频
pause;
% clear all
z1=filter(Chebyshev_two_high_15_100000_30000,z); %以30kHz为界,分开两路信号
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的语音处理+使用说明文档.zip
共8个文件
m:4个
wav:1个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 18 浏览量
2024-05-22
18:04:32
上传
评论
收藏 4.55MB ZIP 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的语音处理+使用说明文档.zip 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的语音处理+使用说明文档.zip (8个子文件)
语音处理
Chebyshev_two_low_10_100000_20000.m 625B
语音处理.mp4 1.75MB
Chebyshev_two_low_15_100000_30000.m 625B
main.m 3KB
庐州月_2_1.wav 2.52MB
Chebyshev_two_high_15_100000_30000.m 630B
标准录音1.mp3 562KB
使用说明文档.md 13KB
共 8 条
- 1
资源评论
IT狂飙
- 粉丝: 4779
- 资源: 2640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功