你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在 STM32F101xx 和 STM32F103xx 微控制器上使用 Speex 音频编解码器进行语音合成器演示

[复制链接]
STMCU小助手 发布时间:2022-7-15 23:02
前言3 g& q+ _8 h7 p* W
本应用笔记说明了如何在STM32F101xx 和 STM32F103xx微控制器上利用编码解码器Speex软件实现语音合成器应用。
. }4 g" x* A/ ]3 u, dSpeex 是一款免费的音频编解码器,用于语音编码和解码。它能够对语音进行高度压缩同时保持良好音质。这让它成为那些使用留言回放或录音功能的应用的高性能解决方案,例如电话应答机、建筑和家庭安全系统、对讲机、智能家电、录音机或无绳电话等。
* j0 K5 W8 r! D' i: D9 G+ j/ ~9 \4 r# p6 R8 P4 T2 ~
1 Speex 编解码器概述. b% D2 g) O. B% I+ W+ P
Speex 编解码器是一款开源的、取得专利并免版税的软件,用于语音压缩和解压缩。
. [, Z1 q1 q- d; tSpeex 基于 CELP(码激励线性预测),针对 2 至 44 kbps 比特率范围内的语音压缩而设计。+ E2 ~# e9 E, }5 e  n/ k
Speex 具有以下特点:7 ?5 p2 o3 f  `7 G# I' \
– 以相同的比特流进行窄带 (8 kHz)、宽带 (16 kHz)和超宽带 (32 kHz) 压缩" M, \6 c5 O/ |
– 强度立体声编码
( v- Z* \( n: S' c8 ?- Q3 X8 d' {– 数据包丢失隐藏
8 _  I# d0 S, _! |  z– 可变比特率操作 (VBR) – 语音活动检测 (VAD) – 非连续传输 (DTX) – 定点端口
( a4 o0 @$ ~) B; E/ w$ j5 }* D– 回音消除器
1 \1 r9 b' u+ E% r) T– 噪声抑制
" K% B! T- U3 s. c0 H0 o8 r% rSpeex 具有很多其他编解码器所不具备的特点,例如可以进行强度立体声编码、在同一比特流中集成多种采样率以及具有 VBR 模式。) n- T1 _! O( Y1 B3 L. i, I
1 `( j& |6 P! K  U: u$ Q

) d* v7 p& U2 ~2 语音合成器应用
' [2 `. R0 Q+ V2.1 语音合成器概述
8 q6 n2 D- \. O& O$ G语音合成器是一种语音处理应用,提供语音处理功能,如编码、解码、过滤和放大。& n! g/ w- U6 q  J9 j
典型的语音合成器应用包括一个语音处理模块和音频输入 / 输出接口。/ P) T( u' ?4 z' j" B
本应用笔记中, Speex 编解码器固件充当了语音处理模块,音频输入 / 输出接口则利用STM32F101xx 和 STM32F103xx 的内嵌资源 (ADC 作为输入, PWM 作为输出)集成。- S8 h; J' l- C% Z" w4 K
STM32F101xx 和 STM32F103xx 微控制器系列产品具有 12 位分辨率的多通道 ADC 和 1 µs的转换时间,以及 16 位定时器并能产生 PWM。这些特点使其能够实现低成本且高性能的音频应用。

, U7 Z6 S  Y  v: N' B) C2.2 硬件说明0 `! r. D& }5 L0 X# c# O4 z( k8 }
硬件由两个音频级组成:一个输入和一个输出,分别进行采集和播放语音 (请参看1)。( J, f) l: N! j9 ^* q; c+ D! Q" q& d8 j
本应用笔记中,语音采集由微控制器的内部 ADC 实现,该 ADC 必须通过一个前置放大器连接到麦克风上。
3 L8 S  l7 P/ z+ c0 o语音合成由微控制器的内部定时器实现,该定时器为 PWM 模式。PWM 输出信号进行低通滤波,消除了高频分量,然后经过放大并发送到扬声器。
# Y) ]& s, ]3 ~3 W: h
2 j7 B8 @( J' i% F( a: t$ T

' h% x8 o5 i2 \' M3 @1 A 9%OT3L08PZ}[VE5MHA]GFGD.png ' x/ C  E+ k! r6 n" b5 C
0 A0 R# d# e' ]+ R) H" U4 }
此应用说明适用于 OLIMEX(OLIMEX 网址为 www.OLIMEX.com)的 STM32F103-STK 板。
6 ^# m/ U8 M# o* `' x: ?该板具有一个输入音频接口和一个输出音频接口,它们连接到两个插座上,而插座连接到耳机 (或扬声器)和麦克风 (参考2)。' O( S. v% H' @4 Y& o* I) s
应用于OLIMEX板上的装置为STM32F103RBT6,它具有128 KB的Flash和20 KB的RAM。# c3 {. [0 I0 f% K# o
关于STM32F103-STK板的更多信息,请参考下面的网址:http://www.olimex.com/dev/stm32-103stk.html
. X$ R4 O* U$ F' E/ Z1 z1 v" p6 X# T% |/ R+ Y8 }( A3 S4 O; B' O7 R6 }
GZ)`OYDCAQ$U%IS{OUT)ALK.png
, K8 Y. r1 K$ L
1 s. ^# }# r) l5 M% |! W8 D; x# V! M  U5 u+ ]  |
2.3 Speex 编解码器实现& J% Y; ^- ^. I8 A, g
2.3.1 Speex 编解码器设置4 I1 ]4 O- o  {2 ~; x
在此应用笔记中, Speex 编解码器支持窄带语音信号 (8 kHz 采样),并实现改善 8 kbps 比特率的编码的作用。给定压缩比为 16:1。
. r' y& C( q* E+ d9 |+ ZSpeex 编解码器用一个 “ 质量 ” 的参数来控制比特率。该参数在编码设置中进行配置。

2 v" w9 X3 F- k, f$ r! ~2 g要将比特率设为 8 kbps,质量参数须等于 4。由于此处 Speex 具有恒定的比特率 (等于 8kbps),质量参数也必须保持不变。- C2 a8 d$ [- N* ~( M; Q; e
在本实现模型中,质量参数为 4,编码器的复杂度只能设为一个小于等于 2 的值。实际上,复杂度值大于 2 会导致编码解码器占用额外的 CPU 循环,这与期望的质量水平并不相符。为了获得最佳品质,建议将复杂度设为小于等于 2 的值。
9 H. _, h( A% `. U. R; e
) ~) ~& ~" e* p5 I; r9 H9 V
2.3.2 Speex 编解码器优化
" R: I4 S+ Z% z3 K0 k* h) I为了减少内存使用率并提高性能,Speex 编解码器进行了改进,保持 8 kbps 的恒定比特率且复杂度值小于等于 2 ,这样即可优化 STM32F101xx 和 STM32F103xx 微控制器资源。
/ V% T$ F% h; V: x) G) F' [+ I- x还移除了不使用模式的文件、结构和常数表,并且修改了一些函数以适应该实现模型。
) C8 L. j9 z1 ~- \$ _# Y另一方面,为了充分利用 ARM Cortex™-M3 核(thumb-2 指令集)的优势,下面的函数(需要占用大量 CPU 负载周期的函数)以汇编语言写成:# n7 m3 c: M/ |5 A0 i* |
● filter_mem161 A3 g2 T* _' E
● fir_mem16, @" |3 [# U: X4 j+ \# `8 y
● iir_mem16
/ ]- o. s5 `5 z6 t● inner_prod
! K, i7 r. N' j* o+ L0 _● vq_nbest4 O& x; c' ?/ I* \: h
在本应用笔记适用范围内, STM32F101xx 和 STM32F103xx 上的 Speex 编解码器实现利用  w! Z6 l' S/ g* e2 Y/ J
两种不同的工具链进行开发和验证:3 w6 p/ L4 d" x# q
● 面向 ARM (5.11 版本)的 IAR 嵌入式 Workbench) l3 c; e  J; j9 ]3 [5 s
● Keil µVision3 RealView MDK-ARM (3.22 版本)  y3 \1 {2 `9 e( ]& ~% ^$ N
IAR EWARM 工具链利用 ARM IAR 汇编器开发汇编代码, Keil RVMDK 工具链则利用 ARM嵌入式汇编器进行开发。2 p( v) x7 n2 ~& G  w6 P4 }! c
所有改进和增加的文件,包括汇编代码,在固件包的 SpeexLib/stm32 目录中均有提供。
8 x1 i& t; Y! i" m; y& u: P注: 该实现可以很容易地经过调整而适应其他工具链 (编译器或汇编),如 GNU
# b3 ~# `* O* w0 h7 G$ \
+ A- R( l4 q6 P* \! X. `( \+ u
完整版请查看:附件
: r- R+ X% ^3 X1 F+ W8 f! r

CD00204907_ZHV2.5.pdf

下载

401.08 KB, 下载次数: 25

收藏 评论0 发布时间:2022-7-15 23:02

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版