ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:334.78KB ,
资源ID:22413235      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22413235.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子科技大学数字信号处理DSP课程设计钢琴音符识别Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子科技大学数字信号处理DSP课程设计钢琴音符识别Word文档格式.docx

1、1. 对语音信号进行分帧加窗;2. 计算每一帧的谱能量;3. 计算出每一帧中每个样本点的概率密度函数;4. 计算出每一帧的谱熵值(由信息论知识知道,熵值在自变量服从均匀分布的时候,熵值达到最大值,所以噪声的熵值是比较大的,而钢琴音符的熵值是比较小的,由此区别了噪声和音符);5. 设置判决门限;6. 根据各帧的谱熵值进行端点检测。 在实验过程中发现:依然存在当语音信号频率分布较广时,阀值不太好控制的问题。因此对该方法进行改进,引入,能熵比的概念:谱熵值类似于过零率,能熵比的表示为。由于噪声和信号的能熵比差别很大。因此在能熵比的图像中,每一个“尖刺”就代表了一个特定频率的语言信号。图2:能熵比图中

2、的“尖刺”在检测过程中,依然不能通过简单的设置阀值的办法来进行端点检测,原因是语音频率分布较广时,每个音符的能熵比变化围差别较大,如下图所示,有的“尖刺”完全在门限之上,而有的则完全在门限之下。图3:88阶全音的能熵比图因此,采用检测能熵比中的“低谷点”(该点比左右两边的一定数目的点的能熵比都小)的方法。语音信号一定位于两个低谷点之间的部分,再对低谷点进行适当的左右移动作为语音信号的起止点。如下图所示:图4:标记起止点的能熵比图(绿色为起始点,红色为截止点)(3)设计框架和流程:1. 用audioread函数读入钢琴音乐,并用sound函数播放;2. 为了方便处理,对信号以11.025kHz的

3、频率进行重新采样,并统一转换成单声道的信号;3. 因为语言信号可以在短时间认为是平稳的,因此对语音信号进行分帧的处理,设置帧长320,为了减小误差,两帧之间设置重叠部分,因此帧移取80;4. 计算每一帧的能熵比;5. 找到能熵比中的“低谷点”(该点比左右两边的一定数目的点的能熵比都小);6. 如果两个低谷点之间的距离大于miniL(认为持续长度超过一定长度的为音符,最小长度miniL可自行设置)。则低谷点右移sr (即shift right,数值可自行调节)帧作为一段信号的起始点,将低谷点左移sl(即shift left,数值可自行调节)帧作为截止点注:采用该方法的优点是通过调节相关参数能适应

4、多种情况,缺点是检测环境发生较大变化时,需要重新设置参数;7. 将找到的语音段转换成未分帧时对应坐标的语音段,并对每段做快速傅里叶变换;8. 找到每段快速傅里叶变换中的最大值以及最大值所对应的横坐标(fft点),将横坐标转换成相应的频率,得到的频率即为该段音符的频率;9. 利用比值法进行频率的校正,窗函数选择矩形窗;10. 根据检测到的频率确定音符,计算公式为:,为第几个按键,再通过查表得到对应音符;11. 分析结果。三. 具体设计过程:(1)部分代码(测试部分缺省):主函数部分:x,fs=audioread(钢琴音频.WAV);format short;wlen=320; inc=80; %

