嵌入式以太网数字语音广播系统的设计与实现

相关专题: 芯片

以太网数字语音广播系统主要是指以以太网为传播介质提供音频服务的广播系统,可以很好地利用以太网解决语音信号远距离传输难题。允许设计者创建大型网络结构来实现数以千路的数字语音信号在以太网上传输,充分利用了现有网络资源,避免重复架设线路的麻烦,实现了广播与计算机网络的多网合一,彻底解决了传统广播系统存在的音质不佳、容易受干扰、维护管理复杂以及互动性差等问题。同时可以实现选择全部、部分或特定区域进行定向分组广播,突破了传统广播系统只能对全部区域进行公共广播的局限。现有的以太网数字语音广播系统在实现区域广播功能上大都采用控制信号控制播放终端加入或者离开组播组的方式实现,需要在实现广播之前发送控制信号使终端加入组播组然后才能实现广播,或者在服务器端建立一张复杂的映射表来维护播放终端的状态以实现区域广播,功能实现较为复杂。

在此给出一种嵌入式以太网数字语音广播系统解决方案,能够较简单地实现广播系统的区域广播功能。该系统基于ARM架构,采用系统播放终端仲裁的方法控制区域广播的实现,广播内容能够同步播放和保存。

1 结构设计

该系统采用C/S结构,由广播系统服务器端与广播系统播放终端两部分组成,如图1所示。

广播系统服务器端在PC机上实现,是一个由VC++实现的语音信号采集、存储、网络传输的程序。该部分通过麦克风对语音信号进行采集存储,然后将语音数据通过UDP的方式传输到以太网上,实现语音数据的网络传输功能。

广播系统播放终端为基于LM3S8962的嵌入式终端,实现从以太网上接收发送给它的IP语音数据包,并由音频解码芯片MS6336完成语音数据的数/模转换及播放。

2 广播系统播放终端硬件设计

广播系统播放终端主控制芯片采用LuminaryMicro公司所提供的微控制器LM3S8962。该系列芯片是首款基于ARM CortexTM-M3的控制器,内部集成以太网控制器,是业界首款支持工业以太网(IEEE)的ARM芯片,可以方便地实现网络功能。

音频解码芯片采用MOSA公司生产的MS6336芯片。该芯片是一款16位立体声音频数字模拟转换器,支持的数字输入格式有Right Justifl-ed,Left Justified,I2S。MS6336控制接口采用I2C总线,接口容易设定。DAC部分具有精确稳定的电流量,结合极好的对称译码方式,能够重现出高质量的音频信号。

主控制芯片LM3S8962通过磁性元件与RJ45接口相连,用于从以太网上接收语音数据。LM3S8962为音频解码芯片MS6336提供控制信号和语音数据信号。LM3S8962支持I2C功能,PB2和PB3口分别提供了I2C的时钟和数据信号,可以将这两个引脚和MS6336的I2C功能引脚直接相连,并且需要加上拉电阻。LM3S8962不支持MS6336需要的数据输入格式,系统中MS6336的数据输入格式采用I2S,所以要给MS6336提供语音数据,需要采用LM3S8962的GPIO口软件模拟实现MS6336需要的I2S数据输入格式。在设计中采用PA5,PA6,PA7口来模拟实现该功能。三个引脚分别对应I2S的声道选择信号、时钟信号和数据信号,将这三个引脚和MS6336的I2S功能引脚相连。

以太网数字语音广播系统播放终端硬件结构如图2所示。

3 广播系统软件设计

广播系统软件分为广播系统服务器端软件和播放终端软件两部分。

该设计实现语音数据的实时播放,所以要求语音数据传输的实时性得到保障,而对于数据的完整性要求不是太严格,少量的丢包也不会影响整体的播放效果,所以该系统的语音数据传输采用UDP传输方式,同时本系统工作在局域网内,临时用户较少,故采用IP地址静态分配,简化播放终端软件部分的实现。

3.1 广播系统服务器端语音数据的采集、存储与发送

语音数据的采集利用低层WAVE音频API函数实现,为了不造成语音数据的丢失,该设计利用双缓冲来存储语音数据,实现流程如图3所示。

当一个录音缓冲区满时,系统立刻将另一个录音缓冲区发送给录音设备继续录音,而应用程序此时要读取已经录音满的缓冲区中的数据,并进行处理。然后调用waveInAddBuffer函数将该缓冲区重新赋给录音设备,循环利用。

为了防止录音过程中语音数据的丢失,只是简单地利用双缓冲是不够的,还要注意的一点是,当一个缓冲区录音满以后,应用程序对该缓冲区的数据进行处理,同时第二个缓冲区用于录音,数据处理的时间一定要小于第二个缓冲区录音满需要的时间,否则在第二个缓冲区录音满以后第一个缓冲区还没有重新赋给录音设备,就会造成语音数据的丢失。当语音信号采样率大的时候适当增加缓冲区的大小,可以有效地解决这个问题。

为了将广播的内容进行保存以备后需,需要将广播内容保存在一个WAV文件中。WAV文件具有固定的头格式,在保存语音数据之前,需要先将WAV文件的头部设定好,否则保存的WAV文件无法播放。在每一次录音缓冲区满时,首先找到WAV文件的结尾处,然后将采集到的数据依次写在文件尾部。当整个广播过程结束时,所有的语音数据都被保存在了WAV文件中,实现了语音数据的存储。

当一个录音缓冲区满后,这时就需要将已经采集到的语音数据通过网络发送出去。在设计中首先利用Csocket类创建一个套接字,接下来只需要将采集到的数据封装成IP包发送出去。该设计中语音信号的采样率为44.1 kHz,16位双声道。为了避免语音数据丢失,录音缓冲区的大小设定为1024B。

 

作者:闫红超 苟先太   来源:现代电子技术
微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5GNTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《R1623501-g605G的系统架构1
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 本周热点本月热点

     

      最热通信招聘

      最新招聘信息

    最新技术文章

    最新论坛贴子