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

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

[复制链接]
STMCU小助手 发布时间:2022-7-15 23:02
前言6 _, ^1 F' G9 a2 R9 ?: `
本应用笔记说明了如何在STM32F101xx 和 STM32F103xx微控制器上利用编码解码器Speex软件实现语音合成器应用。
1 Z" Q8 R- _: K3 P- N9 o) g+ _2 m/ ESpeex 是一款免费的音频编解码器,用于语音编码和解码。它能够对语音进行高度压缩同时保持良好音质。这让它成为那些使用留言回放或录音功能的应用的高性能解决方案,例如电话应答机、建筑和家庭安全系统、对讲机、智能家电、录音机或无绳电话等。2 z( z' F, J9 k/ ^# `6 `
  K; [+ C, ?* [. w
1 Speex 编解码器概述
$ y$ H1 W! c( }5 c% y" l% kSpeex 编解码器是一款开源的、取得专利并免版税的软件,用于语音压缩和解压缩。
: F1 I* {) b$ _4 Y+ {& J" r2 C, Q9 ISpeex 基于 CELP(码激励线性预测),针对 2 至 44 kbps 比特率范围内的语音压缩而设计。
  ~  r% ]$ q6 ]  ^- u( k2 V% mSpeex 具有以下特点:
3 |' u" `* i" E( F– 以相同的比特流进行窄带 (8 kHz)、宽带 (16 kHz)和超宽带 (32 kHz) 压缩6 w0 P/ `0 m& }& j2 g
– 强度立体声编码# s6 f  E& l' A' m1 O
– 数据包丢失隐藏
* c" h& F( p; ]– 可变比特率操作 (VBR) – 语音活动检测 (VAD) – 非连续传输 (DTX) – 定点端口
3 t1 I& G9 D* a/ p. \3 I  c– 回音消除器2 [# e, f) t" j# u
– 噪声抑制5 }, ?6 E. _1 Z( D9 T& a' b
Speex 具有很多其他编解码器所不具备的特点,例如可以进行强度立体声编码、在同一比特流中集成多种采样率以及具有 VBR 模式。5 k1 K" u$ q% W& L% _; S: A
# P" O/ d6 P9 j  y1 a" ~$ M
& r$ v9 C8 E' X  b* B$ p
2 语音合成器应用
3 r% ?- d8 j1 v! B1 [2.1 语音合成器概述8 j# Q. F+ X/ y0 o' Y5 c
语音合成器是一种语音处理应用,提供语音处理功能,如编码、解码、过滤和放大。
  e! b. U1 X2 x; Z2 Y9 F典型的语音合成器应用包括一个语音处理模块和音频输入 / 输出接口。! g$ I# u3 P# C  `0 N0 p$ ?
本应用笔记中, Speex 编解码器固件充当了语音处理模块,音频输入 / 输出接口则利用STM32F101xx 和 STM32F103xx 的内嵌资源 (ADC 作为输入, PWM 作为输出)集成。/ a' Z  k# s! }2 h
STM32F101xx 和 STM32F103xx 微控制器系列产品具有 12 位分辨率的多通道 ADC 和 1 µs的转换时间,以及 16 位定时器并能产生 PWM。这些特点使其能够实现低成本且高性能的音频应用。

4 e# _; `& n- j" g8 |2.2 硬件说明
8 A! V# Y# J4 N0 X6 L' w) ^3 A3 Z硬件由两个音频级组成:一个输入和一个输出,分别进行采集和播放语音 (请参看图 1)。
6 W1 u3 n! K* K. v本应用笔记中,语音采集由微控制器的内部 ADC 实现,该 ADC 必须通过一个前置放大器连接到麦克风上。
* @+ u( T! w/ ?9 Y: h语音合成由微控制器的内部定时器实现,该定时器为 PWM 模式。PWM 输出信号进行低通滤波,消除了高频分量,然后经过放大并发送到扬声器。
" _4 u( k, @  z

: ^) M& R2 C, z3 L
+ B0 q) r/ [3 o, I5 w' A, z* @
9%OT3L08PZ}[VE5MHA]GFGD.png $ e( \3 J+ s9 z' L7 q5 b
8 n' r9 h+ G: r  a
此应用说明适用于 OLIMEX(OLIMEX 网址为 www.OLIMEX.com)的 STM32F103-STK 板。* F$ |, ?* V+ r: k
该板具有一个输入音频接口和一个输出音频接口,它们连接到两个插座上,而插座连接到耳机 (或扬声器)和麦克风 (参考图 2)。
* N+ Q" X! H4 n* E6 N$ E1 M应用于OLIMEX板上的装置为STM32F103RBT6,它具有128 KB的Flash和20 KB的RAM。
2 F5 P# x) }  p6 Y关于STM32F103-STK板的更多信息,请参考下面的网址:http://www.olimex.com/dev/stm32-103stk.html。% T3 M% n7 ^0 Y( K2 @$ e
. J$ W; N" a" p, r& V# P
GZ)`OYDCAQ$U%IS{OUT)ALK.png
8 g. O5 |" ?6 \% M6 o, Y$ h' |, G$ c0 D. G& P9 D- _
7 Y5 `! a) e8 y5 w; ~7 F8 F
2.3 Speex 编解码器实现1 o( H  [5 c; P$ n: n) A
2.3.1 Speex 编解码器设置
' D  V9 E* u  j$ e: M% _在此应用笔记中, Speex 编解码器支持窄带语音信号 (8 kHz 采样),并实现改善 8 kbps 比特率的编码的作用。给定压缩比为 16:1。
- [9 q( @6 ~! E. ]( {Speex 编解码器用一个 “ 质量 ” 的参数来控制比特率。该参数在编码设置中进行配置。

# y: X8 O. L: b6 ^. Z5 P. r1 A( R. y要将比特率设为 8 kbps,质量参数须等于 4。由于此处 Speex 具有恒定的比特率 (等于 8kbps),质量参数也必须保持不变。7 n; d1 ~7 ~" y3 F& E* q
在本实现模型中,质量参数为 4,编码器的复杂度只能设为一个小于等于 2 的值。实际上,复杂度值大于 2 会导致编码解码器占用额外的 CPU 循环,这与期望的质量水平并不相符。为了获得最佳品质,建议将复杂度设为小于等于 2 的值。

5 j  L# N% _- U8 O6 ~+ {1 [: J: A2 e& M* y! g' ^
2.3.2 Speex 编解码器优化
! J& x& _) a+ R" G3 n为了减少内存使用率并提高性能,Speex 编解码器进行了改进,保持 8 kbps 的恒定比特率且复杂度值小于等于 2 ,这样即可优化 STM32F101xx 和 STM32F103xx 微控制器资源。. ]" H) q' x( u! h
还移除了不使用模式的文件、结构和常数表,并且修改了一些函数以适应该实现模型。
! X' Q" U% t( f" \" g* m1 }另一方面,为了充分利用 ARM Cortex™-M3 核(thumb-2 指令集)的优势,下面的函数(需要占用大量 CPU 负载周期的函数)以汇编语言写成:. g* K8 T- O1 v5 K
● filter_mem16$ J# f/ m4 y3 Q. a* M: q0 @, x
● fir_mem16
! ~' j* W# s2 f9 E4 G) v: f( }● iir_mem16
9 w0 `$ [* N  p, [1 c● inner_prod
" Y) I( e) W- ]● vq_nbest5 o. X9 C8 C3 u( H2 p
在本应用笔记适用范围内, STM32F101xx 和 STM32F103xx 上的 Speex 编解码器实现利用* W4 Q% d/ V* c6 K" T
两种不同的工具链进行开发和验证:' I& |& |) d9 A9 }- T: u, n
● 面向 ARM (5.11 版本)的 IAR 嵌入式 Workbench- H. c/ t% s4 N* @: x/ K
● Keil µVision3 RealView MDK-ARM (3.22 版本)
/ M1 i6 _, W: k, P+ ^IAR EWARM 工具链利用 ARM IAR 汇编器开发汇编代码, Keil RVMDK 工具链则利用 ARM嵌入式汇编器进行开发。4 U; a6 \$ m- s4 D) i: h1 g; e
所有改进和增加的文件,包括汇编代码,在固件包的 SpeexLib/stm32 目录中均有提供。
) M* U' q, o9 l9 r, r注: 该实现可以很容易地经过调整而适应其他工具链 (编译器或汇编),如 GNU。5 H# m( L2 z" K9 p* \9 @
3 Q: v1 ?7 h: D0 _5 h3 z8 D
完整版请查看:附件
0 N# V  L, C! ?6 p

CD00204907_ZHV2.5.pdf

下载

401.08 KB, 下载次数: 33

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

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版