[DSP编程] 如何用C6000实现语音预加重和去加重滤波器

[复制链接]
 楼主| 亚细亚小鸭 发表于 2014-6-8 18:18 | 显示全部楼层 |阅读模式
刚刚学DSP,对于有些问题不太明白。想要实现发射预加重和接收去加重的滤波器,看有的论文上面写的是一般采用具有 6dB/oct 的高通数字滤波器来实现语音信号的预加重处理,得到滤波器传递函数的形式为:H(z)=1-αz-1,α为预加重滤波器系数。不知道如何编程实现,另外去加重也不知是否需要同样的传递函数来做。各位可以指导下吗,多谢多谢。
zhangmangui 发表于 2014-6-8 19:47 | 显示全部楼层
没搞过   帮忙顶   
欢迎新朋友
aresc 发表于 2014-6-9 00:51 | 显示全部楼层
预加重是用来提升将要发送到通讯线路中信号的高频段,用于提高信噪比,因为线路中的噪声是固定的,在接收端再进行去加重恢复信号中的高频部分,此时的信号已经引入线路中的噪声,去加重的过程同时也降低了信号中的噪声。

按你的那个预加重H(z),按差分方程就是y(n) = x(n)-a*x(n-1),去加重的过程是H'(z) = 1/H(z),差分方程y(n) = x(n) + a*y(n-1)。

评分

参与人数 1威望 +1 收起 理由
亚细亚小鸭 + 1 很给力!

查看全部评分

 楼主| 亚细亚小鸭 发表于 2014-6-9 11:55 | 显示全部楼层
aresc 发表于 2014-6-9 00:51
预加重是用来提升将要发送到通讯线路中信号的高频段,用于提高信噪比,因为线路中的噪声是固定的,在接收端 ...

您好,非常感谢您的回答,可以麻烦您再帮忙解答下这个滤波器的生成问题吗?十分感谢

如果用matlab的fdatool工具箱辅助生成预加重和去加重的滤波器,怎么设置参数才能达到这个差分方程达到的每倍频提升或者降低6db/otc,并且输出C头文件呢,是不是只能用fdatool来辅助生成滤波器系数呢?如果使用matlab中的freqz函数来求频响函数可以将此差分方程设计的滤波器输出为头文件吗?谢谢您。
ttxs_2013 发表于 2014-6-9 19:30 | 显示全部楼层
亚细亚小鸭 发表于 2014-6-9 11:55
您好,非常感谢您的回答,可以麻烦您再帮忙解答下这个滤波器的生成问题吗?十分感谢

如果用matlab的fdat ...

FDATool 可以导出滤波器系数文件,但是调用函数应该是不能输出滤波器系数文件的。
aresc 发表于 2014-6-9 22:26 | 显示全部楼层
本帖最后由 aresc 于 2014-6-9 22:50 编辑
亚细亚小鸭 发表于 2014-6-9 11:55
您好,非常感谢您的回答,可以麻烦您再帮忙解答下这个滤波器的生成问题吗?十分感谢

如果用matlab的fdat ...

呵呵,不好意思,我也没弄明白a是怎么算出来的,很多的文档都建议取值0.9~1.0。应该有出处的,估计和模拟滤波有关。至于6dB/oct应该就是要求用一阶差分方程,比如如果要求12dB/oct就是用二阶差分方程等等。这个6dB/oct的斜率只能近似,matlab应该没有直接的滤波器函数可以实现。

至于滤波器系数,比如你选a=0.95,那么预加重是的滤波器系数 h=[1,-0.95],为FIR滤波器。去加重的滤波器系数是b=[1, 0], a=[1,- 0.95],为IIR滤波器。然后就是按差分方程实现对输入信号进行滤波。freqz是用来看频响的。
 楼主| 亚细亚小鸭 发表于 2014-6-9 22:55 | 显示全部楼层
aresc 发表于 2014-6-9 22:26
呵呵,不好意思,我也没弄明白a是怎么算出来的,很多的文档都建议取值0.9~1.0。应该有出处的,估计和模拟 ...

谢谢啊,这个a的参数确实不知道从哪里来的,不少文档里面建议取值在您说的那个范围内。我刚刚用fdatool模拟了一下,您也可以试一下,大概是可以模拟出来这样的滤波器的,不过用的不是一般的滤波器,是任意幅度的滤波器,具体的设置我上个图,您可以看一下。freq.vector和mag. vector以及weight vector设置分别为:[0:100:4100],[sqrt(1+(0.1*pi*(0:100:4100)).*(0.1*pi*(0:100:4100)))],[ones(1,21)],去加重的网络按照您说的应该是这个的传递函数的倒数,应该可以设计出来,但是目前我还没有做出来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
zhangmangui 发表于 2014-6-9 23:28 | 显示全部楼层
好贴  兄弟们继续
aresc 发表于 2014-6-10 00:25 | 显示全部楼层
亚细亚小鸭 发表于 2014-6-9 22:55
谢谢啊,这个a的参数确实不知道从哪里来的,不少文档里面建议取值在您说的那个范围内。我刚刚用fdatool模 ...

学习了,我没在fdatool里这么用过。只是你这样不就变成用10阶的滤波器去近似那个6dB/oct,干嘛不直接用那个H(z)=1-a*z^-1? 只用选定一个a,然后pre-emphasis和de-emphasis的滤波器系数都是直接手写出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 返回顶部 返回列表