打印

MSP430 的语音与音频压缩/解压缩技术

[复制链接]
1090|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
i1mcu|  楼主 | 2013-10-31 01:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本应用报告将介绍 IMA 自适应差分脉冲代码调制 (ADPCM) 的压缩/解压缩算法,讨论在 MSP430上使用 ADPCM 库的相关步骤。我们在介绍 ADPCM 库的使用时,将给出两种均采用 MSP430 微控制器片上信号链解决方案的语音记录器实例。
1 引言
  采用微控制器 (MCU) 来实施语音记录器比较简单。许多 MCU 均采用集成模数 (A/D)转换器。扩音器将捕获到的声音提供给放大器,然后再馈送给 A/D 转换器的模拟输入。可将录制的声音存储在闪存或 RAM等存储器中,按下按钮就能触发 MCU 以播放录制到的声音,其原理是将存储的数据先提供给数模 (D/A) 转换器,然后再提供给音频功率放大器
  利用 MSP430 很容易实现这种语音记录器。MSP430 微控制器利用集成外设来实现片上模拟信号链。此外,MSP430 的 CPU 处理能力非常强大,足以执行录制声音的压缩。

2 压缩与解压缩算法

  举例来说,实现语音记录器的最简单办法就是将 A/D 转换器转换结果(如 12 位采样)直接存储在闪存中。音频数据大多数时间都不使用整个 A/D 转换器范围,也就是说,冗余数据也存储在闪存中。压缩算法可去除这些冗余信息,从而减小所存储数据的容量。
  自适应差分脉冲代码调制 (ADPCM) 就是此种类型的压缩算法。ADPCM 算法存在各种类型,但都使用量化器差分编码与量化器中自适应量化阶步长方案。在进一步讨论 IMA ADPCM 算法用于相关代码之前,我们首要来简单介绍一下差分 PCM 编码。

相关帖子

沙发
i1mcu|  楼主 | 2013-10-31 01:43 | 只看该作者
2.1 差分脉冲代码调制 (DPCM)
  DPCM通过使用当前采样与前一个采样的差值来对模拟音频输入信号进行编码。图 1 显示了DPCM 编码器解码器的结构图。在本例中,我们用信号估算Se(n) 而非前一个输入来决定信号差值d(n),从而确保了编码器使用的信息与解码器相同。如果编码器使用的是上一个输入采样的话,那么就会造成量化的累积错误,从而使重建信号与原始输入信号不同。通过采用如图 1 所示的信号估算,我们能避免重建信号 Sr(n) 与原始输入信号出现差异。重建信号 Sr(n) 是预测器(predictor) 的输入,其决定了下一个信号估算 Se(n+1)。



                         图 1. DPCM 编码器与解码器结构图

使用特权

评论回复
板凳
i1mcu|  楼主 | 2013-10-31 01:44 | 只看该作者
图 2 显示了一小段录制音频流,并通过两个示意图给出了模拟音频输入采样(PCM 值)与连续采样(DPCM 值)间差值的比较。
{{分页}}
  PCM 值的范围在 26 到 203 之间,总共 177 个步长。编码的 DPCM 值范围在 –44 至 46之间,总共 90个步长。尽管量化器步长仅为 1,但这种 DPCM 编码已经实现了输入数据的压缩功能。只需选择较大的量化器步长即可将编码 DPCM值的范围进一步缩小。



                              图 2. 8 位音频数据与连续采样差值的比较
                                  (差分 PCM 步长 = 1)

使用特权

评论回复
地板
i1mcu|  楼主 | 2013-10-31 01:44 | 只看该作者
2.2适应差分脉冲编码调制 (ADPCM)
  ADPCM 是 DPCM的一个变体,编码器步长会有差异。语音输入信号的强度差异体现在不同的扬声器器上,也体现在语音输入信号的语音和非语音部分上。量化器步长对每个采样都进行适应调节,确保高低输入信号强度都能实现同样的编码效率。图 3 显示了采用步长调节技术的修订版 DPCM结构图。



                                 图 3. ADPCM 编码器和解码器结构图

使用特权

评论回复
5
i1mcu|  楼主 | 2013-10-31 01:45 | 只看该作者
ADPCM 编码器通过解码 ADPCM 代码进行信号估算 (Se),这就是说,解码器是 ADPCM 编码器的一部分,因此已经编码的音频数据流只能用解码器进行重放,这样解码器就必须对编码器加以跟踪。
  最初的编码器和解码器信号估算等级以及步长大小调节等级必须在开始编码或解码前就加以定义,否则,编码或解码的值就会超过范围。
3  MSP430 片上信号链
  MSP430 系列微控制器支持多种片上外设。为了实现完整的片上信号链解决方案,MSP430 至少必须提供 1 个 A/D 转换器模拟输入和 1 个 D/A 转换器。下面我们将介绍两种 MSP430 解决方案。
{{分页}}
3.1  MSP430F169 片上信号链解决方案
  MSP430F169 包括 1 个集成 12 位 SAR A/D 转换器,作为一种硬件乘法器模块,它能高效支持数字滤波器,此外 MSP430F169 还包括 1 个集成 12 位 D/A 转换器模块。图 4 给出了 MSP430F169 信号链电路图。



                                  图 4. MSP430F169 片上信号链解决方案

使用特权

评论回复
6
i1mcu|  楼主 | 2013-10-31 01:45 | 只看该作者
上述配置也适合采用外部串行闪存的情况,从而可以满足音频数据的存储需求。外部闪存可通过 MSP430 的 I2C 或 SPI 接口来连接。MSP430F169 DMA 模块可自动将接收到的数据传输给 RAM,从而大幅降低了 CPU 的负载。
3.2  MSP430FG4618 片上信号链解决方案
  我们用 MSP430FG4618 可以实现另一种片上信号链解决方案。MSP430F169 可支持 60 KB 的集成闪存,而 MSP430FG4618 则可支持 116 KB 的闪存。MSP430FG4618 的另一优势在于,它还集成了运算放大器模块。运算放大器可用于放大扩音器的输入及数模转换器的模拟输出。图 5 显示了 MSP430FG4618 信号链电路图。具体配置采用的是 TI 推出的 MSP430FG4618/F2013 试验板。该评估板可与相关代码示例配合使用。



                                       图  5. MSP430FG4618 片上信号链解决方案

使用特权

评论回复
7
黄小俊| | 2013-10-31 11:46 | 只看该作者
不错。好好学习。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

8556

帖子

9

粉丝