0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于LPC与LSF系数转换的FPGA实现

电子工程师 来源:微型机与应用第13期 作者: 张 俏,杨 骁,汤 2021-04-07 11:49 次阅读

摘 要: 首先根据切比雪夫多项式求根法对LPC系数到LSF系数转换过程进行分析与推导,并给出了根据已知的LSF系数进行逆推求LPC系数迭代算法。然后,借助DDS算法原理实现查找表搜索求根,并在FPGA上实现了LSF系数到LPC系数转换。最后,给出了结论和分析。

线性预测法(LPC)成功地应用于语音信号处理的各个方面,在语音参数的估计中也被广泛地应用,如基音周期、共振峰频率和谱特征分析等。线性预测的基本思想是:由于语音信号之间存在相关性的特点,可以用过去若干个语音采样值或它们的线性组合近似表示当前语音采样值。在LPC分析中,最普遍的方法是使用线谱频率(LSF)表示LPC参量[1]。

LSF是频域参数,具有良好的量化特性和内插特性,小系数的误差引起滤波器的局部误差,构成的合成滤波器有较好的稳定性[2]。10阶的LPC系数的LSF参数成功地应用在低速率语音编码器中,如混合激励线性预测(MELP)声码器。近几年,在语音信号处理中,LSF参数研究一直是热点,参考文献[3-4]对LSF参数量化方法进行分析与仿真,但由LPC系数与LSF系数相互转换的研究少之又少。

伴随语音技术的不断发展,对语音信号数字化处理的实时性要求越发严格,专用的语音信号处理芯片能满足语音信号实时性的要求,LPC与LSF转换是专用语音处理芯片的关键模块之一。MELP算法语音编码过程中,首先,把经过带宽扩展后的线性预测系数转为LSF系数;其次,LSF参数按最小间隔排序;

最后,对排序后的LSF进行4级矢量量化。MELP算法解码过程中,由内插的LSF参数计算合成滤波器的系数,得到合成滤波器,激励信号经过合成滤波器得到合成语音。由于LSF参数的特性,保证了合成滤波器的稳定性[5]。LPC与LSF转换算法的FPGA实现对语音编码、语音合成等领域硬件实现至关重要。本文给出了LSF到LPC转换运算推导,并给出了算法的实现步骤。

1 转换算法原理

1.1 由LPC系数向LSF系数转换

本文针对LPC系数计算LSF系数的Chebyshev多项式求解法进行研究:

P阶线性预测滤波器函数为:

A]6BL_VK2K~D2OX6_$F$YO4.png

{ai}i=1,2,…,p为线性预测系数。预测系数ai在最小均方误差准则下,由Durbin递推算法求解自相关方程得到[6]。

LSF[7]作为LPC系数的等价表现形式,可通过求解p+1阶对称多项式P(z)和反对称多项式Q(z)的共轭复根获得。其中p+1阶多项式表示如下:

可以证明,当A(z)的根位于单位圆内时,P(z)和 Q(z)的根沿着单位圆相互交替出现。当p是偶数时,则P(z)有一个根z=-1,Q(z)有一个根z=1;当p为奇数时,Q(z)有±1两个实根。设P(z)的零点为e,设Q(z)的零点为e,则满足:0

4567.jpg

令Tm(x)=cos(mx),其中Tm(x)是m阶的Chebyshev多项式。满足关系式Tk(x)=2xTk-1(x)-Tk-2(x),初始条件为:T0(x)=1,T1(x)=x,则带入式(6)、(7)得P(x)和Q(x):

P(x)=TM(x)+p1TM-1(x)+…+pM-1T1(x)+pM(8)

Q(x)=TM(x)+q1TM-1(x)+…+qM-1T1(x)+qM(9)

Chebyshev多项式求解法本质是求解x满足区间[-1,1],求P(x)=0和Q(x)=0的根{xi},对应的LSF系数由?棕i=arccosxi确定。

1.2 由LSF系数向LPC系数转换

