江苏蓬++杨雨涵++张震++杨洁
摘 要 公共交通是城市的重要基础设施,公共交通的发展会带动城市的发展,而语音报站则是公共交通系统的一个重要组成部分。本设计以STC89C52单片机为控制核心,包含控制模块和语音模块两部分。采用MIC接收语音,根据A/D转换将模拟量转换为数字量并计算出复杂环境下噪声的平均能量,并选定播报音量,最后用语音模块进行自动报站,以实现在不同环境下的自适应报站。本设计可以实时显示和上传噪声的能量,采用SD卡存储语音信息,结构简单具有通用性和开放性。
【关键词】单片机 噪声监测 自适应调节 语音播报
1 引言
公共交通是城市的重要基础设施,它的发展会带动城市的发展。公共交通具有低耗能、低成本、高效率等优点。近年来随着环境污染日益严重,公共交通已成为越来越多市民绿色出行的首选。
目前,虽然在一些大城市的公交车上已经使用了GPS 定位系统来实现自动报站,但因其造价昂贵难以普及,所以很多乡镇大多还是采取人工报站,这种报站方式会加大司机的劳动强度,而且易出现错报。所以针对目前常见公交报站系统所存在的基本缺陷,鉴于传统公交车应用系统的不足之处结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的低成本的公交车应用的智能化语音报站系统。
2 研究目的及意義
随着社会的迅猛发展和城市化的不断加快,人们对于出行的需求将会越来越大。我国是一个人口数量大、人口流动性强的国家。由于大量的人口向城市聚集,使得城市的规模越来越大。很多人居住地与工作的地方有一定的距离,公交车就变成了人们出行的首选。特别是这些年以来政府提倡绿色出行,公交车作为一种最大众的出行交通工具就更加地受到了人们的青睐。
但目前公交车仅仅具有报站名的功能,并且音量大小需要人工调节。众所周知,公交车内环境是不断变化的,可能在某一时段或者某一路段很安静,而在另一个时段或者路段比较嘈杂,而这种环境的变化往往是不可预知的。如果司机在安静的时候设置合适的音量,那么在嘈杂时段就会因为声音太小,致使乘客根本听不清报站声音;如果在嘈杂时段设置合适的音量,那么在安静时段就会因为声音较大,带来噪声污染,使乘客感到不适。
本设计所研究的“自适应智能语音报站系统”就是基于这种需求研发的一种装置。它能根据车内环境自适应的调整音量大小,以满足各种环境的需要。
3 设计思想
控制设备应实现高度自动化,才能减少不必要的操作负担,所以本设计不在车载系统内安装任何操作类按钮,车辆启动后系统自动上电开始工作。同时还应保证系统软硬件的通用性,本设计的硬软件系统是通用的,它的特殊性体现在一张SD卡的内容上,更换线路时只需要更换SD卡即可。本设计不采用GPRS作为传输介质,因为这样增加设备成本和运行成本。
项目采用麦克对现场语音进行实时采集,对麦克产生的电信号进行处理,得到短时平均能量估计值,将处理结果用来表示声音的能量大小,并将数值大小分别通过显示屏进行实时显示,同时还可通过串口将采集数据实时上传电脑以便智能化对数据进行分析,实现自学习功能。在对语音进行抽样计算分析之后,即可确定语音能量所属范围以及所对应的播报声音大小,之后便可通过语音模块对预先存储的报站语音进行播放。这样就实现了自适应智能化语音报站。
4 系统的基本结构
本系统主要由控制模块和语音模块两部分组成。控制模块包括STC89C52和PCF8591芯片。语音模块采用WM8978芯片。本系统在公交车到站的前1-2s时,通过MIC采集当前车内环境噪声,将噪声信号经过放大、滤波,A/D转换变为数字信号,存入STC89C52中计算其平均能量。将噪声能量与设定好的阈值进行比较,然后根据比较结果改变参数调节报站声音大小,通过扬声器播放报站信息。如图1。
5 硬件系统
5.1 噪声采集装置
当MIC采集到模拟语音信号,将其转换成微弱的电信号,再经音频前置放大器和带通滤波器滤波后,由模数转换器A/D转换成数字信号存储在存储器中,以备计算。
5.2 A/D转换
A/D 转换部分采用PCF8591芯片,它是一个单片集成、单独供电、低功耗、8-bit的CMOS数据获取器件。它具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。
5.3 STC89C52芯片
STC89C52是一种低功耗、高性能的CMOS8位可编程Flash存储器。它具有传统51单片机的加强版,具有传统51单片机所不具备的功能。它拥有8位CPU和可编程Flash,可以为很多嵌入式控制应用系统提供灵活有效的解决方案使。
5.4 语音模块
本设计采用的播放模块是欧盛推出的一款全功能音频处理器WM8978。它带有一个HI-FI级数字信号处理内核,支持增强3D硬件环绕音效,以及5频段的硬件均衡器,可以有效改善音质;并有一个可编程的陷波滤波器,用于去除屏幕开、切换等噪音,功能强大,性能良好。WM8978的控制通过I2S接口(即数字音频接口)同MCU进行音频数据传输,通过两线(MODE=0,即IIC接口)或三线(MODE=1)接口进行配置。
6 软件实现
本设计选用KEIL公司研发的uVision集成开发环境作为主机程序设计的编译器。系统软件部分采用C语言编写,C语言是一种结构化语言,它层次清晰,便于模块化的方式组织程序,易于调试和维护,语言简洁、紧凑、使用方便灵活。其次,它丰富的运算和数据类型,便于实现各类复杂的数据解耦。并且其效率高,可移植性强,因此,是软件开发的首选编程语言。
系统供电后,程序进行初始,储单元内容擦除、片内各个模块完成设置、端口设定为等初始化工作。之后运行主程序。采集到一段时间的噪声电平后估算出平均值,即噪声平均能量值。根据平均能量值的大小选择合适的播放参数进行播放。同时打开3s定时中断,让当前的控制状态保持3s。如果3s内有更大的噪声出现,马上切换到新的状态再保持3s;如果没有更大噪声出现,则一直保持到报站结束。如图2所示。
6.1 语音信号短时能量估计
分析处理语音信号是设计的前提,在处理信号之前为防止混疊干扰先进行预滤波,短时能量分析是将语音流分为一段一段来分析,每一段称为一帧。因为语音信号具有时变特性,是一个非平稳的过程。但当我们将一帧取值非常小时,在短时内语音的基本特性将保持平稳。即我们所说的语音信号的短时平稳性。应用语音信号的这一特点,我们可以对语音信号进行短时能量分析。
其中En 表示短时能量,应用该公式可以反映出语音的短时平均能量能量随时间缓慢变化的规律。
6.2 噪声的滤除
播放的语音信号对于外界我们想要采集的声音来说就是相对噪声,而这种相对噪声会对我们的播报语音音量产生反馈干扰,这是我们不希望的,所以我们要将播报的语音从采集的语音信息中滤除,这就需要我们设计一款滤波器。由于声音的随机性使得完全滤除变得不可能,但是由于想要滤除的语音信号是我们存储在SD卡的报站语音,所以提前可知,这使得滤波器的设计变得简单化。我们只需要设计一种函数,可将一段时间内采集信号中的已知语音信号滤除即可,便可得到我们想要的外界实时环境噪声情况。
7 结束语
本课题研究的公交车语音报站系统结构简单,功能完备,通过公交车到站前一段时间检测车内噪声大小调节播站音量大小。并且还可以拓展其他功能,例如,当有老人乘车时会自动提示乘客给老人让座,大大减小公交车司机的工作量,这种报站系统不单单运用在公交车上,还可以用在地铁上,火车上,电梯中以及具有语音播报功能的电子设备中。因此,本系统具有可发展性和广阔的市场前景。
(通讯作者:杨洁)
参考文献
[1]赵林惠.单片机应用技术[M].北京:科学出版社,2008.
[2]周国雄,许明情.城市公交车自动报站系统设计及其应用[J].装备制造技术,2007(04):109-111.
[3]王沁,肖瑶,来跃深.基于单片机的公交报站系统设计与仿真[J].物联网技术,2014(09):66-67.
作者单位
郑州大学 河南省郑州市 450001