5、 分帧的帧长和帧移overlap=wlen-inc; % 帧之间的重叠部分sound(x,fs); % 播放音乐x=calsample(x,fs); % 为了方便处理,重新以11025Hz的频率采样,并转换成单声道x=x-mean(x); % 消去直流分量x=x/max(abs(x); % 幅值归一化y = Enframe(wlen,inc,x); % 分帧fn = size(y,2); % 取得帧数time = (0 : length(x)-1)/11025; % 计算时间坐标frameTime = frame2time(fn, wlen, inc, 11025); % 计算各帧对应的时间坐

6、标sr=2;sl=13;miniL=33; % 配置左右移动的帧数和要求的最短帧数voicesegment,vos,Ef=get_segment(y,fn,sr,sl,miniL); % 获得语音段real_f,ft,ax=get_f(x,voicesegment,vos,wlen,inc); % 检测频率的结果for i=1:length(real_f) real_f(i)=roundn(real_f(i),-4);end real_node(i)=get_node(real_f(i)end%*绘图部分*subplot 211;stem(real_f);title(频率检测结果xlabel(

7、音符/个ylabel(频率/Hzsubplot 212;stem(real_node,r音符检测结果对应按键figure(2);plot(Ef);能熵比图及语音起止点帧数/个能熵比length(voicesegment) text(voicesegment(i).begin,Ef(voicesegment(i).begin),o,colorg) text(voicesegment(i).end,Ef(voicesegment(i).end), subplot 212, plot(time,x,k title(语音信号端点检测结果axis(0 max(time) -1 1); ylabel(幅值

8、for k=1 : vos % 标出有话段 nx1=voicesegment(k).begin; nx2=voicesegment(k).end; nxl=voicesegment(k).duration; fprintf(%4d %4d %4d %4dn,k,nx1,nx2,nxl); subplot 212 line(frameTime(nx1) frameTime(nx1),-1 1,linestyle- line(frameTime(nx2) frameTime(nx2),-1 1,-其中的用到的子函数:1.calsample.m (调整采样率和声道)function sample =

9、 calsample(sampledata,FS)temp_sample = resample(sampledata,1,FS/11025); %调整采样频率,n = size(temp_sample);if (n = 2) %转换成单声道 sample = temp_sample(:,1);else sample = temp_sample;2. Enframe.m (分帧函数)function f=Enframe(len,inc,x) %对读入的语音进行分帧,len为帧长, %inc为帧重叠样点数,x为输入语音数据fh=fix(size(x,1)-len)/inc)+1); %计算帧数 f

10、=zeros(fh,len); %设置一个零矩阵,行为帧数,列为帧长i=1;n=1;while i=fh %帧间循环 j=1; while j=len %帧循环 f(i,j)=x(n); j=j+1; n=n+1; end n=n-len+inc; %下一帧开始位置 i=i+1;3. frame2time.m(坐标刻度转换)function frameTime=frame2time(frameNum,framelen,inc,fs)frameTime=(1:frameNum)-1)*inc+framelen/2)/fs; % 求对应的时间坐标4.get_segment.m(端点检测,确定音符段

11、)function voicesegment,vos,Ef=get_segment(y,fn,sr,sl,miniL)if size(y,2)=fn, y=y end % 把y转换为每列数据表示一帧语音信号wlen=size(y,1); % 取得帧长fn Sp = abs(fft(y(:,i); % FFT取幅值 Sp = Sp(1:wlen/2+1); % 只取正频率部分 Esum(i) = sum(Sp.*Sp); % 计算能量值 prob = Sp/(sum(Sp); % 计算概率 H(i) = -sum(prob.*log(prob+eps); % 求谱熵值hindex=find(H=

12、miniL % 剔除持续帧长度小于miniL的音符段 temp1=x2(k-1)+sr; % 将低谷点右移sr个帧,作为一个音符的起始点 voicesegment(j).begin=temp1; temp2=x2(k)-sl; % 将低谷点左移sl个帧,作为一个音符的截止点 voicesegment(j).end=temp2; voicesegment(j).duration=voicesegment(j).end-voicesegment(j).begin+1; %音符持续帧数vos=length(voicesegment); %返回音符个数5.get_max.m(找到高峰点)functio

13、n max_x,max=get_max(x)l=length(x); %获得数组的长度max=;max_x=;for i=20:l-15 %找到“峰值点” if (x(i)x(i-1)&(x(i)x(i-2)&x(i-3)&x(i-4)&x(i-5). &x(i-6)&x(i-7)&x(i-8)&x(i-9)&x(i-10).x(i-11)&x(i-12)&x(i-13)&x(i-14).x(i-15)&x(i-16)&x(i-17).x(i+1)&x(i+2)&x(i+3)&x(i+4)&x(i+5).x(i+6)&x(i+7)&x(i+8)&x(i+9)&x(i+10).x(i+11)&x

14、(i+12)&x(i+13)&x(i+14).x(i+15)&x(i+16).0.1) max_x(j)=i; %找到后赋值给返回参数 max(j)=x(i); else6.get_min.m(找到低谷点)function min_x,min=get_min(x)min=;min_x=;for i=100:l-10 %寻找低谷点 if (x(i)(x(i)nx1nx,mx=size(x);if mx=1, x=xend %转换成行矩阵M=fix(N/2)+mod(N,2);xf=fft(x);%xf=xf(1:M)*2/N;ddf=fs/N; % 频率分辨率n1=fix(nx1/ddf); %

15、 将频率转换成fft对应的点n2=round(nx2/ddf);A=abs(xf); % 取fft的模值Amax,index=max(A(n1:n2); %找到fft点n1到n2之间幅值的最大值index=index+n1-1; % 移动到n1和n2中间%比值法%加矩形窗indsecL=A(index-1)A(index+1); %满足条件则为1,不满足则为0df=indsecL.*A(index-1)./(Amax+A(index-1)-(1-indsecL).*A(index+1)./(Amax+A(index+1);Z=(index-1-df)*ddf; %修正后的频率9.get_nod

16、e.m(确定音符)function node=get_node(f)node=12*log2(f/440)+49;node=round(node); %四舍五入确定对应按键(2)生成的图与数据等端点检测结果序号起始帧截止帧持续帧数14097582112166553181235425030354531837263874417456510852557995946481066371452117297861280185413869923149389935615100810514416106611225717113711761811911267771912821337201352139121140614

17、7570221490151324231528158861160316666425168117305026176018084927182318735128190319444229195920175930203220903121052136322177222533224022783934231723403523802429对数据的分析:真实按键真实音符真实频率/Hz检测频率/Hz对应按键检测音符绝对误差/Hz相对误差G7/A7523.251524.89731.64630.31%53G7554.365555.04370.67870.12%F7/G7587.33589.87682.54680.43%F7622.254623.15850.90450.15%E7659.255659.70790.45290.07%D7/E7698.456699.29680.8408D7739.989741.85031.86130.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1