在语音解码过程中,需要把量化和内插后的LSF系数转换回LPC系数{ai}i=1,2,…,p,逆向推导,已知内插的LSP系数fi,根据fi可计算出P′(z)和Q′(z)的系数p′i和q′i。

p′i=-2f2i-1p′i+2p′i-2 (10)

q′i=-2f2iq′i-1+2q′i-2 (11)

其中f2i-1=cos?棕2i-1,求出p′i和q′i。根据原来方程式对应关系:

P(z)=P′(z)×(1+z-1) (12)

Q(z)=Q′(z)×(1-z-1) (13)

最后得到LPC系数可由A(z)+P(z)+Q(z)/2得到参数ai。

2 FPGA实现架构

2.1 算法实现步骤

量化和内插后的LSP系数需要更换成LPC系数ai。已知量化和内插的LSP系数qi,i=0,1,…,p-1,根据前文推导,可以得到下面迭代公式:

for i=1 to p/2

p′(i)=-2q2i-1p′(i-1)+2p′(i-2)

for j=i-1 to 1

p′(j)=p′(j)-2q2i-1p′(j-1)+2p′(i-2)

end

end

公式中的qi=coswi,余弦是通过查找表方式求得的,迭代过程中的初始值p′(0)=1,p′(-1)=0。上面迭代公式给出的是p′(i)的求法,在求解q′(i)时将上面的迭代公式中的q2i-1换成q2i即可。

在求得p′(i)和q′(i)后就可以求得p(i)、q(i),求解公式如下:

p1(i)=p′(i)+p′(i-1),i=1,2,…,p/2q1(i)=q′(i)-q′(i-1),i=1,2,…,p/2(14)

最后得到LPC系数:

ai=0.5p1(i)+0.5q1(i), i=1,2,…,p/20.5p1(p+1-i)-0.5q1(p+1-i),i=1,2,…,p/2(15)

2.2 余弦信号发生器

FPGA实现LSP到LPC转换是通过上文介绍的迭代算法来实现的。因为qi=coswi,迭代过程中qi的值是根据wi值来求出的。对于余弦的计算有很多方法,CORDIC旋转是一种方法,查找表也是一种方法。CORDIC旋转方法通过数学函数逼近的原理,每次旋转一定的角度来得到余弦值,但是这种方法得到的精度和迭代的次数有关;

查找表方法是先将余弦值根据量化位数计算出来存在ROM中,每次计算是需要将数据进行量化然后去ROM中查找量化值所对应的余弦值,这种方法计算速度快,但是存在一定的量化误差,会消耗一定存储空间。考虑到实时性语言编解码,本文的设计方案选择的是查找表法,在每一轮计算中通过wi值查找ROM来得到qi,借助DDS算法原理[8],用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可以把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值的转变。

凭借MATLAB软件可以生成ROM中余弦波形的定点数值,共分3步完成。

(1)运用MATLAB计算出余弦波形浮点值,对其进行量化,生成定点数值。

(2)产生mif文件(Altera FPGA ROM初始化数据文件格式)。

(3)将mif文件导入到“getCos”ROM模块中。

2.3 系统框架与结果分析

FPGA实现LSP到LPC转换时主要是根据给定的wi(或者fi)系数通过反复迭代而得到LPC系数,图1为迭代算法的流程图。FPGA算法中一般采用计数器方式来实现for循环,算法中有两个计数器cnt1和cnt2,它们分别用于决定算法中两层循环,cnt1是标定系数个数,当完成P/2个系数迭代时系统给出计算结束标志,cnt2用来确定当前系数的迭代次数。地址发送器是用来确定LSP系数查询地址,它是根据wi和当前cnt1值来决定数据的地址。这个地址所对应的ROM单元中读出的余弦值就是当前迭代coswi值。迭代中设定初始值p′(0)=1,p′(-1)=0。

001.jpg

