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

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

[复制链接]
STMCU小助手 发布时间:2022-7-15 23:02
前言+ f+ v! s2 T8 e  W/ D  Y- b
本应用笔记说明了如何在STM32F101xx 和 STM32F103xx微控制器上利用编码解码器Speex软件实现语音合成器应用。
0 e& }% n1 D4 q6 Q  ^# dSpeex 是一款免费的音频编解码器,用于语音编码和解码。它能够对语音进行高度压缩同时保持良好音质。这让它成为那些使用留言回放或录音功能的应用的高性能解决方案,例如电话应答机、建筑和家庭安全系统、对讲机、智能家电、录音机或无绳电话等。
, b0 E* H  x6 f0 G- h0 U! g) o
; x; G- X6 l4 k1 Speex 编解码器概述
" `2 h  x# Q3 h5 n% z+ tSpeex 编解码器是一款开源的、取得专利并免版税的软件,用于语音压缩和解压缩。; I" N2 N* p- O8 s7 b" ~
Speex 基于 CELP(码激励线性预测),针对 2 至 44 kbps 比特率范围内的语音压缩而设计。
# e. c: N2 k* t7 ZSpeex 具有以下特点:
: j+ M7 w) L3 w$ a! d  j% p/ J. ]3 M– 以相同的比特流进行窄带 (8 kHz)、宽带 (16 kHz)和超宽带 (32 kHz) 压缩% f$ ^* f, b$ b6 l
– 强度立体声编码
4 n& x1 V/ H" m  P! ~– 数据包丢失隐藏$ f& q6 d) J2 P% Q' A
– 可变比特率操作 (VBR) – 语音活动检测 (VAD) – 非连续传输 (DTX) – 定点端口
- I. D4 Q3 D& @/ L& v– 回音消除器% `2 Z, p/ w$ F
– 噪声抑制
6 I; J- S  d8 I0 C1 CSpeex 具有很多其他编解码器所不具备的特点,例如可以进行强度立体声编码、在同一比特流中集成多种采样率以及具有 VBR 模式。
% j& m- z8 u- X% o" H: W6 C. S/ J% k+ v6 r

, F  g% ?  [; X( A2 语音合成器应用6 s. r% d% v! q1 ~, J; t
2.1 语音合成器概述- U% C+ c3 Y" F" G2 \3 r
语音合成器是一种语音处理应用,提供语音处理功能,如编码、解码、过滤和放大。
' e" C5 @( l. \) F8 G4 f/ ]/ s6 m, L典型的语音合成器应用包括一个语音处理模块和音频输入 / 输出接口。: U! b, ?% m: S6 E
本应用笔记中, Speex 编解码器固件充当了语音处理模块,音频输入 / 输出接口则利用STM32F101xx 和 STM32F103xx 的内嵌资源 (ADC 作为输入, PWM 作为输出)集成。
: |$ \* c! e5 |3 ySTM32F101xx 和 STM32F103xx 微控制器系列产品具有 12 位分辨率的多通道 ADC 和 1 µs的转换时间,以及 16 位定时器并能产生 PWM。这些特点使其能够实现低成本且高性能的音频应用。

9 l# B! Y7 m; s# e5 |& z  h2.2 硬件说明/ ~* e% z. l- z+ `" G
硬件由两个音频级组成:一个输入和一个输出,分别进行采集和播放语音 (请参看1)。
/ J/ W* p% N, A; H; t本应用笔记中,语音采集由微控制器的内部 ADC 实现,该 ADC 必须通过一个前置放大器连接到麦克风上。" A' L: e9 u/ @  T8 u/ f3 u7 {
语音合成由微控制器的内部定时器实现,该定时器为 PWM 模式。PWM 输出信号进行低通滤波,消除了高频分量,然后经过放大并发送到扬声器。
& n' w5 |9 w# [: Z( t

