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
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601656
  • LPC
    LPC
    +关注

    关注

    8

    文章

    136

    浏览量

    77599
  • DDS
    DDS
    +关注

    关注

    21

    文章

    631

    浏览量

    152527
  • 线谱
    +关注

    关注

    0

    文章

    3

    浏览量

    6404
收藏 人收藏

    评论

    相关推荐

    使用LSF系列进行电压电平转换

    电子发烧友网站提供《使用LSF系列进行电压电平转换.pdf》资料免费下载
    发表于 10-08 10:24 0次下载
    使用<b class='flag-5'>LSF</b>系列进行电压电平<b class='flag-5'>转换</b>

    实现下一代具有电压电平转换功能的处理器、FPGA 和ASSP

    电子发烧友网站提供《实现下一代具有电压电平转换功能的处理器、FPGA 和ASSP.pdf》资料免费下载
    发表于 09-09 09:46 0次下载
    <b class='flag-5'>实现</b>下一代具有电压电平<b class='flag-5'>转换</b>功能的处理器、<b class='flag-5'>FPGA</b> 和ASSP

    混泥土的导热系数如何测量?#导热系数 #导热系数测定仪 #混泥土

    导热系数
    南京大展检测仪器
    发布于 :2024年07月30日 16:37:33

    汽车类 2 通道自动双向多电压电平转换LSF0102-Q1数据表

    电子发烧友网站提供《汽车类 2 通道自动双向多电压电平转换LSF0102-Q1数据表.pdf》资料免费下载
    发表于 05-09 16:38 2次下载
    汽车类 2 通道自动双向多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0102-Q1数据表

    怎么在labview FPGA实现离散传递函数的表达?

    我只知道有一个这个控件,叫直接型离散传递函数实现,但是我输入离散传递函数的系数之后,他的输出有问题。我再非FPGA端尝试使用相同的系数进行仿真,输出是没有问题的。我不知道前面的问题出在
    发表于 05-09 11:43

    汽车类 8 通道多电压电平转换LSF0108-Q1数据表

    电子发烧友网站提供《汽车类 8 通道多电压电平转换LSF0108-Q1数据表.pdf》资料免费下载
    发表于 05-08 09:31 0次下载
    汽车类 8 通道多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0108-Q1数据表

    适用于漏极开路和推挽应用的4位双向多电压电平转换LSF0204x数据表

    电子发烧友网站提供《适用于漏极开路和推挽应用的4位双向多电压电平转换LSF0204x数据表.pdf》资料免费下载
    发表于 05-08 09:30 0次下载
    适用于漏极开路和推挽应用的4位双向多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0204x数据表

    通过汽车认证的 LSF0204-Q1 4位自动双向多电压电平转换器数据表

    电子发烧友网站提供《通过汽车认证的 LSF0204-Q1 4位自动双向多电压电平转换器数据表.pdf》资料免费下载
    发表于 05-07 10:11 0次下载
    通过汽车认证的 <b class='flag-5'>LSF</b>0204-Q1 4位自动双向多电压电平<b class='flag-5'>转换</b>器数据表

    适用于开漏和推挽应用的单通道自动双向多电压电平转换LSF0101数据表

    电子发烧友网站提供《适用于开漏和推挽应用的单通道自动双向多电压电平转换LSF0101数据表.pdf》资料免费下载
    发表于 05-07 09:40 0次下载
    适用于开漏和推挽应用的单通道自动双向多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0101数据表

    适用于开漏和推挽应用的 8 通道自动双向多电压电平转换LSF0108数据表

    电子发烧友网站提供《适用于开漏和推挽应用的 8 通道自动双向多电压电平转换LSF0108数据表.pdf》资料免费下载
    发表于 05-06 11:31 0次下载
    适用于开漏和推挽应用的 8 通道自动双向多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0108数据表

    适用于开漏和推挽应用的双通道自动双向多电压电平转换LSF0102数据表

    电子发烧友网站提供《适用于开漏和推挽应用的双通道自动双向多电压电平转换LSF0102数据表.pdf》资料免费下载
    发表于 04-29 10:56 0次下载
    适用于开漏和推挽应用的双通道自动双向多电压电平<b class='flag-5'>转换</b>器<b class='flag-5'>LSF</b>0102数据表

    固体导热系数测量应用案例 #导热系数

    导热系数
    南京大展检测仪器
    发布于 :2024年04月25日 16:47:15

    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