本文选取线性预测阶数p=10,LSF系数到LPC系数算法FPGA实现顶层框图如图2所示,系统在start信号的上升沿开始加载wi,并将数据存储在内部寄存器中,为LPC系数迭代做好准备。图2模块LSP2LP_Exloop,根据算法流程图,在FPGA实现过程中,flage标识位用于指定当前运算是针对P还是Q的求解,因为P对应的是奇数序列,Q对应偶数序列,因为奇序列是相邻两项做和如式(12)所示,而偶数序列是相邻两项做差如式(13)所示。

当p_part和q_part两个模块完成迭代计算后,会给将各自的finish信号置为高电平,用以通知LSP2LPC_inter模块合成ai系数。LSP2LPC_inter模块在接收到p_part和q_part的finish信号后,同时将P和Q系数值载入并且根据式(15)所示计算过程完成P、Q到ai的合成,并将finish信号置为高电平。图3为FPGA综合报告,由此可见资源利用情况。

002.jpg

003.jpg

004.jpg

图4为系统的Quartus II仿真报告,从报告中可以看出系统能准确地合成系数,这也说明了设计的可行性。

根据切比雪夫多项式求根法由LPC系数到LSF系数转换过程进行分析与推导,根据已知的LSF系数进行逆推理求LPC系数,并给出了LSF到LPC系数转换的实现步骤。借助DDS算法原理,实现查找表搜索求根,利用FPGA实现LSF系数到LPC系数转换。与其他多项式相比较,Chebyshev多项式在较高的采样率下,对线性预测阶数要求不高,转换性能影响不大。由于在0和π附近变化引起变化很小,可以得到高精度转换参数值,时序测定时系统时钟可以达到66 MHz。最后系统能准确地合成LPC系数,说明了设计的可行性,并为今后的设计提供了一定的参考价值。

参考文献

[1] 方腾龙,赵晓群,韩笑蕾,等.语音清浊音差分LSF参数矢量量化方法[J].电声技术,2010,34(11):61-64.

[2] 袁晓勇,唐建红,曲志昱.基于Chebyshev法实现LPC与LSF相互转换[J].信息技术,2009,5(79):229-231.

[3] 梁彦霞,杨家玮,李烨,等.线谱频率参数的快速,低存储矢量量化[J].吉林大学学报:工学版,2012,42(1):223-227.

[4] 向波,唐昆,崔慧娟,等.基于DCT变换的LSF参数降维算法[J].通信技术,2008,41(8):204-206.

[5] 鲍长春.数字语音编码原理[M].西安:西安电子科技大学出版社,2007.

[6] 张雪英.数字语音处理及MATLAB仿真[M].北京:电子工业出版社,2010.

[7] SOONG F, JUANG B. Line spectrum pair (LSP) and speech data compression[J]. Acoustics, Speech, and Signal Processing, IEEE International Conference on ICASSP′84. IEEE, 1984(9):37-40.

[8] 田耘,徐文波,张延伟,等.无线通信FPGA设计[M].北京:电子工业出版社,2008.

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21286

    浏览量

    592887
  • LPC
    LPC
    +关注

    关注

    8

    文章

    135

    浏览量

    77329
  • DDS
    DDS
    +关注

    关注

    21

    文章

    614

    浏览量

    151705
  • 线谱
    +关注

    关注

    0

    文章

    3

    浏览量

    6385
