便携式语音数字化网络传输系统设计
2020-12-02牛勇钢
牛勇钢
(中国民航大学电子信息与自动化学院,天津 300300)
随着计算机技术和互联网通信技术的发展,数字化在中国经济社会生活中扮演着重要角色,各行业都在大力推进数字化建设[1]。现实生活中人们听到的声音是以模拟量存在的,信号数据量大、抗干扰能力弱,不便进行运算、存储及网络传输,因此将原始语音信号进行数字化处理十分必要[2]。随着数字音频技术和电子集成技术的发展,语音数字化系统已逐渐成熟,各种嵌入式语音数字化及网络传输系统应运而生。
文献[3-4]设计的数字化语音存储与回放系统,均具有体积小、功耗低的特点,但文献[3]设计的带通滤波电路通带范围较窄、上限频率低,文献[4]设计的采样频率较低,虽然系统低频效果较好,但存在高频语音信号失真较严重的问题。文献[5]实现的语音数字化通信系统,基于RS485 总线设计,具有成本低、适合多设备交互、传输速率较高的特点,但存在总线利用率低且无容错机制的问题。文献[6]设计的数字化语音系统,采用改进型静音压缩算法,节省了语音数据的存储空间,但牺牲了一定的语音质量。如果后端用于语音识别与分析系统,将会影响语音识别的准确度。文献[7]主要研究语音数字化传输过程中信息的隐藏及盲提取技术,虽然增强了数字化语音传输的安全性,但由于数据加密及提取需要消耗较大的计算资源,对嵌入式语音数字化终端的处理器带来极大挑战,仅适合语音量小且对保密性要求较高的情况。
结合以上语音数字化系统的优缺点,设计了一种语音数字化及网络传输系统。针对现阶段基于嵌入式平台的语音数字化系统存在语音解码准确率不理想、总线传输速度欠佳的问题,采用两片高速ARM 处理器分别处理语音解码和以太网传输过程,保证了语音数字化后的高还原度和网络传输的高速性能。通过加入高速以太网通信功能,数据传输速度有了大幅提高,可将数据传输至计算机端,解决了嵌入式终端存储空间小的问题,且便于后期进行语音识别、分析、处理等。采用的WM8978 芯片功耗低、体积小易便携,且信噪比较高,能够减少风噪声。系统还加入了容错机制,能够降低误码率,其网络传输功能设计具有网络传输易配置、丢包率低的特点。
1 系统总设计
1.1 功能结构设计
根据系统实现的基本功能,系统功能结构设计如图1所示。
图1 语音数字化及传输处理过程Fig.1 Voice digitization and transmission processing flow
首先是语音模拟信号输入,语音输入后预处理部分主要是进行混叠滤波操作,目的是提取此范围内的频谱分量,然后进行采样得到数字化编码[8]。其中采样频率直接决定了声音的保真度,频率越高,采样信号与源声音信号越吻合,同时采样得到的数据量也越大。采样频率既要保证语音特征的保留提取,又需使语音数字化采样与传输在处理器处理能力范围内。然后将语音数字信号进行网络传输,最后将其还原为模拟语音信号。
1.2 框架结构设计
针对以上语音数字化及网络传输系统的设计目标,考虑硬件成本和性能,设计的系统结构框图如图2所示。
图2 系统结构框图Fig.2 System block diagram
系统前端为音频滤波及数字化采样电路,主要选用带扬声器驱动的立体声多媒体数字信号编译码芯片WM8978,采样数据通过I2S(inter-IC sount bus)接口发送给处理器STM32F405,经过解析处理,将音频数字化数据通过串口发送给同型号的另1 块单片机,该单片机用于以太网信息配置,通过SPI 接口控制以太网接口控制芯片W5500,配置后将数据通过TCP/IP协议透传到服务器端进行存储。
由于语音数据量较大,为保证系统数字化处理及网络传输的实时性及准确性,系统使用两片STM32F405处理器分别处理数字化功能和网络传输功能。此外以太网控制单片机留有1 个RS232 接口,方便对服务器IP 地址及相应接收数据的端口号进行配置。
2 系统硬件设计
2.1 音频解码方案设计
WM8978 是一个低功耗、高质量的立体声多媒体数字信号编译码专用芯片,具有高级的片上数字信号处理功能,同时具备ADC 音频采样及DAC 音频输出功能,在ADC 线路上提供了一个数字滤波功能,能有效减少风噪声,主要应用于便携式设备需要音频采集的场所[9]。利用其设计的音频采样电路如图3所示。
WM8978 除了引出I2S 音频接口外,控制接口可以操作为3 线或2 线微处理器接口,MODE 引脚确定2 线或3 线模式,系统设计中MODE 引脚通过下拉电阻接地,配置为2 线模式,即I2C(inter-integrated circuit)总线模式。I2C 接口作用是在启动音频采样前对WM8978 内部寄存器进行配置,如设置采样声道增益、采样率、采样数据位数及I2S 工作模式等。
I2S 是针对数字音频设备之间的音频数据传输而制定的一种总线标准[10]。在I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。WM8978芯片I2S 接口支持左对齐、右对齐和I2S 飞利浦标准模式及PCM 和DSP 模式。系统配置WM8978 I2S 接口模式为I2S 标准模式,数据长度配置为16 位,为保证音频数据的准确传输,STM32F405 单片机也应将I2S 接口配置成相同模式。
系统设置采样参数为44.1 kHz 采样频率,16 位数据长度,左右双声道。语音数字化后数据量大,设置STM32F405 单片机串口波特率为3 000 kHz 进行传输,可以满足实时传输要求。
2.2 以太网传输方案设计
由于音频数字化编码后数据量较大,且以太网对传输实时性要求较高,因此对于音频数字化与以太网传输部分分别采用单独的处理器进行功能实现,以太网传输部分采用STM32F405 单片机通过SPI 总线对W5500 芯片进行Socket 配置和音频数据的透传。
图3 WM8978 音频采样电路Fig.3 WM8978 audio sampling circuit
W5500 作为高性能以太网接口芯片系列之一,是一款全硬件TCP/IP 嵌入式以太网控制器[11]。具有8 个独立的硬件Socket,各路通信互不影响,有很好的稳定性。进行嵌入式系统设计时不用考虑网络传输协议的实现部分,此部分完全由芯片硬件实现,开发应用时只需对Socket 编程配置即可。W5500 芯片外围电路简单,电路如图4所示。
对W5500 进行配置时,需要设置本机MAC 地址、网关地址、子网掩码、IP 地址、端口号及目标服务器的IP 和端口等信息,这些信息在初始化时单片机可通过SPI 接口对W5500 的寄存器进行配置。初始化数据存储在单片机的EEPROM 中,掉电不会消失,需要更改配置信息时,由预留的RS232 接口连接上位机或通过本地网络进行更改。
图4 以太网控制电路Fig.4 Ethernet control circuit
3 系统软件设计
软件设计主要包括语音采集和以太网传输配置部分,两部分程序并行存在于两片处理器中,此种方法能够降低各功能间的耦合性,保证了语音采样与传输的实时性,相当于双线程运行的CPU。
3.1 WM8978 语音采集
STM32F405 处理器通过I2C 访问WM8978 内部寄存器,实现芯片工作环境配置,此种模式下,芯片设备地址[12]固定为0011010。WM8978 内部有48 个可控寄存器,标号R0~R47,每个寄存器控制字共16 位,前7 位是地址位,用来选择存取的寄存器,后9 位是寄存器数据。I2C 数据写入时先写入固定的设备地址,再发送7 位寄存器地址加数据位最高位数据,然后再发送剩下的低8 位数据。
配置好采样率、左右通道输入增益之后,开启ADC进行采样及旁路输出,通过耳机监听输入音频,然后设置I2S 为飞利浦标准模式,该模式的数据长度为16 位。对于立体声输入,处理器通过WS 信号来区分左右声道的数据。如图5所示,对于所有I2S 数据格式和通信标准而言,始终会先发送最高有效位(MSB 优先)。在传输时为避免左右声道及高8 位和低8 位数据造成混淆,程序设置每传输64 B 发送4 B 数据0xFF 0xFF 0x00 0x00,接收时进行识别判断。
图5 I2S Philips 协议Fig.5 I2S Philips protocol
3.2 W5500 以太网配置
W5500 内置TCP/IP 协议栈,提供SPI 协议接口作为微控制器接口,W5500 有1 个通用寄存器,8 个Socket 寄存器区及对应每个Socket 的收发缓存区[13]。程序设计时,只用对其相关寄存器进行初始化配置即可实现网络化传输。详细的初始化过程如下。
1)SPI 配置
W5500 与MCU 接口SPI 有两种工作模式,根据SCSn 引脚是否受MCU 可控分为可变数据长度模式(VDM)和固定数据长度模式(FDM),当采用FDM 模式时需将SCSn 引脚接地。
2)装载网络参数
读取EEPROM 中网络参数数值,配置相关寄存器,进行本地网络参数及目标服务器网络参数的设置。
芯片初始化配置完成之后,即可检查网关服务器进行Socket 设置,设置发送和网络接收中断,项目中语音数据的透传是通过串口0 接收中断进行,接收到数据后通过Socket0 传输,串口1 和网络接收中断配置Socket1 用来对网络参数进行更新。上位机软件连接RS232 接口或连接本地局域网,点击搜索设备,可以发现本地在线设备,参数更改后写入配置,再点击重启设备即可。上位机软件基于MFC 框架开发,其界面如图6所示。
图6 网络参数配置软件Fig.6 Network parameter configuration software
通过该配置软件对语音数字信号数据通信传输的发送端及接收端的IP 地址、端口及网关等信息进行配置。模块IP 即Socket 通信CLIENT 发送端的IP 地址,目标IP 即Socket 通信SERVER 接收端的IP 地址。发送端和接收端设置成同一网段,并连接到同一网关,形成一个简单的局域网。
4 测试分析
4.1 网络传输测试
网络传输测试时选用GPS 数据作为数据源,通过串口将数据发送给网络传输模块,通过网络助手进行测试,测试结果如图7所示,接收数据符合完整的NMEA-0183 协议,无丢包现象。
4.2 语音数字化测试
在网络传输测试无丢包情况下,对语音数据进行网络传输测试。输入一段语音,数字化之后对网络端采样数据进行拟合,数据结果如图8所示,通过对比分析,采样保留了语音特征,拟合后的波形与原始语音近乎重合。
图7 网络传输测试Fig.7 Network transmission test
图8 语音数字测试Fig.8 Audio waveform after speech digitization
5 结语
基于STM32F405 芯片设计的语音数字化及网络传输系统,具备的优势有:①硬件成本较低、处理速度快、网络传输速度高,适合多终端大规模语音数字化传输的终端部署;②数字化过程采样精度高、信噪比高,网络传输配置简便、丢包率低;③采样前的语音信号与数字化后恢复的语音信号拟合度高,保证了语音数字化的质量,满足了语音识别等现代化智能语音分析处理系统对高质量语音数字化输入信号的基本要求。该系统的设计仍存在不足之处,对输入音频的采样不能进行自动增益调节,输入音频的幅值有局限性,后续设计中会考虑在输入前端增加一个自动增益调节电路。