【学习笔记】基于ARM-Linux的便携式语音群呼系统
0 引言
科技的发展和社会的进步影响和改变了人们的生产和生活方式。随着生产的社会化程度日益加剧,出现了一大批规模巨大的企事业和生产企业,这就给这样单位和公司发布开会通知带来了困难:一些大公司和单位如果要召开紧急会议,就需要用短信群发或逐个拨打语音电话通知与会人员,而如果通过发送短信通知会议人员则会由于短信声音小且振铃时间短不易被人们发觉(而且缺少实时性);而通过语音拨号则由于需要逐个拨打而显得极为繁重,特别是如果公司和企事业单位人数太多,这一问题就尤为突出[1]。因此,设计一个能录入通话内容、在线添加和修改被叫人号码、自动拨号及统计未拨通号码的语音群呼系统非常必要。
根据实际需要,该系统需要满足如下功能:
(1)录入、添加、修改、删除用户;
(2)录音功能;
(3)设定拨号次数;
(4)按照设定的次数和录入的用户信息自动拨号并完成录入语音的播放;
(5)显示拨号状态、统计拨号次数和返回未拨通的用户名单。
1 系统组成及工作过程
该群呼系统由主控制器、人机接口、语音模块、GSM模块等构成,如图1所示。
系统通过语音模块录制需要播放的语音存入存储器中,然后在ARM处理器的控制下将触摸屏手写笔存入的用户号码通过GSM模块拨通,拨通后将该语音通过GSM的语音接口播放出去,拨号的结果通过触摸屏显示出来。
在该系统中,人机接口采用TFT-LCD触摸屏、ARM处理器采用三星的S3C2440处理器、语音芯片采用飞利浦公司的UDA1341、GSM模块采用西门子公司的TC35i。
2 硬件设计
本系统的硬件设计比较复杂,这里只给出部分核心电路,包括ARM处理器与触摸屏的连接、语音模块与ARM处理器及GSM模块的连接、GSM模块与ARM处理器的连接。
2.1 ARM处理器与触摸屏的连接
TFT-LCD的主要特点是为每个像素配置一个半导体开关器件,由于每个像素都可以通过点脉冲直接控制,因此每个节点都相对独立,并可以进行连续控制[2]。
该LCD接口是一个41Pin 0.5 mm间距的白色座,其中包含了常见LCD所用的大部分控制信号(行场扫描、时钟和使能等)和完整的RGB数据信号(RGB输出为8:8:8,即最高可支持1 600万色的LCD);37、38、39、40为四线触摸屏接口,它们可以直接连接触摸屏使用。
2.2 语音模块与ARM处理器及GSM模块的连接
图2所示为语音模块与ARM处理器及GSM模块的连接的硬件框图。
ARM处理器S3C2410的IIS总线信号与语音芯片UDAl34l的IIS信号直接相连[3]。L3接口的引脚L3MODE、L3CLOCK和L3DATA分别连到S3C2440的GPBl、GPB2和GPB3通用数据输出引脚。UDAl34l对外提供两组音频信号输入接口,每组包括左右2个声道。由于IIS总线只处理音频数据,而其他的信号(如编码、控制等信号)单独传送[4]。为了使必需的引脚数最小并且保持连线简单,IIS总线由3条信号线组成:时分复用的数据通道线、字段选择线和时钟信号线。本系统由系统主控制器提供时钟信号,控制数字音频数据在各个IC之间的流向。此时,发送器在外部时钟信号的控制下产生数据,处于从模式。具体连接如图3所示。
2.3 GSM模块与ARM处理器的连接
ARM处理器S3C2440与GSM模块TC35i是通过USB转串口进行通信的。用USB Host接口与GSM模块连接[5]。USB Host与普通PC的USB接口是一样的,接口电路如图4所示。
3 软件设计
软件设计包括Linux内核移植、QT-4.6移植、语音业务GSM拔号软件设计和语音录放软件设计,本文只对该系统的GSM语音拔号软件设计和语音录放软件设计这两个核心部分进行介绍,至于Linux内核移植、QT-4.6移植这些部分与其他的嵌入式开发系统并无太大差别[6-7],这里不再赘述。
3.1 语音业务GSM拔号程序设计
ARM处理器通过串口发送AT指令来控制GSM模块TC35i的工作。AT指令及该GSM模块的使用及相关信息可以参考相关文献资料。
首先需要进行串口的设置,串口通信的设置要符合TC35i通信的要求;然后就是对TC35i初始化,初始化的过程主要包括与TC35i建立连接、音频模式的设置、取消回显等;最后就是进行循环呼叫,在呼叫的同时,不断读取并且更新拔号的状态,同时也统计呼叫的次数,每当呼叫一个号码之后,进行一下号码呼叫,直到所有的号码呼叫完为止。拨号放音应用主程序及子程序如图5、图6所示。
3.2 语音录放程序设计
(1)录音部分
本系统支持两种录音格式,一种是原始数据pcm格式,没有经过任何压缩的WAV音频文件;另一种是经过lame压缩的mp3格式。从声卡读取pcm数据,加上文件头信息直接写入WAV文件,如果要录制成mp3格式,需要使用lame库对pcm数据进行压缩,然后写入mp3文件。其设计流程图如图7所示。
(2)放音部分
放音与录音相反,放音时,如果为WAV文件格式,解析头获取采样率、量化位数、声道数,对声卡进行初始化,然后跳过文件头,直接读取pcm数据写入声卡,就能播放WAV文件。对于MP3文件格式,需要使用libmad解码成pcm数据即可。其设计流程图如图8所示。
4 测试结果
至此系统设计完成,图9、图10所示为对系统的拨号部分和语音的录放部分分别进行的测试。
5 结论
本文介绍了一种基于ARM+Linux的便携式语音业务群呼系统硬件与软件设计,通过自行设计样机的测试表明该系统具有能录入话音、设置呼叫号码、自动拨号放音和统计未呼叫成功号码等功能,系统操作简单、界面友好、成本低廉。随着生产社会化的日益加剧和人民对生活智能化的要求日益提高,以该系统所代表的技术和理念的语音业务群呼智能系统必将广泛应用于各领域之中。