DSP试验报告
基于基于 LPCLPC 算法的语音基频检测算法的语音基频检测 姓名:姓名: 学号:学号: 组号:第二组组号:第二组 1818 号设备号设备 指导老师:指导老师: 时间:时间:2016.5.232016.5.23 南京理工大学南京理工大学 目录目录 1.实验目的 3 2 .实验器材 3 3.实验过程 3 3.1 熟悉 LPC 算法 . 3 3.1.1 LPC 原理 3 3.1.2 LPC 过程 3 3.2 熟悉并验证各个模块 . 4 3.2.1 AD 采样 . 4 3.2.2 FIR 滤波 5 3.2.3 FFT. 5 3.3 LPC 验证 6 3.3.1 CODEC 的下抽取采样 6 3.3.2 信号分帧 7 3.3.3 LPC 滤波 7 3.3.3 计算残差 8 3.3.4 对残差做 FFT 运算 9 3.3.5 得到基音频率. 10 3.4 实验结果的验证. 10 3.4.1 验证方法. 11 3.5 其他实验结果 11 3.5.1 上扫频波. 11 3.5.2 麦克风输入语音. 12 3.5.3 麦克风输入音乐. 12 3.6 结论 13 4. 实验中遇到的问题. 13 南京理工大学南京理工大学 1 1..实实验目的验目的 1) 了解DSP硬件系统基本构架 2) 熟悉DSP软件开发基本流程 3) 掌握DSP软件开发、调试、验证方法 4) 掌握DSP硬件调试、验证方法 5) 锻炼发现、分析、解决问题能力 6) 理解DSP特点 2 .2 .实验器材实验器材 1) DSP 平台:TI 的 TMS320C6713 2) 测试设备:示波器——泰克 TDS2012B 3) 函数发生器——泰克 AFG3021B 3 3.实验过程.实验过程 3.13.1 熟悉熟悉 LPCLPC 算法算法 3.1.13.1.1LPCLPC 原理原理 语音线性预测的基本思想是: 一个语音信号的抽样值可以用过去若干个取样 值的线性组合来逼近。 通过使实际语音抽样值与线性预测抽样值的均方误差达到 最小,可以确定唯一的一组线性预测系数。 采用线性预测分析不仅能够得到语音信号的预测波形, 而且能够提供一个非 常好的声道模型。此外,LPC分析还能够对共振峰、功率谱等语音参数进行精确 估计,LPC分析得到的参数可以作为语音识别的重要参数之一。 由于语音是一种短时平稳信号,因此只能利用一段语音来估计模型参数。 将长的语音序列加窗,然后对加窗语音进行LPC分析,只要限定窗的长度就可以 保证分析的短时性,这种方案称为自相关法。 3.1.23.1.2 LPCLPC过程过程 LPC的过程:残差= 真实语音– 预测语音= 真实语音– LPC系数*真实语音 南京理工大学南京理工大学 LPC算法流程图如下: 采样 语音提取 LPC计算 残差计算 FFT 局部最值索引 频率转换 图 1 LPC 算法流程图 3.23.2 熟悉并验证各个模块熟悉并验证各个模块 3.2.1 AD3.2.1 AD 采样采样 通过信号发生器产生频率f=100Hz的正弦波信号, 采样率为96KHz, 设置断点, 运行C程序,查看View-Graph的1024点输出,View-Graph显示的波形图2: 图2 AD采样输出 实际输入频率的计算公式为f n * fs,图中半个周期的点数为 480 点,所 N 以,输入频率为 96k/960=100Hz。由此说明通过 AD 采样得到的仍然是 100Hz 的 正弦波信号,由此 AD 采样模块得以验证。 南京理工大学南京理工大学 3.2.2 FIR3.2.2 FIR 滤波滤波 通过输入一个频率为 300Hz 的三角波信号,来验证 fir 滤波的低通性。图 3 和图 4 分别为 fir 滤波前和滤波后三角波输出: 图3 滤波前三角波输出 图4滤波后三角波输出 从图中可以看出, 经过 fir 滤波之后, 输出的还是一个频率为 300Hz 的三角 波形,只是幅度上略有削顶,这是由于设置时信号幅度略大造成的。 后面验证 LPC 时要用 100Hz 的正弦信号, 图 5 和图 6 为 100Hz 的正弦信号在 fir 滤波前和滤波后的结果: 图 5滤波前正弦波输出图 6 滤波后正弦波输出 3.2.3 FFT3.2.3 FFT 通过信号发生器输入一个频率为100Hz的正弦信号来验证FFT, 图7是输入信 号,图 8 是FFT 之后的频谱图,图 9 是对频谱图取模后的图: 南京理工大学南京理工大学 图 7 输入信号 图 8频谱图 图 9 频谱图取模 由图 9可以读出,FFT 之后谱线对应的点数为 56,从而计算可得信号的频率 为 100Hz。由此 FFT 模块得证。 3.3 LPC3.3 LPC 验证验证 3.3.1 CODEC3.3.1 CODEC 的下抽取采样的下抽取采样 DSP 内部设置采样率为 32KHz,而我们要求 16KHz 采样, 我们采取二倍下抽取 的方法来实现 16KHz 采样。图 9 和图 10 分别为下抽取前后的采样信号。 南京理工大学南京理工大学 图 9 下抽取前的采样信号 图 10下抽取后的采样信号 很明显,在 512 个采样点中,下抽取之后得到了更多的周期。 3.3.23.3.2 信号分帧信号分帧 将 16K 采样信号分成 50 帧,每一帧包含 320 个点,其中一帧的信号波形图 11: 图 11一帧的信号波形 3.3.3 LPC3.3.3 LPC 滤波滤波 首先比较 matlab 中的 LPC 系数和 C 中的系数,图 12 中左边为 C 中的 LPC 系 数,右边为 matlab 中的 LPC 系数,可以看到基本一致。 南京理工大学南京理工大学 图 12 LPC 系数比较 然后利用 LPC 系数进行 FIR 滤波,滤波之后的 lpcwav 波形如图 13: 图 13滤波之后的 lpcwav 波形 3.3.33.3.3计算残差计算残差 由公式:残差= 真实语音– 预测语音= 真实语音– LPC 系数*真实语音,进 行残差计算之后的波形输出为: 南京理工大学南京理工大学 图 14 残差计算之后的波形 3.3.43.3.4 对残差做对残差做 FFTFFT 运算运算 接着观察 lpcwav 的残差谱,即做 FFT 运算,得到的结果如下图: 图 15 残差谱 再对 FFTlpcerr 进行求模运算,得到的结果如下图: 南京理工大学南京理工大学 图 16残差谱取模 3.3.53.3.5 得到基音频率得到基音频率 根据残差谱的局部最值和频谱分辨率计算频率,找到最大值位置。最大值位 置即为基音频率。下图100Hz正弦信号经过LPC之后得到的基音频率。 图 17基音频率 从图中可以看到,得到的基音频率为109.375Hz。 3.43.4实验结果的验证实验结果的验证 我们采用了一种方法得到采样率为16KHz正弦信号, 比较LPC之后的基音频率, 从而验证了DSP中的LPC算法的正确性。 南京理工大学南京理工大学 3.4.13.4.1 验证方法验证方法 我们通过 Datasave 将信号源通过 AD 采样后产生的 wavsig 的 16 进制数据 从 CCS 中导出,并通过 matlab 转换成为十进制的数,生成代码如下: a=textr