基于 BREW 平台的 PoC 解决方案的语音处理.doc

上传人:李主任 文档编号:3626039 上传时间:2019-09-18 格式:DOC 页数:6 大小:229.50KB
返回 下载 相关 举报
基于 BREW 平台的 PoC 解决方案的语音处理.doc_第1页
第1页 / 共6页
基于 BREW 平台的 PoC 解决方案的语音处理.doc_第2页
第2页 / 共6页
基于 BREW 平台的 PoC 解决方案的语音处理.doc_第3页
第3页 / 共6页
基于 BREW 平台的 PoC 解决方案的语音处理.doc_第4页
第4页 / 共6页
基于 BREW 平台的 PoC 解决方案的语音处理.doc_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于 BREW 平台的 PoC 解决方案的语音处理.doc》由会员分享,可在线阅读,更多相关《基于 BREW 平台的 PoC 解决方案的语音处理.doc(6页珍藏版)》请在三一文库上搜索。

1、精品论文推荐基于 BREW 平台的 PoC 解决方案的语音处理刘文 北京邮电大学光通信与光电子学研究院,北京 (100876) E-mail: 摘要:随着通信与计算机技术的日新月异,移动增值业务的开发越来越引起大家的关注。移动增值业务通常有两种主流开发平台:J2ME 和 BREW。BREW 是高通公司于 2001 年推 出的无线应用开发平台,是一项比 J2ME 更底层的技术。PoC 是手机一键通,也就是在手机 上实现对讲机的功能,属于手机的一种半双工 VoIP 服务。由于目前没有广泛承认的 PoC 统 一标准,各种 PoC 的解决方案相继涌现。本文介绍了基于 BREW 平台的 PoC 解决方案

2、,给 出了这种方案的语音功能的实现,具体包括语音接口的介绍和选择、实现流程以及部分源代 码。经过在实际环境下的手机测试,该语音处理方案被证明是良好的。 关键词:BREW;PoC;语音编码;语音解码中图分类号:TP311.521. 引言近年来,手机移动增值业务开发如火如荼,其中基于 BREW 平台的开发占有相当比重。 运营商 POC 业务的开展,引起众多开发商的兴趣和投入。由于目前没有被广泛承认的 POC 统一标准,各种面向 PoC 的解决方案相继涌现。基于 BREW 平台的 CDMA 制式手机的 POC 方案就是其中一种。在 PoC 的解决方案中,语音功能是否完美实现,直接影响方案的最终结果。

3、因此,实 现语音功能是 PoC 方案中首要解决的问题。2. BREW 平台以及 PoC 业务介绍2.1 BREW 开发平台的简介BREW,就是 Binary Runtime Environment for Wireless(无线二进制运行环境)的简称, 是美国高通公司(Qualcomm)为无线数据应用程序开发和执行提供的通用接口平台。目前 中国联通的神奇宝典中的游戏多为 BREW 游戏。BREW 包含了 PK(Porting Kit,BREW 移植包)和 SDK 两部分,PK 是集成在移动通 讯设备代码映像里的,SDK 是基于 Windows 的开发工具包1。组成整个 BREW 系统的要素可分

4、为开发平台、运行平台和服务器。开发平台就是平时 所使用的 BREW SDK,用来在 PC 端开发可以在运行平台运行的程序。运行平台就是指可 以运行 BREW 应用程序的移动通讯设备上的 BREW 运行环境,它的核心是 BREW 的 Porting Kit。服务器是连接开发和运行平台的一个“连接器”,开发平台所开发出的 BREW 应用程序 放在服务器上,以便于运行平台的用户通过无线通讯网络下载应用程序。2.2 基于 BREW 平台 PoC 业务的综述PoC,Push to Talk over Cellular,手机无线一键通,就是把生活中的对讲机功能移植到 蜂窝手机通信网络上,如同对讲机的一按即

5、通一样,在手机上实现“一对一”、“一对多”的通 话。通过POC业务,用户只需按下一个键就能方便地进行个人或群组通话2 。就业务性质来 说,PoC属于一种手机的半双工VoIP服务。基于 BREW 平台的 PoC 系统如图 1 所示,网络通信仍然采用客户端-服务器端的 CS 模 式。在整个 PoC 方案中,语音的编码解码与网络功能模块都非常重要,两者缺一不可,否- 6 -则就不能保证通话的流畅。3. 语音功能的实现3.1 BREW 提供的语音接口图 1 基于 BREW 平台的 POC 系统3.1.1 IMedia 接口类IMedia 接口类为所有 BREW 多媒体对象提供了一个抽象基类3。 它可以