收藏 人收藏

    评论

    相关推荐

    噪声系数是什么?噪声系数在系统中的应用有哪些?

    噪声系数的定义是输入信噪比比上输出信噪比,即噪声系数是对信号的SNR下降的程度进行衡量。
    的头像 发表于 03-27 15:14 279次阅读
    噪声<b class='flag-5'>系数</b>是什么?噪声<b class='flag-5'>系数</b>在系统中的应用有哪些?

    耦合元件的互感系数与什么有关系

    耦合元件的互感系数与以下几个方面有关: 结构设计:耦合元件的结构设计对互感系数有很大影响。比如,传统的互感元件主要是通过线圈的方式实现的,其互感系数主要由线圈的匝数、形状和间距等因素决
    的头像 发表于 03-09 09:36 396次阅读

    FPGA实现原理

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种特殊的集成电路,其内部结构由大量的可配置逻辑块和互连线组成。FPGA可以通过编程来实现各种数字系统功能
    发表于 01-26 10:03

    LSF系列引脚FMEA应用指南

    电子发烧友网站提供《LSF系列引脚FMEA应用指南.pdf》资料免费下载
    发表于 01-03 15:19 0次下载
    <b class='flag-5'>LSF</b>系列引脚FMEA应用指南

    ADC噪声系数的重要性

    并不总是可以降低转换器中的前端噪声。   在尝试了解级联信号链的动态机制时,噪声系数用起来是十分方便的。当源电阻增加4倍时,噪声系数将提高6 dB,但是,增加的电阻同时会增加转换器中
    发表于 12-19 06:18

    传热系数和导热系数的关系

    传热系数和导热系数的关系  传热系数和导热系数是热传导现象中的两个关键概念。在热传导中,热量从一个物体传递到另一个物体。传热系数和导热
    的头像 发表于 12-08 10:27 5094次阅读

    请问运放的输入噪声电压密度nV/rtHz怎么转换为噪声系数dB呢?

    请问运放的输入噪声电压密度nV/rtHz怎么转换为噪声系数dB呢?
    发表于 11-22 08:11

    基于LPC2292数字自整角机转换控制的研究

    电子发烧友网站提供《基于LPC2292数字自整角机转换控制的研究.pdf》资料免费下载
    发表于 10-25 10:52 0次下载
    基于<b class='flag-5'>LPC</b>2292数字自整角机<b class='flag-5'>转换</b>控制的研究

    基于ARM LPC2119的水情测报终端设计与实现

    电子发烧友网站提供《基于ARM LPC2119的水情测报终端设计与实现.pdf》资料免费下载
    发表于 10-18 10:41 0次下载
    基于ARM <b class='flag-5'>LPC</b>2119的水情测报终端设计与<b class='flag-5'>实现</b>

    基于AMD FPGA的PCIE DMA逻辑实现

    AMD FPGA自带PCIE硬核,实现了PCIE协议,把串行数据转换为并行的用户数据
    的头像 发表于 07-14 15:53 1019次阅读
    基于AMD <b class='flag-5'>FPGA</b>的PCIE DMA逻辑<b class='flag-5'>实现</b>

    导热系数怎么测量?#导热系数 #导热系数测定仪 #导热仪

    导热系数
    南京大展检测仪器
    发布于 :2023年06月25日 16:11:55

    基于AMD FPGA的PCIE DMA逻辑实现

    AMD FPGA自带PCIE硬核,实现了PCIE协议,把串行数据转换为并行的用户数据,以UltraScale系列FPGA为例,其支持Gen1.02.03.04.0,1~16 Lanes
    的头像 发表于 06-09 09:34 946次阅读
    基于AMD <b class='flag-5'>FPGA</b>的PCIE DMA逻辑<b class='flag-5'>实现</b>

    如何使用Verilog实现具有预生成系数的简单FIR滤波器?

    不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。
    发表于 06-07 17:12 553次阅读
    如何使用Verilog<b class='flag-5'>实现</b>具有预生成<b class='flag-5'>系数</b>的简单FIR滤波器?

    为什么LPC55xx内部DC/DC转换器的电感饱和电流规格为300mA?

    LPC55xx 内部 DC/DC 转换器中电感器的最小饱和电流规格为 300mA,为什么是 300mA,流经电感器的实际电流是多少? 1)这是LPC55xx的内部DC/DC转换器框图
    发表于 05-18 08:05

    基于TXS0108实现FPGA IO Bank接不同外设IO接口电压转换

    引言:上一篇文章我们介绍了通过添加电阻器、场效应晶体管(FET)开关、电平转换器甚至其他Xilinx FPGA等选项实现HP Bank IO与2.5V/3.3V外设对接的方法。本文介绍利用TI公司TXS0108
    的头像 发表于 05-16 09:02 2290次阅读
    基于TXS0108<b class='flag-5'>实现</b><b class='flag-5'>FPGA</b> IO Bank接不同外设IO接口电压<b class='flag-5'>转换</b>