然而,由于成本高昂且难度大,将语音功能集成到嵌入式系统中一直被认为是一项艰巨的任务。本文证明,使用带有脉冲宽度调制器 (PWM) 外设的 8 位 PIC® 微控制器,可以为嵌入式项目提供一种简单且低成本的语音集成方案。.

一种语音编码方法是自适应差分脉冲编码调制 (ADPCM),这是一种将模拟信号数字化的技术。ADPCM 利用连续语音样本之间的高度相关性,对预测样本与实际语音样本之间的差异进行编码。在播放或解码时,可以预测未来的样本。ADPCM 能够提供高效的压缩和高质量的语音再现。.


ADPCM算法有多种类型。交互式多媒体协会(IMA)算法通过简化一些运算并在适当情况下使用查找表,显著降低了数学复杂度,使其成为8位微控制器的理想选择。由于播放是主要目标,因此编码将使用PC程序,而解码将由微控制器处理。. 


为了实现交互式播放,语音片段被分割成一个个独立的、可寻址的文件。例如,为了朗读温度数值,数字 1 到 9、10 到 19、20 到 29、30、40、50、60、70、80 和 90 分别存储在不同的文件中。因此,当温度为 32 度时,语音会依次播放两个文件:30 和 2。系统使用一个简单的文件系统来存储和检索这些独立的语音文件。.

 

语音2的整合存储语音文件所需的内存量取决于比特数、采样率和数据量。对于会议级音质,需要 16 位比特,采样率为每秒 8000 个样本,这相当于 4000 Hz 的带宽。因此,一秒钟的语音文件大小为 16,000 字节。
使用 IMA 的 ADPCM 算法对语音文件进行编码后,压缩后的大小仅为原始大小的四分之一。根据项目所需的语音量,可以将语音文件存储在微控制器的程序存储器或外部串行闪存中。1 兆比特(128 KB)的串行闪存大约可以存储 32 秒的语音文件。


图 1 所示的流程图总结了所采取的步骤。首先,将语音文件以 WAV 文件格式保存到 PC 中。其次,使用音频编辑软件,对原始语音文件进行调整并重采样至 8000 Hz,然后保存为 16 位无符号小端单声道文件。第三,使用 ADPCM 算法对文件进行编码,并保存为二进制文件。第四,将所有文件编译到文件系统中。最后,将文件存储在微控制器或外部存储器上。.

 

语音3的整合图 2 展示了该系统的硬件结构。微控制器从内存中读取待播放的语音文件,并使用 PWM 模块对文件进行解码。PWM 模块的输出信号经过一个带宽为 4000 Hz 的低通滤波器进行滤波。得到的模拟信号可以放大并通过扬声器播放。.


只需投入少量精力录制语音、将其编码为 ADPCM 格式并存储在内存中,嵌入式项目即可集成自然逼真的语音。但这还不是全部。由于这些文件只是录音,因此还可以添加铃声、音调或嗡嗡声。增强嵌入式设计用户体验的唯一限制就是工程师的想象力。

注:Microchip 名称和徽标、PIC 和 MPLAB 是 Microchip Technology Inc. 在美国和其他国家/地区的注册商标。文中提及的所有其他商标均属于其各自所有者。

 

参考资料:
Microchip 应用笔记 AN643 包含简化版 ADPCM 算法的源代码,可在以下网址找到:
http://www.microchip.com/stellent/idcplg


更多信息或报价