欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数字信号处理实验语音信号滤波.docx

    • 资源ID:18572709       资源大小:446.42KB        全文页数:12页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字信号处理实验语音信号滤波.docx

    1、数字信号处理实验语音信号滤波实验一 长序列卷积实现与DSP定点运算模拟一、实验名称长序列分段卷积与DSP定点运算模拟二、实验要求1.学习长序列分段卷积实现的两种方法 (1)重叠相加法 (2)重叠保留法2.改写语音滤波C程序 (1)说明程序中错误的原因 (2)说明选择短数据类型的原因 (3)分析重叠保留法过程3.模拟DSP定点化运算 (1)设计思路 (2)分析运算过程三、实验内容1.长序列卷积的两种方法FIR离散时间系统,单位脉冲响应为h(n),n = 0,1,2,因为系统为因果,所以n0时,h(n)值为0。长序列X(n)分段,将分出的小段x(n)分别于h(n)做卷积,得到相应段的y(n)。y(

    2、n) = x(n) * h(n),设x(n)长为5,h(n)长为3。(1)重叠相加法第一段(04)卷积:y(0) = h(0)x(0) y(1) = h(0)x(1) + h(1)x(0) y(2) = h(0)x(2) + h(1)x(1) + h(2)x(0)y(3) = h(0)x(3) + h(1)x(2) + h(2)x(1) y(4) = h(0)x(4) + h(1)x(3) + h(2)x(2)从n = 5开始,缺少后一段元素的卷积将丢失元素项。y(5) = 缺项 + h(1)x(4) + h(2)x(3) y(6) = 缺项 + 缺项 + h(2)x(4)y(5)缺失项为h(

    3、0)x(5),y(6)的缺失项为h(0)x(6)与h(1)x(5)。第二段(59)卷积:y(5) = h(0)x(5) + 缺项 + 缺项 y(6) = h(0)x(6) + h(1)x(5) + 缺项y(5)缺失项为h(1)x(4) 与 h(2)x(3),y(6)的缺失项为h(2)x(4)。因此,第二段与第一段的重叠部分y(5)与y(6)相加得到正确的值,是为重叠相加法。(2)重叠保留法若已知滤波器n = M,则在X(n)序列前端补M - 1个零。第一段(-24)卷积:y(-2) = h(0)x(-2) y(-1) = h(0)x(-1) + h(1)x(-2) y(0) = h(0)x(0

    4、) + h(1)x(-1) + h(2)x(-2) y(1) = h(0)x(1) + h(1)x(0) + h(2)x(-1) y(2) = h(0)x(2) + h(1)x(1) + h(2)x(0)y(3) = h(0)x(3) + h(1)x(2) + h(2)x(1) y(4) = h(0)x(4) + h(1)x(3) + h(2)x(2)y(5) = 缺项 + h(1)x(4) + h(2)x(3) y(6) = 缺项 + 缺项 + h(2)x(4)第二段(39)卷积:保留上一段中的x(3)与x(4)到该段作为卷积项。y(3) = h(0)x(3) + 缺项 + 缺项 y(4)

    5、= h(0)x(4) + h(1)x(3) + 缺项y(5) = h(0)x(5) + h(1)x(4) + h(2)x(3) y(6) = h(0)x(6) + h(1)x(5) + h(2)x(4)y(7) = h(0)x(7) + h(1)x(6) + h(2)x(5) y(8) = h(0)x(8) + h(1)x(7) + h(2)x(6)y(9) = h(0)x(9) + h(1)x(8) + h(2)x(7) y(10) = 缺项 + h(1)x(9) + h(2)x(8)y(11) = 缺项 + 缺项 + h(2)x(9)其中标红的部分为保留项。恰好保证了连续性,卷积结果由之前

    6、的7项增加到9项,每段卷积前需接入上段段尾M 1个数据。2.改写语音滤波C程序(1)程序错误a.打开文件函数错误应该设置文件名路径,并设置为r+b读写可修改模式。b.采样错误原程序中读取语音文件一帧数据的处理函数为getw(),存储该帧数据的数组类型为int,读取每点为32bit,不符合实验要求的每点16bit。使用fread(indata,2,LENGTH,fp1),选取2字节数据,为16bit。c.wav文件处理时需要跳过头文件的44字节使用fseek(fp1,44,SEEK_SET),跳过文件开头字节。(2)选择short型数据short型数据的长度为16bit,可保证读取一点的16bi

    7、t数据存入具有合适数据类型的数组。即每次读取180点,每点16bit,存入数组indataLENGTH,而indata为short型。(3)重叠保留法过程已知h(n)为19点滤波器,即n = 19。x(n)分段序列n = 180。采用重叠舍去法,每一次卷积需要180 + 19 -1 = 198个点的数组空间。数组017位为补足位,第一段卷积时补零,后段卷积时,补上前一段末尾18个数据。输出赋值时从数组的第M位开始,前M - 1位舍去。程序中卷积计算数组为x1LENGTH + FILTER_LEN - 1,LENGTH为180,FILTER_LEN为19。初始补零位为x10 x117,数据读入从

    8、x118开始,读180点,如下图所示:时域卷积过程如下,使用i+n-1代替i,不去计算舍去的前18项,从第19项开始计算:后段卷积前选取前一段18个点的数据作为补充点,如图:3.模拟DSP定点化运算由于滤波器系数为小数,在DSP中做浮点运算占用资源且耗时长,因此设计C定点程序提高运算效率。滤波器原系数如下图:对滤波器系数进行整数化操作,每个系数乘以2的15次方,即32768。如下图:在滤波过程中将结果右移15位,效果等同于除以2的15次方,如下图所示:DSP中整数操作和移位操作比浮点乘除法操作速度快很多。提高了效率。四、实验结果完整程序如下图所示:/*语音信号800HZ 19点FIR低通滤波C

    9、语言浮点程序*Author: cao xin*Date: 15-04-09*/#include#include#define LENGTH 180#define FILTER_LEN 19#define SUCCESS 0/*语音帧长为180点=22.5ms8kHz采样*/void filter(int xin, int xout, int n, float h); /*滤波子程序说明*/*19点滤波器系数*/static float hFILTER_LEN = 0.01218354, -0.009012882, -0.02881839, -0.04743239, -0.04584568, -

    10、0.008692503, 0.06446265, 0.1544655, 0.2289794, 0.257883, 0.2289794, 0.1544655, 0.06446265, -0.008692503, -0.04584568, -0.04743239, -0.02881839, -0.009012882, 0.01218354;static short x1LENGTH + FILTER_LEN - 1;static long long int h_tempFILTER_LEN;void filter(short xin, short xout, int n, long long in

    11、t h_temp) int i,j; float sum = 0.0; long long int sum_temp; /*取180点的数据,x1起始点为x118,读入数据为indata*/ for(i = 0; i LENGTH; i+) x1n+i-1 = xini; /*滤波过程,时域卷积*/ for(i = 0; i LENGTH; i+) sum_temp = 0; for(j = 0; j 15; /除以2的15次方 xouti = (short)sum; /*截取尾部18个数据*/ for(i = 0; i (n-1); i+) x1n-i-2 = xinLENGTH-1-i;

    12、/*主程序*/int main() int i; int fp_start = 44, fp_end; FILE *fp1, *fp2; char fname_in20 = d:bluesky1.wav; char fname_out20 = d:bluesky1_out.wav; int frame = 0; short indataLENGTH, outdataLENGTH; /*浮点转定点*/ for(i = 0 ; i 4000) printf(DATA OVERFLOWn); break; fcloseall(); getchar(); return 0;程序运行结果如下图:对音频文件的处理结果:输入文件为:bluesky1.wav输出文件为:bluesky1_out.wav使用cooledit观察频谱如下图所示:滤波处理前:滤波处理后:滤波处理前:滤波处理后:


    注意事项

    本文(数字信号处理实验语音信号滤波.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开