首页- 芯片解密常见问题- 正文

低端DSP芯片的语音处理算法分析

来源:芯片解密-龙芯世纪   时间:2012-02-09   阅读:3450

  语音信号检测(VAD) 技术,目的是为正确区分语音与各种背景噪声。在语音信号处理和通信等领域, 它有着十分重要的意义。本套算法集成了短时能量、过零率与短时平均幅度差(AMDF) 检测等算法的组合。
  短时分析将语音流分帧处理, 为减小语音帧的截断效应, 需要加窗处理; 窗口的形状和长度对分析影响很大, 不同的分析方法对窗函数的要求不尽一样; 可分为矩形窗、汉明窗和汉宁窗等。
  通常认为一个语音帧内含有1~ 7 个基调周期比较理想, 但人的语音的基调周期值是变化的, 从女性和儿童2 ms 到老年男子的14 ms( 即基调频率为500Hz~ 70 Hz) , 所以N 的选择是比较困难的, 折衷的选择N 为100~ 300 点比较合适。
  过零表示信号通过零值, 过零率即每秒内信号值通过零值的次数。对于离散时间序列, 过零则是指序列取样值改变符号, 过零率则是每个样本改变符号的次数。对于语音信号, 则是指在一帧语音中语音信号波形穿过横轴( 零电平) 的次数, 可以用相邻2 个取样改变符号的次数来计算。
  对于完全的周期信号, 则相距为周期的整数倍的采样点上幅值相等, 差值为0。实际的语音信号是一个准周期信号, 差值不为0, 但很小, 这些极小值将出现在整数倍周期的位置上。
  语音信号是一种时变的、非平稳的随机过程, 从整体来看其特征及表征其本质特征的参数均是随时间变化的。但是, 语音的形成过程与发声器官的运动密切相关, 这种物理运动比起声音振动速度来要缓慢得多, 因此语音信号可以认为在一个较短的时间段内是平稳的, 即具有短时平稳性。
  语音检测时, 为保证检测的准确性, 连续10 帧检测有效时才认为确实有语音, 连续20 帧检测无效时才认为确实无语音。为了满足多帧检测需求, 又不至于出现掉字情况, 同时还要保证检测信号和语音信号的同步性, 设计了一个环形缓冲区, 模拟语音通道1 和通道2 各有一个对应的环形缓冲区delay1和delay2, 每一个环形缓冲区都有3 个指针: 接收指针、处理指针和发送指针, 分别供DMA 通道0 中断服务程序、短时能量子函数和短时平均幅度差子函数、DMA 通道1 中断服务程序使用。
  系统的硬件实现, 核心器件为低端DSP 芯片TMS320VC5402 ( 以下简称C5402) , 片内DARAM 仅有16Kbyte, 地址有效范围0x0080H ~0x3FFFH, 其中配置地址有效范围为0x0000H ~0x005FH。
  除算法外, 在具体研制过程中遇到了双通道A/ D采样时通道无法有效控制、扩展片外RAM 后程序不能正常加载、系统因负荷过大不能正确启动等难题, 通过长期的探索和尝试, 这些问题都得到了妥善的解决, 并掌握了实现2 路A/ D 同时采样的状态控制字配置方法, 为算法的实施打下了坚实的基础。
  McBSP1 引脚控制寄存器相关配置与McBSP0相似, 额外配置如下: 发送时钟设置为内部模式; 接收时钟设置为外部模式; 发送时钟设置为下降沿触发。
  提出了采用平均幅度、过零率和短时能量等系列算法进行语音处理的原理及具体实现方法, 并介绍了承载该算法的硬件组成, 实践证明该语音处理模块硬件小巧, 语音质量好, 易于实现, 性价比较高。