数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形

2024-06-04 4211阅读

一.主要功能:

(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秒钟的录音(可自行更改时间)

声音信号由系统麦克风进行采集(本实验采用周杰伦青花瓷副歌部分第一句)

采集后首先记录录制语音信号的时域图像和录制的信号频谱图

如下图所示:

数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第1张

随后对采集到的声音信号进行高低频分析,分析后得到重建的低频和高频分量时域图像

如下图所示:

数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第2张

后续测试了几组以高频为主和以低频为主的声音信号

高频(2500Hz以上逐步增高):

数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第3张数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第4张

低频(600Hz以下):

数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第5张数字信号处理:通过matlab实现录制一段语音信号并绘制时域图形 第6张

课程实验,完成的可能并不是很理想,欢迎各位大佬指正。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]