6、提供一种多 媒体格式或通过特定设备播放的格式。例如,执行 MIDI 播放的 IMediaMIDI 对象和渲染 MPEG4 内容的 IMediaMPEG4 对象。 BREW 多媒体对象可以包含音频、视频和卡拉 OK 文本的组合。IMedia 接口可提供播放、录音以及执行播放或录音控制函数(如定位、停止、 暂停、恢复等)等功能。3.1.2 IVocoder 接口IVocoder 接口使用默认的声音路径,以捕获和播放声码器帧3。 IVocoder 使用的设备 也可以用来执行语音呼叫,因此使用 IVocoder 的应用程序必须注意并集成 TAPI 通知,以 便在启动语音呼叫时适时停止使用声码器。IVo

7、coder 要求以实时的方式进行有效操作。例如,CDMA 声码器帧的持续时间为 20ms。 如果在 IVocoder 流化时,该应用程序或其它应用程序大量使用 CPU,会对语音质量产生 不良影响,但不会导致手持设备出现问题。正确的语音服务选项呼叫操作取决于正确的 ITAPI 处理应用程序实现。应用程序必须 能够在呼叫状态变为 PS_INCOMING(手机设备存在呼叫进入)或 PS_ORIG(手机设备正 发起呼叫)时释放声码器(配置为 VOC_NONE)。IVocoder 接口注册 ITAPI_OnCallStatus(), 并在呼叫进入对话状态时调用 voc_register_packet_c

8、lients 删除回调,在呼叫退出对话状态 时建立回调。IVocoder 接口提供了新的回调函数 VocoderAvailable,并在返回声码器时调用 此函数。这样应用程序可以在发生更改时执行操作3.2 POC 方案中语音接口的选择由上文可知,BREW 为语音处理提供两个接口:IMedia 接口类和 IVocoder 接口。使用 IMedia 类能轻松的调用声码器进行录制音频,过程较为简单,但不支持实时双向操作。因 此在语音要求实时交互的 POC 方案里,只能采用 IVocoder 接口。3.3 POC 方案中语音功能的实现3.3.1 POC 方案中语音数据的流程 客户端作为呼叫方,对讲时的

9、说话方时,语音经麦克风传入编码器,编码器按照应用配置的声码器算法把语音编译成编码帧并依次写入缓冲区,语音数据被打包成网络数据包发送至服务器端。 客户单作为被叫方,对讲时的受听方时,服务器端发送来的数据包接收,去包头后,数据帧排队写入缓冲区,由解码器解码排队帧,最后经扬声器播出。 整个编解码器的每一步操作都由 BREW 提供的 IVocoder 接口函数实现控制。3.3.2 IVocoder 接口实现流程IVocoder 接口实现的基本流程如下:1)创建 IVocoder 接口的用户实例。从系统层面上来看,这是给 IVocoder 开辟一段内存空间,内存空间的使用根据应用的 需要来设置。2)配置

10、 IVocoder 的用例,包括声码器算法、数据速率、回调参数等。目前 CDMA 制式提供三种声码器类型:EVRC(IS-127)、8K QCELP(IS-96)和 13K QCELP(IS-733)。在 POC 方案中采用第一种,增强可变速率声码器 EVRC(IS-127)可以 很好的提高语音质量。实时的数据速率实质上由 CDMA 手机底层的声码器根据信噪比和语音空闲度控制,在 程序里无法强制其按某速率进行编码,但 BREW 仍要求设置上限和下限速率。BREW 是单线程的,无法使用通常的基于时间片运行的多进程或多线程来实习多任务 的之间的切换。BREW 的协作式多任务特性是通过回调机制来实现

11、的4。调用声码器也不例 外。当与调用声码器相关的事件发生时,都要向系统注册一个相关的回调函数在系统执行队 列中排队。当系统执行到该回调函数时,系统可以根据回调函数的内容来决定是否继续、中 断或者结束声码器的操作,当然决定的过程也是新事件产生的过程,也就意味着又注册一个 回调函数。也就是说,声码器的回调函数是用户自定义但却是系统自动调用的函数。回调函 数的配置好坏,直接关系着整个语音的流程顺畅与否。3)启动并进行语音的编码。(1) 由接口函数 IVOCODER_VocInStart()启动声码器进行编码语音帧;如果成功则调用 已经配置的回调函数 HavaDataCB。回调函数 HavaDataC

12、B 中,用接口函数 IVOCODER_VocInRead()一帧帧的采集语音并把数据 写入缓存区。然后打包准备发往服务器端。缓冲区大小必须足以支持声码器的最大帧速率, 而不仅仅是当前速率限制所用的最大值。使用 EVRC 时,由于设置最大帧速率为一半全速 率,则存放语音帧的缓冲区必须符合:语音帧缓存区长度8kB/s*1/2*20ms=80B。 还应注意的是,只要声码器在工作,那么就会产生每帧 20ms 的语音帧,那么系统就会 (2) 始终调用 HavaDataCB。直到声码器停止。(3) 语音停止时,由接口函数 IVOCODER_VocInStop()停止声码器。(4) 语音的解码或播放过程。由

