用EP7211实现传呼信息实时语音合成和播放[5]

动力与环境 责任编辑:godzilla 2012-01-11

摘要:2.4语音中断服务例程嵌入式处理EP7211本身提供的外设语音录放Codec(coder/decoder)芯片可以实现语音的录入和播放功能。该模块提供2个独立的16字节长的数据发送和接缓冲区(FIFO),其为全双工模式,数字据点发速率是64kbps。芯片自身提供工作时钟、定时脉冲以及数据串/并和并/串转换功能。编程人员通过设置EP7211相应的控制寄存

  2.4 语音中断服务例程

  嵌入式处理EP7211本身提供的外设语音录放Codec(coder/decoder)芯片可以实现语音的录入和播放功能。该模块提供2个独立的16字节长的数据发送和接缓冲区(FIFO),其为全双工模式,数字据点发速率是64kbps。芯片自身提供工作时钟、定时脉冲以及数据串/并和并/串转换功能。编程人员通过设置EP7211相应的控制寄存器使能这些项功能,则每当数据收发缓冲区半慢或者半空时(8字节),芯片自身就会产生一次中断信号供外部处理。理论计算芯片中断速率是1ms/次。

  语音播放中断服务例程主要完成的工作是,当产生语音中断时,仍然有数据需要播放,则向语音数据发送缓冲区FIFO中写入指定数据,剩下的工作由Codec芯片本身来完成。中断服务例程ISR的伪代码如下(因为具体实现代码没有通用性,故此处用伪码描述):

  void IRQ_Codec_Handler(void)
  {
  while(检测系统状态寄存器,发现语音芯片数据发送缓冲区FIFO非满)
  {
  if(已经播放过的语音数据长度<给定的需要播放的语音数据长度)
  {
  向语音芯片发送数据缓冲区FIFO写入指定数据;
  调整已经播放过的语音数据长度;
  if(已经播放过的语音数据长度>=给定的需要播放的语音数据长度)//结束
  {
  禁止数据发送缓冲区中断;
  复位各相关的全局变量;
  程序返回;
  }
  }
  else
  {
  向语音芯片发送数据缓冲区FIFO写入默认数据
  0XFF;
  }
  }
  }

  3 试验结构和分析

  由于在设计阶段充分考虑过语音合成算法的大运算量和系统的实时性要求,故我们在具体实现的时候也采取了一些措施,比较突出的有:用ARM汇编语言来实现关键性的函数代码;语音合成时提高处理器EP7211的工作频率(处理器正常工作频率是18MHz);对于一些常用的三角函数计算,采用查表的方式等来加快程序执行速度。在PDA样机测试中,单字符合成时间在650ms左右,基本上能够满足实际应用需求。数据语音库经过处理之后,占用了729560字节也能够满足本PDA系统的存储的要求。

[1]  [2]  [3]  [4]  [5]  [6]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 0
  • 4
  • 6
专注在线职业教育24年

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!