& O! ]. [% {% S1 O9 a* |/ W6 J

1 {" ?. ~. i# ]( D 9%OT3L08PZ}[VE5MHA]GFGD.png # W& g# `9 G1 J  _+ A9 B
/ k6 Q: ]: V2 ?- q
此应用说明适用于 OLIMEX(OLIMEX 网址为 www.OLIMEX.com)的 STM32F103-STK 板。: H- N" K. T1 H' [# s
该板具有一个输入音频接口和一个输出音频接口,它们连接到两个插座上,而插座连接到耳机 (或扬声器)和麦克风 (参考2)。
" R5 @$ U: {) d, G4 L  Y应用于OLIMEX板上的装置为STM32F103RBT6,它具有128 KB的Flash和20 KB的RAM。
: t. g# v5 T# w关于STM32F103-STK板的更多信息,请参考下面的网址:http://www.olimex.com/dev/stm32-103stk.html
; K+ i) S: i3 T3 m: K9 [
. [7 t7 H+ l3 H# `
GZ)`OYDCAQ$U%IS{OUT)ALK.png
( i9 N; `- t. W: l; c3 W' `" A1 z# j; {0 {. r) a9 ~$ Z
' z% q9 i4 @# W4 V3 A
2.3 Speex 编解码器实现
; Q4 M# [2 @& T3 f8 Z' _$ ?7 j, [2.3.1 Speex 编解码器设置, s1 t: u9 ?5 @8 n
在此应用笔记中, Speex 编解码器支持窄带语音信号 (8 kHz 采样),并实现改善 8 kbps 比特率的编码的作用。给定压缩比为 16:1。2 g# o2 g2 i- m% i$ V, B9 ]& S/ C
Speex 编解码器用一个 “ 质量 ” 的参数来控制比特率。该参数在编码设置中进行配置。
: x$ h- _, c1 y6 N9 d
要将比特率设为 8 kbps,质量参数须等于 4。由于此处 Speex 具有恒定的比特率 (等于 8kbps),质量参数也必须保持不变。
; x/ P& B! ~2 U/ L在本实现模型中,质量参数为 4,编码器的复杂度只能设为一个小于等于 2 的值。实际上,复杂度值大于 2 会导致编码解码器占用额外的 CPU 循环,这与期望的质量水平并不相符。为了获得最佳品质,建议将复杂度设为小于等于 2 的值。
# e# R! T1 z! ]

7 t; F" d' i+ s5 u, ]2.3.2 Speex 编解码器优化
5 y- ]7 W* ?: f- T/ Y为了减少内存使用率并提高性能,Speex 编解码器进行了改进,保持 8 kbps 的恒定比特率且复杂度值小于等于 2 ,这样即可优化 STM32F101xx 和 STM32F103xx 微控制器资源。
2 o  J" j" z  E( b还移除了不使用模式的文件、结构和常数表,并且修改了一些函数以适应该实现模型。+ _  a3 m: P$ d$ E
另一方面,为了充分利用 ARM Cortex™-M3 核(thumb-2 指令集)的优势,下面的函数(需要占用大量 CPU 负载周期的函数)以汇编语言写成:9 B& i+ C8 [! f4 F2 _$ W: F' A! z
● filter_mem16
" e! S4 b, ~* u4 N● fir_mem16
! R0 _1 s* |1 ?3 l9 y7 d● iir_mem168 f3 ?; @3 p( ]# k
● inner_prod! ]* V4 @' s" p9 x" p8 ^4 K; z
● vq_nbest
% V# T% o6 h0 Q在本应用笔记适用范围内, STM32F101xx 和 STM32F103xx 上的 Speex 编解码器实现利用
( B! g' z3 I3 _1 K两种不同的工具链进行开发和验证:
. i6 J. q6 t" f& v# d! M● 面向 ARM (5.11 版本)的 IAR 嵌入式 Workbench
" w$ @, a! J5 K% \' |! ~4 ^* c# R) ^● Keil µVision3 RealView MDK-ARM (3.22 版本)
5 V. ]4 S# V& v2 E3 kIAR EWARM 工具链利用 ARM IAR 汇编器开发汇编代码, Keil RVMDK 工具链则利用 ARM嵌入式汇编器进行开发。
: v. Q; M7 Q* e' p% {4 {所有改进和增加的文件,包括汇编代码,在固件包的 SpeexLib/stm32 目录中均有提供。/ d2 `- k! {1 x0 e, a5 J
注: 该实现可以很容易地经过调整而适应其他工具链 (编译器或汇编),如 GNU. r: X3 R7 F3 w0 `
8 c$ f5 @& _7 f0 @2 ]" d( b% c9 i
完整版请查看:附件/ I. D7 O8 e; N# V0 o# [, x

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 手机版