音频波形信号处理:如何根据波形图分辨吉他是否已经调音,如何用matlab调整未调音的波形

查看: 3609|回复: 2|关注: 0
电脑录制wav,用MATLAB滤波器滤波 sound播放, wavread读取等
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
通过计算机开始--所有程序—附件—娱乐--录音机程序, 录制自已发音:宜宾学院,时间长度为2秒,通过文件—转换—8KHz,,8位,单声道 存为以自已名字命名的.wav文件。(计算机录音一般是采样率为44.1kHz,16位量化;为减小计算量,在录机的文件—属性—立即转换, 将声音数据转换为采样率8kHz,8位量化)
用wavread()读取声音文件,作图画出声音的时域波形,对其进行频谱分析,画出其频域波形。分析自已音频信号的特点。
设计IIR低通滤波器,要求通带截止频率为3.4KHz,阻带截止频率为3.9KHz,通带最大衰减为1dB,阻带最小衰减为25dB。画出所设计滤波器的幅频特性曲线,并用该滤波器对音频信号滤波,画出滤波后的音频信号的时域和频域波形,结合波形比较滤波前后的时域和频域信号。同时用sound回放滤波后的声音信号。
设计FIR带通滤波器,要求通带截止频率分别为300Hz和3.4KHz,阻带截止频率为100Hz和3.6KHz, 通带最大衰减为1dB,阻带最小衰减为35dB,要求画出该滤波器幅频特性曲线,并将自已音频信号通过该滤波器,然后画出通过滤波器后的时域和频域波形,结合波形比较滤波前后的时域和频域信号。同时用sound回放滤波后的声音信号。
结合自已音频信号,从理论上分析信号的频谱分辨率,采样点数,取样时间,采样频率的关系。
帖子最佳答案
关注者: 2316
拿到这样的题目,你应该开心的笑了,题目里把用什么函数都写的清清楚楚。
关于滤波器,你可以使用fdatool, 把你的要求输入进去即可,论坛也有相关的fdatool视频
math (博士、教授)Email: & &&&QQ:
我在网络上的言论、见解等只代表我个人的观念,与任何研究机构、商业公司等无关。欢迎你通过任何方式与我探讨学术和技术上的问题(学生提问的话,请在论坛上发帖提问)。最新日志:
<h1 style="color:# 麦片财富积分
关注者: 1
好好学习一下
站长推荐 /1
活动地点已更新
Powered by基于MATLAB的音频信号处理技术实现
基于MATLAB的音频信号处理技术实现
摘要:MATLAB是一款分析和处理功能都非常强大的科技应用软件,利用它可以灵活方便地分析处理音频信号。文章介绍了用MATLAB软件处理音频信号的基本流程,并以实例形式列出了几款技术实现程序。   关键词:MATLAB;数字信号处理;音频信号;脉冲编码调制;数字滤波
1 引言      MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件。它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,是一款数据分析和处理功能都非常强大的工程实用软件。本文介绍了用MATLAB处理音频信号的基本流程,并以实例形式列出了常用音频处理技术实现程序。      2 MATLAB处理音频信号的流程      分析和处理音频信号,首先要对声音信号进行采集,MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集[1]。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播放。本文以WAV格式音频信号作为分析处理的输入数据,用MATLAB处理音频信号的基本流程是:先将WAV格式音频信号经wavread 函数转换成MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转换成WAV格式文件或用sound、wavplay等函数直接回放。下面分别介绍MATLAB在音量标准化、声道分离合并与组合、数字滤波、数据转换等音频信号处理方面的技术实现。      3 音量标准化      录制声音过程中需对声音电平进行量化处理,最理想的量化是最大电平对应最高量化比特,但实际却很难做到,常有音轻问题。利用MATLAB很容易实现音量标准化,即最大电平对应最高量化比特。基本步骤是:先用wavread函数将WAV文件转换成列数组变量;再求出数组变量的极值并对所有元素作归一化处理;最后用wavwrite函数还原成音量标准化的WAV文件。   例1:现以微软自带的&#8220;Windows XP 关机.wav&#8221;音频信号为例,先将其复制另存到文件名为XPexit.wav的MATLAB当前目录中,再通过音量标准化处理后保存为XPquit.wav文件。实现程序如下:      [Y,FS,NBITS]=wavread('XPexit.WAV');% 将WAV文件转换成变量
FS,NBITS,% 显示采样频率和量化比特   Ym=max(max(max(Y)),max(abs(min(Y)))),% 找出双声道极值   X=Y/Ym;% 归一化处理   wavwrite(X,FS,NBITS,'XPquit.wav')% 将变量转换成WAV文件   试听可知标准化处理后音量稍大。      4 声道分离合并与组合      立体声或双声道音频信号有左右两个声道,利用MATLAB实现双声道分离、两路声道合并和两个单声道组合成一个双声道等效果,实际上是利用了MATLAB的矩阵抽取、矩阵相加和矩阵重组运算。   例2:现以例1生成的XPquit.wav为例,实现分离、合并和组合处理的程序如下:      [x,FS,NBITS]=wavread('XPquit.WAV');% 将WAV文件转换成变量   x1=x(:,1);% 抽取第1声道   x2=x(:,2);% 抽取第2声道   wavwrite(x1,FS,NBITS,'XPquit1.WAV');% 实现1声道分离   wavwrite(x2,FS,NBITS,'XPquit2.WAV');% 实现2声道分离   %如果合并位置不对前面补0 %声道长度不对后面补0   x12=x1+x2;% 两路单声道列向量矩阵变量合并   x12m=max(max(x12),abs(min(x12))),% 找出极值   y12=x12./x12m;% 归一化处理   wavwrite(y12,FS,NBITS,'XPquit12.WAV');% 实现两路声道合并   %如果组合位置不对前面补0--声道长度不对后面补0   x3=[x1,x2];% 两路单声道变量组合   wavwrite(x3,FS,NBITS,'XPquit3.WAV');% 实现两路声道组合   可以试听声道分离、合并与组合的效果,也可对各文件大小进行比较。      5 数字滤波      数字滤波是常用的音频处理技术。可根据技术指标,先利用FDATool工具,设计一个数字滤波器[2],再用Filter或Filter2函数即可实现滤波处理。调用的Filter函数格式是:Y = filte (B,A,X) 。其中,B和A是滤波器传输函数的分子和分母系数,X是输入变量,Y是实现滤波后的输出变量。如果处理立体声音频信号,可分开处理,但用FIR滤波器时调用Filter2函数更方便。   例3:现以例2生成的XPquit12.wav为例,实现数字滤波的程序如下:      [X,FS,NBITS]=wavread('XPquit12.WAV');% 将WAV文件转换成变量   %利用FDATool设计一个LowpassButterworth滤波器   %指标FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB   B =[0.7,0.2];% 分子系数    未安装PDF浏览器用户请先下载安装原版页码:13原版全文  A =[1,-2.7,-0.4312];% 分母系数   Y=filter(B,A,X);% 实现数字滤波   t=(0:length(X)-1)/FS;% 计算数据时刻   subplot(2,2,1);plot(t,X);% 绘制原波形图   title('原信号波形图');% 加标题   subplot(2,2,3);plot(t,Y);% 绘制滤波波形图   title('滤波后波形图');% 加标题   xf=fft(X);% 作傅里叶变换求原频谱   yf=fft(Y);% 作傅里叶变换求滤波后频谱   fm=3000*length(xf)/FS;% 确定绘频谱图的上限频率   f=(0:fm)*FS/length(xf);% 确定绘频谱图的频率刻度   subplot(2,2,2);plot(f,abs(xf(1:length(f))));% 绘制原波形频谱图
title('原信号频谱图');% 加标题   subplot(2,2,4);plot(f,abs(yf(1:length(f))));% 绘制滤波后频谱图   title('滤波后信号频谱图');% 加标题   wavwrite(Y,FS,NBITS,'XPquitFilter.WAV');% 写成WAV文件   程序运行结果如图1所示。由图可知,滤波对波形影响不大,但对高频有较大衰减。试听会感觉到处理后的声音比较沉闷。      6 数据转换      数据转换是指改变音频格式中的采样频率或量化位数。转换原理是:先用矩阵插值或抽取技术实现变量变换,如果是抽取数据还需在变换前作滤波处理使之满足采样定理;变量变换完成后再用Wavwrite函数重新定义量化位数和采样频率即可实现数据转换。数据转换过程中,要注意采样频率与原始采样频率及插值或抽取系数的关系。MATLAB实现插值或抽取的函数有decimate、interp和resample,具体应用可参考有关文献[3]。这果以2倍抽取为例,将例3中经过滤波后产生的XPquitFilter.WAV文件进行数据转换处理。具体程序如下:      [x,FS,NBITS]=wavread('XPquitFilter.WAV');% 将WAV文件转换成变量   N=length(x);% 计算数据点数   % 不是偶数点化成偶数点   if mod(N,2)==0; N=N; else x(N)=[]; N=N-1;   % 原信号波形频谱分析   tx=(0:N-1)/FS;% 计算原信号数据点时刻   subplot(3,2,1);plot(tx,x);% 绘制原信号波形   title('原信号波形图');% 加标题   xf=fft(x);% 求原信号频谱   fx=(0:N/2)*FS/N;% 确定频谱图频率刻度   subplot(3,2,2);plot(fx,abs(xf(1:N/2+1)));% 绘制原信号频谱   title('原信号频谱图');% 加标题   % 实现数据抽取   k=[1:N/2];% 确定抽取位置   y=x(2*k);% 实现抽取后的数据   M=length(y);% 计算抽取后数据点数   % 抽取数据在原采样频率FS下的波形频谱分析   ty=(0:M-1)/FS;% 计算数据点时刻   subplot(3,2,3);plot(ty,y);% 绘制信号波形图   title('原采样率下新波形图');% 加标题   yf=fft(y);% 求频谱   fy=(0:M/2)*FS/M;% 确定频谱图频率刻度   subplot(3,2,4);plot(fy,abs(yf(1:M/2+1)));% 绘制频谱图   title('原采样率下新频谱图');% 加标题   % 抽取数据在FS/2采样频率下的波形频谱分析   tz=(0:M-1)/(FS/2);% 计算数据点时刻   subplot(3,2,5);plot(tz,y);% 绘制信号波形图   title('新采样率下新波形图');% 加标题   fz=(0:M/2)*(FS/2)/M;% 确定频谱图频率刻度   subplot(3,2,6);plot(fz,abs(yf(1:M/2+1)));% 绘制频谱图   title('新采样率下新频谱图');% 加标题   % 实现数据转换   wavwrite(y,FS/2,NBITS,'XPquit16B.WAV');% 音频格式PCM 11025Hz 16位   wavwrite(y,FS/2,NBITS/2,'XPquit8B.WAV');% 音频格式PCM 11025Hz 8位   运行程序,在得到的图形窗口中,执行Edit/Axes Properties&#8230;命令,再把各分图下X标签中的Limits设为0、0.01和0、1000,得到0—0.01秒的波形和0—1000Hz的频谱如图2所示。由图可知,在满足采样定律条件下,实现数据抽取,在原采样率下波形变密、频谱变宽且幅度减半,但在新采样率下波形和频谱都很好。通过试听输出文件还可感受处理效果。
7 结束语      MATLAB提供了许多专用工具箱,灵活利用这些工具箱和函数,可以实现很多信号处理任务。同时,MATLAB还支持用户对其函数进行二次开发,以满足不同要求。在信号处理过程中,MATLAB兼顾了专用工具软件的简单性和计算机程序语言的灵活性,特别是处理效果的可视性和可感知,有利于理解信号处理的本质,有利于激发学习和研究兴趣,也有利于培养MATLAB软件的操作技能。      参考文献:   [1] 陈宇锋.基于声卡和MATLAB的语音信号采集和处理[J].中国现代教育装备,-51.   [2] 张登奇.基于MATLAB的IIR数字滤波器设计[J].湖南理工学院学报,-29.   [3] Sanjit K.Mitra.数字信号处理[M].孙洪等译.北京:电子工业出版社,2005.   [4] 张志涌等.精通MATLAB6.5版[M].北京:北京航空航天出版社,2003.
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&下次自动登录
现在的位置:
& 综合 & 正文
MATLAB 的音频信号处理技术
声音数据输入输出函数:
可以方便地读写和文件,并可控制其中的位及频率。
wavread()和。
声音播放:
wavplay():播放声音文件。当然,也可以把处理后的
wav文件保存后再用其它工具播放。
wavrecordO:可以对处理后的文件进行录音。
PS:在日常生活中我们听到的声音一般都属于复音其声音信号由不同的振幅与频率的波合成而得到
分析和处理音频信号 首先要对声音信号进行采集 的数据采集工具箱提供了一整套命令和函数通过调用这些函数和命令可直接控制声卡进行数据采集自带的录音机也可驱动声卡来采集语音信号 并能保存为 格式文件供 相关函数直接读取
写入或播放 本文以 格式音频信号作为分析处理的输入数据 用 处理音频信号的基本流程是 先将 格式音频信号经 函数转换成 列数组变量
再用 强大的运算能力进行数据分析和处理 如时域分析 频域分析 数字滤波 信号合成 信号变换 识别和增强等等 处理后的数据如是音频数据 则可用 转换成 格式文件或用 等函数直接回放 下面分别介绍 在音量标准化 声道分离合并与组合 数字滤波 数
据转换等音频信号处理方面的技术实现
录制声音过程中需对声音电平进行量化处理 最理想的量化是最大电平对应最高量化比特 但实际却很难做到 常有音轻问题 利用 很容易实现音量标准化 即最大电平对应最高量化比特 基本步骤是 先用 函数将 文件转换成列数组变量
再求出数组变量的极值并对所有元素作归一化处理 最后用 函数还原成音量标准化的 文件
例 现以微软自带的 关机音频信号为例
先将其复制另存到文件名为 的 当前目录中
再通过音量标准化处理后保存为 文件 实现程序如下
[Y,FS,NBITS]=wavread('XPexit.WAV'); % 将 文件转换成变量
FS,NBITS, % 显示采样频率和量化比特
Ym=max(max(max(Y)),max(abs(min(Y)))), % 找出双声道极值
X=Y/Ym; % 归一化处理
wavwrite(X,FS,NBITS,'XPquit.wav') % 将变量转换成 文件
试听可知标准化处理后音量稍大
立体声或双声道音频信号有左右两个声道 利用 实现双声道分离 两路声道合并和两个单声道组合成一个双声道等效果 实际上是利用了的矩阵抽取
矩阵相加和矩阵重组运算
例 现以例 生成的 为例
实现分离 合并和组合处理的程序如下
[x,FS,NBITS]=wavread('XPquit.WAV'); % 将 文件转换成变量
x1=x(:,1); % 抽取第 声道
x2=x(:,2); % 抽取第 声道
wavwrite(x1,FS,NBITS,'XPquit1.WAV'); % 实现 声道分离
wavwrite(x2,FS,NBITS,'XPquit2.WAV'); % 实现 声道分离
%如果合并位置不对前面补 声道长度不对后面补
x12=x1+x2; % 两路单声道列向量矩阵变量合并
x12m=max(max(x12),abs(min(x12))), % 找出极值
y12=x12./x12m; % 归一化处理
wavwrite(y12,FS,NBITS,'XPquit12.WAV'); % 实现两路声道合并
%如果组合位置不对前面补 声道长度不对后面补
x3=[x1,x2]; % 两路单声道变量组合
wavwrite(x3,FS,NBITS,'XPquit3.WAV'); % 实现两路声道组合
可以试听声道分离 合并与组合的效果 也可对各文件大小进行比较
数字滤波是常用的音频处理技术 可根据技术指标 先利用 工具 设计一个数字滤波器再用 或 函数即可实现滤波处理
调用的 函数格式是 其中 和 是滤波器传输函数的分子和分母系数 是输入变量 是实现滤波后的输出变量
如果处理立体声音频信号 可分开处理 但用 滤波器时调用 函数更方便
例 现以例 生成的 为例
实现数字滤波的程序如下
[X,FS,NBITS]=wavread('XPquit12.WAV'); % 将 文件转换成变量
%利用 设计一个 滤波器
B =[0.7,0.2]; % 分子系数
A =[1,-2.7,-0.4312]; % 分母系数
Y=filter(B,A,X); % 实现数字滤波
t=(0:length(X)-1)/FS; % 计算数据时刻
subplot(2,2,1);plot(t,X); % 绘制原波形图
title(' 原信号波形图 加标题
subplot(2,2,3);plot(t,Y); % 绘制滤波波形图
title(' 滤波后波形图 加标题
xf=fft(X); % 作傅里叶变换求原频谱
yf=fft(Y); % 作傅里叶变换求滤波后频谱
fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率
f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度
subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图
title(' 原信号频谱图 加标题
subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图
title(' 滤波后信号频谱图 加标题
wavwrite(Y,FS,NBITS,'XPquitFilter.WAV'); % 写成 文件
程序运行结果如图 所示 由图可知 滤波对波形影响不大
但对高频有较大衰减 试听会感觉到处理后的声音比较沉闷
数据转换是指改变音频格式中的采样频率或量化位数 转换原理是 先用矩阵插值或抽取技术实现变量变换 如果是抽取数据还需在变换前作滤波处理使之满足采样定理 变量变换完成后再用 函数重新定义量化位数和采样频率即可实现数据转换 数据转换过程中 要注意采样频率与原始采样频率及插值或抽取系数的关系 实现插值或抽取的函数有 和
这里以 倍抽取为例 将例 中经过滤波后产生的 文件进行数据转换处理
具体程序如下
[x,FS,NBITS]=wavread('XPquitFilter.WAV'); % 将 文件转换成变量
N=length(x); % 计算数据点数
% 不是偶数点化成偶数点
if mod(N,2)==0; N=N; else x(N)=[]; N=N-1;
% 原信号波形频谱分析
tx=(0:N-1)/FS; % 计算原信号数据点时刻
subplot(3,2,1);plot(tx,x); % 绘制原信号波形
title(' 原信号波形图 加标题
xf=fft(x); % 求原信号频谱
fx=(0:N/2)*FS/N; % 确定频谱图频率刻度
subplot(3,2,2);plot(fx,abs(xf(1:N/2+1))); % 绘制原信号频谱
title(' 原信号频谱图 加标题
<p style="marg
&&&&推荐文章:
【上篇】【下篇】基于MATLAB的音频信号处理技术实现 - Matlab论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
基于MATLAB的音频信号处理技术实现
资深工程师
12:28:03  
10785&查看
基于MATLAB的音频信号处理技术实现
12:25 上传
点击文件名下载附件
下载积分: 积分 -1 分
311.66 KB, 下载次数: 220, 下载积分: 积分 -1 分
助理工程师
23:28:51  
感谢分享!!
23:38:27  
这个好,下来看看
15:06:37  
助理工程师
10:24:21  
顶顶顶顶顶顶
18:37:57  
09:11:51  
DDD,学习中
21:10:17  
助理工程师
13:04:49  
感谢分享。。
20:32:27  
多谢分享~学习中
22:55:51  
21:27:50  
谢谢,感谢分享
13:31:12  
顶顶顶, 有这个太好了!
21:48:51  
21:33:08  
12:25:48  
好好好。。
13:04:33  
仔细看看~~~~~~~
16:20:55  
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
15:56:07  
下来看看 最近正好做语音方面的
13:56:04  
感谢楼主,本人现在正在做语音分析,你的资料很有用
Powered by各位老师好,我在用我买来的吉他电子调音器时调音时,是按照降半音调试,还是按照“A4基准音频调试”?如果是按”降半音调试“是选择b式,还是bb式?如实A4基准音频调试,范围是430Hz-450Hz的哪个音频都行吗?还是具体的一个音频? - 吉他自学教程-弹唱教学最系统的教程 - 好知网-重拾学习乐趣-Powered By Howzhi
各位老师好,我在用我买来的吉他电子调音器时调音时,是按照降半音调试,还是按照“A4基准音频调试”?如果是按”降半音调试“是选择b式,还是bb式?如实A4基准音频调试,范围是430Hz-450Hz的哪个音频都行吗?还是具体的一个音频?
该问题来自:
相关课时:
频率跟音准有关你可以调440hz,弹空弦
调音方法/v_show/id_XMTM4MTgyMzUyMA==.html?f=&from=y1.2-3.4.5
117万+浏览/
31651学员/
23万+浏览/
17万+浏览/
Powered by
扫一扫 关注好知微信}

我要回帖

更多关于 音频波形图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信