13、接口函数 IVOCODER_VocOutStart()启动声码器进行语音数据的播放。但是在排队帧的数目未达到水印值时,声码器不会启动播放。由接口函数 IVOCODER_VocOutStop()停止声码器的播放。(5) 停止语音的处理,释放 IVocoder 接口的用例3.3.3 程序部分/ 创建 CLASSID 为 AEECLSID_VOCODER 的接 口用例 ,对象 指针名 称为 pMe-pIVocoderif (ISHELL_CreateInstance(pMe-a.m_pIShell, AEECLSID_VOCODER, (void *)&pMe-pIVocoder) != SUCCE

14、SS)DBGPRINTF(Error Creating IVocoder interface);return FALSE;/配置接口对象,名称为 pMe-vocConfigstatus = IVOCODER_VocConfigure(pMe-pIVocoder, pMe-vocConfig,&pMe-vocInfo);/ 配置必要的参数pMe-vocConfig.needDataCB = NeedDataCB; /解码器需要更多语音数据时回调 pMe-vocConfig.haveDataCB = HaveDataCB; /编码器缓存内具有语音数据时回调 pMe-vocConfig.played

15、DataCB = NULL;/声码器处理了数据时回调pMe-vocConfig.readyCB = ReadyCB;/声码器就绪时回调pMe-vocConfig.usrPtr = pMe;pMe-vocConfig.max = HALF_RATE; /指定编码器最大数据速率pMe-vocConfig.min = EIGHTH_RATE; /指定编码器最小数据速率 pMe-vocConfig.overwrite = TRUE; /缓冲区满,新数据来时是否覆盖 pMe-vocConfig.txReduction = 0;pMe-vocConfig.vocoder = VOC_IS127; /指定声

16、码器算法pMe-vocConfig.watermark = 24;/设置水印值,即排队帧数目/ 配置最关键的 HavaDataCB 回调函数static void HaveDataCB(uint16 numFrames, void *p)CApp* pMe = (CVocApp*)p;uint16 length;int i;int status;/数据正确性检测if (!pMe | !pMe-pIVocoder) return;/ 把数据读 入缓冲 区准备打 包,缓 冲区 存储语音 帧空间 的地 址指针为 pMe-pFrameDatafor (i = 0; i pIVocoder,&rate,

17、 &length, pMe-pFrameData);/ 如果成功的读入数据,那么.if (status = SUCCESS). / 把数据帧打包经网络传输传至服务器端/配置 ReadyCBstatic void ReadyCB(void * usrPtr)CApp* pMe = (CVocApp*)usrPtr;/开始编码语音帧IVOCODER_VocInStart(pMe-pIVocoder);/开始启用排队帧的解码和播放IVOCODER_VocOutStart(pMe-pIVocoder);/自设开启参数pMe-bVocOn = TRUE;/解码和播放代码略4. 结论通过测试,基于 BRE

18、W 的 PoC 方案,实现的并不理想,其表现就是延迟太大,推断原 因可能是整个方案的网络部分实现不理想,或者由于现有运营商 CDMA 数据信道自身的原 因。但是有理由相信整个方案中语音功能基本上获得了实现。当然,整个语音功能的实现并不完美,还有一些问题待解决,毕如解码时到底缓冲区多 大才能既满足声码器的需要,又满足网络的需要。播放时,如何获得水印值的最佳设置以达 到最佳效果。这有待有志于解决 BREW 平台的 POC 方案的人士来解答。参考文献1 QUALCOMM Incorporated. BREW SDK Users GuideEB/OL. http:/ 20012 何斌,黄本雄,胡广等.

19、 基于蜂窝移动通信的PTT 研究与实现J. 计算机应用, 2004,24(9):82843 QUALCOMM Incorporated. BREW2.0 API ReferenceEB/OL. http:/ 2002 4 李贺,尹国强,蒋亮. BREW 技术开发与应用M. 北京, 机械工程出版社, 2006Voice Processing in the Solution for PoC on BREW PlatformLiu WenBeijing University of Post and Telecommunications, Beijing (100876)AbstractWith th

20、e development of communication and computer technology, mobile value-added services become more and more popular. For mobile value-added services, there is two developingplatforms: J2ME and BREW。BREW is provided by QUALCOMM and close to the bottom layer more deeply.PoC is Push-to-taIk over Cellular

21、for short, which means transplanting the functions from the interphone to the mobile phone. PoC belongs to the half-duplex services of VoIP. Because there is nounified standard at present,many various solutions to PoC become reality one by one. The articleintroduces the PoC solution based on BREW Pl

22、atform,and gives the solution of voice processing onthis PoC solution, including voice interface introduction and selection, implementation flow and parts of source code. Through the mobile phonetesting in the real environment, the voice processing solution is verified good.Keywords: PoC; BREW; voice coding; voice decoding

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1