1、概述
呼叫提示音是语音呼叫过程中的一项重要功能,对用户的便利性、友好性以及个性化服务等起着重要的作用。如果在呼叫过程中缺少或者提供错误的呼叫提示音,无疑会大大降低用户的满意度。呼叫提示音既可由网络产生,也可由本地终端产生。由网络产生的呼叫提示音称为带内音,彩铃就是由网络产生的呼叫提示音。呼叫提示音的种类见表1。
在实际运行过程中,运营商既可以选择由网络产生呼叫提示音,也可以由信令通知终端产生呼叫提示音。根据3GPP的规定,对同一呼叫提示音来说,由网络产生的呼叫提示音的优先级要高于终端产生的呼叫提示音。这样运营商就可以根据市场需要充分定制网络侧的呼叫提示音,而不用关心移动终端的差异性。移动运营商的彩铃就是在这个基础上发展起来的。网络与终端产生的呼叫提示音对比见表2。
2、WCDMA终端呼叫提示音的控制
与GSM/GPRS终端相比,WCDMA终端的软硬件复杂度有了很大的提高。GSM/GPRS终端以语音通信为主,主要由一个核心处理器(通信处理器)构成。随着多媒体移动终端时代的到来,越来越多的多媒体处理功能需要由一个独立于通信处理器的专门应用处理器来完成,单处理器架构也逐渐被“通信+应用”的双处理器架构所取代。此外,完整的手机平台还包括丰富的外围软硬件资源。笔者所参与开发的一款WCDMA终端平台就是采用双处理器构架,如图1所示。一个处理器芯片还可能包含一个或多个内核。例如,在应用处理器芯片中,就包含一个专门处理多媒体应用控制的ARM9内核(应用处理单元)和一个处理语音编解码的DSP内核(一般来说,该DSP还可以完成多媒体图像、声音、数据的编解码功能)。通信处理器芯片完成射频、模拟基带和数字基带的处理,并且包含对GSM/GPRS/WCDMA信令协议层L1、L2和L3的处理。图1中的电源/音频设备控制器就是一个较为独立的外围芯片。
表1 呼叫提示音的种类
表2 网络与终端产生的呼叫提示音对比
图1WCDMA双处理器移动终端构架
2.1实现呼叫提示音的硬件支持
移动终端对于由网络产生的呼叫提示音(带内音)的处理与普通语音流的处理一样,而对于由终端本地产生的呼叫提示音的处理,则需要有相应的硬件支持。
(1)Tone发生器
移动终端硬件系统必须包含一个支持双频的Tone发生器,用来产生和控制3GPP所规定的呼叫控制提示音以及需要报告给用户的各种设备或操作的报警音。实际上,随着WCDMA终端硬件集成度的增加,一般把Tone发生器嵌入在一个多功能的音频设备控制器中。
(2)音源合成器
将移动终端支持多个硬件设备作为音源同时发声称为声音重叠。例如,从Tone发生器产生的呼叫提示音与从网络侧发过来的普通语音流同时送往扬声器播出。声音重叠取决于音频设备控制器的电路设计能否将各路音源信号进行合成。目前,WCDMA终端的音频设备控制器大多已经包含音源合成器,从硬件上支持将多路音源的信号合成,然后再送往DA/AD转换器。
2.2实现呼叫提示音的软件控制
在WCDMA终端侧实现对呼叫提示音的控制,关键点在于实现多音声通道的建立、管理和有效控制。如果说从网络来的语音流通过通信处理器、应用处理器以及音频设备控制器等的处理,最后通过外设输出是一条音声通道,那么本地呼叫提示音从Tone发生器产生到通过外设输出则是另外一条音声通道,实际的终端平台支持更多的音声通道,比如MP3播放器产生的音乐从外设播出也是一条音声通道。除了多音源产生的多通道外,还存在同一音源在不同外设输出导致的单一音源多通道的情况。多音声通道的处理是由应用处理单元来完成的。应用处理单元采用基于优先级的多通道竞争算法来完成通道的建立、切换以及释放,这样用户就能得到最佳的声音体验。针对呼叫提示音的情况,带内音以及无语音通道时的呼叫提示音只涉及一个音声通道的处理,而通话中的本地呼叫提示音就涉及两个音声通道的处理,以下分别进行介绍。
2.2.1带内音
由网络产生的呼叫提示音是以带内音的形式传送到移动终端的。带内音的控制流程如下。
(1)在带内音发送之前,网络已经指示移动终端建立无线接口的业务信道。当数字基带处理单元完成业务信道的建立后,通过控制信令建立与语音/数据处理DSP的通道。
(2)数字基带处理单元收到特定的非接入层网络消息(如Alerting),通过控制信令将该消息通知应用处理单元。
(3)应用处理单元分析后得知需要接听网络传来的带内音,则通知语音/数据处理DSP建立与外围电源/音频设备控制器的通道。
(4)应用处理单元通知外围电源/音频设备控制器与外设建立通道,此时是单一音源(语音流)采用单一外设(取决于终端目前的设置,比如听筒、扬声器或者耳机),该语音通道能够建立成功。语音通道建立成功后,从网络传送来的AMR(或FR/EFR/HR)语音流,经过语音/数据处理DSP解码后转换为PCM语音流,传输到音频设备控制器,再转换为模拟语音流,发送到外设,这样终端用户就可以听到网络传来的带内音了。
在带内音的处理过程中,一定要避免Tone发生器产生本地提示音,否则终端用户就不知所措了。这就需要应用处理单元正确分析和处理网络信令,控制Tone发生器不要建立本地音声通道。
2.2.2无语音通道时本地呼叫提示音
无语音通道时本地呼叫提示音的产生一般分为两种情况:一是主叫使用OACSU(OffAirCallSet Up)建立呼叫,若网络指示由于被叫忙等原因无法建立呼叫,就需要在主叫终端产生呼叫提示音;二是主叫方使用非OACSU,并已经与网络建立语音信道,但网络通过信令指示主叫终端无法建立呼叫(不含带内音信息),这时主叫终端会先释放已建立的语音通道,再产生本地呼叫提示音。与带内音相比,这种本地呼叫提示音节省了无线接口的业务信道资源。无语音通道时本地提示音的控制流程如下。
(1)数字基带处理单元收到特定的非接入层网络消息(如Disconnect),通过控制信令将该消息通知应用处理单元。
(2)应用处理单元分析后得知需要本地产生提示音,则通过控制信令通知外围电源/音频设备控制器建立Tone发生器与外设(如听筒)之间的通道。如果此时语音通道已经建立,应用处理单元会先释放语音通道,再建立Tone发生器与外设的通道。
当呼叫提示音通道建立成功后,应用处理单元指示Tone发生器产生特定要求(频率和时长)的提示音。提示音再转换为模拟声音信号,发送到外设,这样用户就能听到提示音。
呼叫提示音的停止过程也需要进行有效的控制。根据3GPP的建议,提示音的持续时间可由终端厂商自行设定,一般来讲,提示音不应该影响用户的正常通话功能。当用户重新拨打电话或者接收一个新的来电时,上一次的呼叫提示音应立即停止,对应的音声通道也需要释放。另外,即使用户不进行任何操作,呼叫提示音也应该持续一段时间后停止。呼叫提示音的停止和相应的音声通道释放是由应用处理单元控制的。
2.2.3通话中本地呼叫提示音
呼叫等待音是通话过程中本地产生提示音的例子。在通话过程中本地提示音的控制流程如下。
(1)数字基带处理单元在通话过程中收到特定的非接入层网络消息(如Setup),通过控制信令将该消息通知应用处理单元,由应用处理单元进行分析。
(2)若需要本地产生提示音,并且通过多通道竞争算法的处理后得知,此时呼叫提示音通道和语音通道可以进行声音重叠,则应用处理单元通知外围电源/音频设备控制器的Tone发生器采用与普通语音流相同的外设通道。
(3)Tone发生器根据特定要求(频率和时长)产生提示音流,经过音源合成器与语音流合并在一起,然后转换为模拟语音,发送到外设。这样用户就能在通话过程中听到提示音了。
在通话过程中,提示音与普通语音需采用相同的外设通道,以便及时提醒用户。例如,用户正在使用听筒接听来话,则提示音应该通过听筒通知用户;如果用户使用耳机接听来话,则提示音也应该通过耳机通知用户。此外,通话过程中的提示音不应对正在进行的通话产生较大的影响,即只能起到提醒用户的作用,因此有必要对提示音的音量增益进行合理控制。