数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形
下水道里的翔某 2024-06-12 16:35:02 阅读 61
一.主要功能:
(1)使用 matlab 录制一段语音信号并绘制时域图形;
(2)用 fft 函数及其它相关函数绘制该信号的频谱;
(3)设计滤波器, 分别提取该信号的高频、 低频分量, 并用多种函数将不同频率分量恢复为语音信号, 播放并与原始信号作比较。 分析语 音信号中高、 低频分量的特点。
二. 主要代码:
% 录制语音duration = 5; % 录音时长(秒)fs = 44100; % 采样率(Hz)recObj = audiorecorder(fs, 16, 1); % 创建录音对象disp('开始录音...');recordblocking(recObj, duration); % 录制指定时长的语音 disp('录音结束.');% 获取录制的语音数据data = getaudiodata(recObj); % 获取录制的音频数据% 生成时间轴time = (0:length(data)-1) / fs; % 根据采样率计算时间轴% 绘制时域图像figure;subplot(2, 1, 1);plot(time, data);xlabel('时间 (秒)');ylabel('幅度');title('录制的语音信号时域图像');% 计算语音信号的频谱n = length(data);frequencies = (0:n-1) * (fs / n); % 计算频率轴transformed_data = fft(data) / n; % 执行FFT% 只取频谱的前一半(单边频谱)half_n = floor(n / 2);transformed_data = transformed_data(1:half_n);frequencies = frequencies(1:half_n);% 绘制频谱图subplot(2, 1, 2);plot(frequencies, abs(transformed_data));xlabel('频率 (Hz)');ylabel('幅度');title('录制的语音信号频谱图');% 设计低通和高通滤波器cutoff_low = 2000; % 低通滤波器截止频率(Hz)cutoff_high = 4000; % 高通滤波器截止频率(Hz)[b_low, a_low] = butter(6, cutoff_low/(fs/2), 'low'); % 6阶巴特沃斯低通滤波器设计[b_high, a_high] = butter(6, cutoff_high/(fs/2), 'high'); % 6阶巴特沃斯高通滤波器设计% 应用低通和高通滤波器filtered_low = filter(b_low, a_low, data); % 低频分量filtered_high = filter(b_high, a_high, data); % 高频分量% 使用逆变换将低频和高频分量还原为语音信号reconstructed_low = ifft(fftshift(fft(filtered_low))); % 还原低频分量reconstructed_high = ifft(fftshift(fft(filtered_high))); % 还原高频分量% 播放低频和高频分量重建的语音信号并与原始信号进行比较sound(data, fs); % 播放原始语音信号pause(duration + 1); % 等待播放完成sound(real(reconstructed_low), fs); % 播放低频分量pause(duration + 1); % 等待播放完成sound(real(reconstructed_high), fs); % 播放高频分量pause(duration + 1); % 等待播放完成% 绘制重建信号的时域图像figure;subplot(2, 1, 1);plot(time, real(reconstructed_low));xlabel('时间 (秒)');ylabel('幅度');title('重建的低频分量时域图像');subplot(2, 1, 2);plot(time, real(reconstructed_high));xlabel('时间 (秒)');ylabel('幅度');title('重建的高频分量时域图像');
三. 功能实现:
首先进行一段10秒钟的录音(可自行更改时间)
声音信号由系统麦克风进行采集(本实验采用周杰伦青花瓷副歌部分第一句)
采集后首先记录录制语音信号的时域图像和录制的信号频谱图
如下图所示:
随后对采集到的声音信号进行高低频分析,分析后得到重建的低频和高频分量时域图像
如下图所示:
后续测试了几组以高频为主和以低频为主的声音信号
高频(2500Hz以上逐步增高):
低频(600Hz以下):
课程实验,完成的可能并不是很理想,欢迎各位大佬指正。
上一篇: SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis
下一篇: 【大数据】HDFS、HBase操作教程(含指令和JAVA API)
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。