技术领域
[0001] 本
发明涉及通信领域,尤其涉及对NGN(Next Generation Network,下一代通信网络)中基于RFC2833报文的DTMF(Double Tone Multi-frequency,双音多频)进行处理的方法及其装置。
背景技术
[0002] NGN是基于分组包交换的网络技术,在NGN中发送语音媒体时,将需要发送的语音媒体封装成RTP(Real-time Transport Protocol,实时传输协议)数据包,并将该RTP数据包承载在UDP(User Datagram Protocol,用户数据协议)报文中进行传输。DTMF作为语音
信号,包括带内传送方式和带外传送方式;带外传送方式一般以RFC2833报文格式的RTP报文封装传送,一方面减轻网络语音终端系统的带内传输带来的语音检测工作负担,另一方面避免如G.723.1等低比特率编
解码器错误检测DTMF的问题,从而提高语音终端设备自动识别DTMF的能
力。但是在UDP报文中传输RTP数据包的方式,不能保证数据包的可靠传输,如在IP(Internet Protocol,因特网协议)电话中,对DTMF传输要求可靠性较高的数据分组需要在IP网络中传输时,由于IP网络传输差错、网络拥塞等原因而可能导致DTMF报文丢失,带来较大的传输延时,从而会使用户听到的DTMF不连续、或者不能正常停止DTMF的处理影响语音业务。
[0003] 目前,语音终端设备对基于RFC 2833报文格式传输的DTMF的处理必须有该DTMF的开始事件报文、中间事件报文(中间事件报文也可以为RFC 2833报文)和结束事件报文;如:在接收到开始事件报文时才对接收到的DTMF进行处理;在接收到中间事件报文时持续处理该DTMF,中间事件报文以50毫秒或普通语音的时间间隔查验处理一次;在接收到结束事件报文时,停止处理DTMF。
现有技术中语音终端设备的这种处理DTMF的方式,在网络状况较好(如不发生网络拥塞和网络传输差错的情况)时,能够正确的处理DTMF;但是,在网络状况较差时,可能会由于开始事件报文、中间事件报文或结束事件报文丢失时而导致语音终端设备对DTMF处理的准确性较差的问题,如:当开始事件报文丢失时,语音终端设备则无法正常开始对接收到的DTMF进行及时处理和上报;当中间事件报文丢失或延迟时,语音终端设备则延迟或停止处理该DTMF,从而导致对DTMF进行处理的不连续性,存在断点,给用户带来不连续的用户感受;当结束事件报文丢失时,语音终端设备一直持续对该DTMF进行处理,无法对该DTMF进行停止处理,从而或影响正常的语音业务。
发明内容
[0004] 针对现有技术存在的上述技术问题,本发明
实施例提供一种处理双音多频的方法及其装置,以提高处理DTMF的准确性和成功率。
[0005] 一种处理双音多频的方法,包括:
[0006] 接收当前待处理DTMF的事件报文,确定出所述事件报文的事件类型;
[0007] 根据所述事件报文的事件类型设置所述当前待处理DTMF的处理状态;
[0008] 根据所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF。
[0009] 一种处理双音多频的装置,包括:
[0010] 确定单元,用于接收当前待处理DTMF的事件报文,确定出所述事件报文的事件类型;
[0011] 设置单元,用于根据所述确定单元确定出的所述事件报文的事件类型,设置所述当前待处理DTMF的处理状态;
[0012] 处理单元,用于根据所述设置单元设置的所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF。
[0013] 本发明实施例中,针对当前待处理DTMF,在接收到当前待处理DTMF的事件报文时,根据该事件报文的事件类型设置所述当前待处理DTMF的处理状态;并根据所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF;采用本发明技术方案,不管当前待处理DTMF所包含的事件报文为一个还是多个(如开始事件报文、中间事件报文和结束事件报文中的一个或多个),都可以对该当前待处理DTMF进行相应的处理,不存在由于缺少其中一个事件报文而无法对DTMF进行正确处理的问题,从而克服了现有技术中在DTMF中缺少开始事件报文、中间事件报文和结束事件报文中的任意一个或多个事件报文而不能正确处理DTMF的问题,从而导致对DTMF进行处理的准确性较低和成功率较低的问题;因此采用本发明技术方案,提高了对DTMF进行处理的正确性和成功率。
附图说明
[0014] 图1为本发明实施例中处理DTMF的方法
流程图;
[0015] 图2为本发明实施例中在缓冲区接收队列中设置DTMF的处理状态的方法流程图;
[0016] 图3为本发明实施例中在缓冲区处理队列中处理DTMF的方法流程图;
[0017] 图4为本发明实施例中处理DTMF的装置的结构示意图。
具体实施方式
[0018] 针对现有技术存在的上述技术问题,本发明实施例提供一种处理双音多频的方法及其装置,以提高对DTMF进行处理的准确性和成功率;该处理双音多频的方法包括:接收当前待处理DTMF的事件报文,确定出所述事件报文的事件类型;根据所述事件报文的事件类型设置所述当前待处理DTMF的处理状态;根据所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF。采用本发明技术方案,不管当前待处理DTMF所包含的事件报文为一个还是多个(如开始事件报文、中间事件报文和结束事件报文中的一个或多个),都可以对该当前待处理DTMF进行相应的处理,不存在由于缺少其中一个事件报文而无法对DTMF进行正确处理的问题,从而克服了现有技术中在DTMF中缺少开始事件报文、中间事件报文和结束事件报文中的任意一个或多个事件报文而不能正确处理DTMF的问题,从而导致对DTMF进行处理的准确性较低和成功率较低的问题;因此采用本发明技术方案,提高了对DTMF进行处理的正确性和成功率。
[0019] 下面结合
说明书附图对本发明技术方案进行详细的描述。
[0020] 参见图1,为本发明实施例中处理双音多频的方法流程图,该方法包括:
[0021] 步骤101、接收当前待处理DTMF的事件报文,确定出所述事件报文的事件类型。
[0022] 步骤102、根据所述事件报文的事件类型设置所述当前待处理DTMF的处理状态。
[0023] 步骤103、根据所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF。
[0024] 较佳地,上述流程步骤102具体可包括:当所述事件报文的事件类型为开始事件报文时,将所述当前待处理DTMF的处理状态设置为待处理状态(即pending);当所述事件报文的事件类型为结束事件报文时,将所述当前待处理DTMF的处理状态设置为结束处理状态(即end);当所述事件报文的事件类型为中间事件报文时,判断是否已经记录所述事件报文,并根据判断结果设置所述当前待处理DTMF的处理状态。根据判断结果设置所述当前待处理DTMF的处理状态,可具体包括:当已经记录所述事件报文时,保留所述当前待处理DTMF的正在处理状态(即working);当未记录所述事件报文时,判断所述当前待处理DTMF的结束时间戳是否大于当前处理时间戳;若是则将所述当前待处理DTMF的处理状态设置为待处理状态;若否则将所述当前待处理DTMF的处理状态设置为结束状态。
[0025] 较佳地,上述流程的步骤102还可包括步骤:当所述事件报文的事件类型为开始事件报文时,存储所述事件报文的事件信息,所述事件信息包括事件值、功率值、时间戳、开始事件标志、结束事件标志和事件宽度;当所述事件报文的事件类型为结束事件报文时,设置所述当前待处理DTMF的结束时间戳,并存储所述事件报文的事件信息;当所述事件报文的事件类型为中间事件报文,且所述当前待处理DTMF的结束时间戳大于当前处理时间戳时,则存储所述事件报文的事件信息。
[0026] 上述流程步骤103中,具体可包括:当所述当前待处理DTMF的处理状态为等待处理状态时,初始化所述当前待处理DTMF的处理函数,并将所述当前待处理DTMF的处理状态设置为正在处理状态;当所述当前待处理DTMF的处理状态为正在处理状态时,判断所述当前待处理DTMF是否有结束时间戳,并根据判断结果处理所述当前待处理DTMF。
[0027] 根据判断结果处理所述当前待处理DTMF,可包括:当判断没有结束时间戳且在设定的时间
阈值(时间阈值可以根据经验值设置为50毫秒)内接收到所述当前待处理DTMF的中间事件报文时,继续处理所述当前待处理DTMF;当判断没有结束时间戳且在设定的时间阈值内未接收到所述当前待处理DTMF的中间事件报文时,判断所述当前待处理DTMF的事件宽度是否超过设置的事件宽度阈值(事件宽度阈值可根据经验值设置为8秒);若是则停止处理所述当前待处理DTMF,若否则继续处理所述当前待处理DTMF;当判断有结束时间戳时,判断当前处理时间戳是否到达所述当前待处理DTMF的结束时间戳,若到达则停止处理所述当前待处理DTMF,若未到达则继续处理所述当前待处理DTMF。
[0028] 在实际应用中,可采用缓冲区接收队列实现上述流程中的步骤101~步骤102,采用缓冲区处理队列来实现上述流程中的步骤103。缓冲区接收队列在接收到基于RFC2833报文格式的事件报文时,若判断该事件报文为开始事件报文时,存储该事件报文的事件信息,并将相应的DTMF的处理状态设置为pending;若判断该事件报文为中间事件报文时,进行以下处理:根据该中间事件报文的RTP时间戳,若缓冲区接收队列已经记录所述事件报文时,根据该中间事件报文的事件信息更新已经存储的相应的事件信息,并将相应的DTMF的处理状态设置为working;若缓冲区接收队列未记录所述事件报文时,判断所述当前待处理DTMF的结束时间戳大于当前处理时间戳时,将所述当前待处理DTMF的处理状态设置为pending,否则将所述当前待处理DTMF的处理状态设置为end。缓冲区处理队列定期或周期地查看缓冲区接收队列,当缓冲区接收队列中当前需要处理的DTMF的处理状态为pending时,缓冲区处理队列初始化该DTMF的处理函数,并将该DTMF的处理状态设置为working;当缓冲区接收队列中当前需要处理的DTMF的处理状态为working时,确定该DTMF是否有结束时间戳,若没有结束时间戳且在设定的时间阈值内没有收到该DTMF的中间事件报文时,判断根据该DTMF的事件宽度是否达到设置的事件宽度阈值(如设置的事件宽度阈值为经验值8秒),若达到事件宽度阈值则停止对该DTMF的处理,并将该DTMF的处理状态设置为end,若未达到时间宽度阈值则继续处理DTMF。
[0029] 参见图2,为本发明实施例中在缓冲区接收队列中设置DTMF的处理状态的方法流程图,该方法包括步骤:
[0030] 步骤201、缓冲区接收队列接收事件报文,并存储该接收到的事件报文。
[0031] 步骤202、根据所述事件报文的事件标志位,判断该事件报文的事件类型。
[0032] 步骤203、当所述事件报文的事件类型为开始事件报文时,将所述事件报文的事件信息写入到缓冲区中,并将相应的DTMF的处理状态设置为pending。
[0033] 步骤204、当所述事件报文的事件类型为中间事件报文时,判断缓冲区接收队列中是否已经记录该事件报文,若是则执行步骤206,否则执行步骤207。
[0034] 步骤205、当所述事件报文的事件类型为结束事件报文时,将所述事件报文的事件信息写入到缓冲区中,并将相应的DTMF的处理状态设置为end,并标记该DTMF的结束时间戳。
[0035] 步骤206、根据所述事件报文的事件信息更新所述DTMF的时间戳和事件宽度。
[0036] 步骤207、判断所述DTMF当前的时间戳是否大于当前处理时间戳,若是则执行步骤208,否则执行步骤209。
[0037] 步骤208、将所述事件报文的事件信息写入到缓冲区中,并将相应的DTMF的处理状态设置为pending。
[0038] 步骤209、丢弃所述DTMF。
[0039] 步骤210、结束流程。
[0040] 参见图3,为本发明实施例中在缓冲区处理队列中处理DTMF的方法流程图,该方法包括:
[0041] 步骤301、定期或周期的查看所述缓冲区接收队列,并确定出缓冲区接收队列中当前需要处理的DTMF。
[0042] 步骤302、判断所述DTMF当前的处理状态。
[0043] 步骤303、当所述DTMF的处理状态为pending时,初始化该DTMF的处理函数,并将该DTMF的处理状态设置为working。
[0044] 步骤304、当所述DTMF的处理状态为working时,处理该DTMF,并判断所述DTMF是否有结束时间戳,若否则执行步骤305,否则执行步骤307。
[0045] 步骤305、判断在设定的时间阈值内是否接收到所述DTMF的中间事件报文,若是则执行步骤301,否则执行步骤306。
[0046] 步骤306、判断所述DTMF的事件宽度是否到达设置的事件宽度阈值,若是则执行步骤308,否则执行步骤301。
[0047] 步骤307、判断处理DTMF的当前处理时间戳是否到达所述DTMF的结束时间戳,若是则执行步骤308,否则执行步骤301。
[0048] 步骤308、停止处理所述DTMF,并将该DTMF的处理状态设置为end。
[0049] 步骤309、结束流程。
[0050] 基于上述方法的相同构思,本发明实施例还提供一种处理双音多频的装置,该装置的结构如图4所示。
[0051] 参见图4,为本发明实施例中处理双音多频的装置的结构示意图,包括:
[0052] 确定单元41,用于接收当前待处理DTMF的事件报文,确定出所述事件报文的事件类型;
[0053] 设置单元42,用于根据所述确定单元41确定出的所述事件报文的事件类型,设置所述当前待处理DTMF的处理状态;
[0054] 处理单元43,用于根据所述设置单元42设置的所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF。
[0055] 设置单元42,具体用于:当所述事件报文的事件类型为开始事件报文时,将所述当前待处理DTMF的处理状态设置为待处理状态;
[0056] 当所述事件报文的事件类型为结束事件报文时,将所述当前待处理DTMF的处理状态设置为结束处理状态;
[0057] 当所述事件报文的事件类型为中间事件报文时,判断是否已经记录所述事件报文,并根据判断结果设置所述当前待处理DTMF的处理状态。
[0058] 设置单元42根据判断结果设置所述当前待处理DTMF的处理状态,具体用于:
[0059] 当已经记录所述事件报文时,根据所述事件报文的事件信息,更新已经记录的相应的事件信息;
[0060] 当未记录所述事件报文时,判断所述当前待处理DTMF的结束时间戳是否大于当前处理时间戳;若是则将所述当前待处理DTMF的处理状态设置为待处理状态;若否则将所述当前待处理DTMF的处理状态设置为结束状态。
[0061] 设置单元42进一步用于,
[0062] 在所述事件报文的事件类型为开始事件报文时,存储所述事件报文的事件信息,所述事件信息包括事件值、功率值、时间戳、开始事件标志、结束事件标志和事件宽度;以及,用于在所述事件报文的事件类型为结束事件报文时,设置所述当前待处理DTMF的结束时间戳,并存储所述事件报文的事件信息;以及,用于在所述事件报文的事件类型为中间事件报文,且所述当前待处理DTMF的结束时间戳大于当前处理时间戳时,则存储所述事件报文的事件信息。
[0063] 较佳地,所述处理单元43,具体用于:当所述当前待处理DTMF的处理状态为等待处理状态时,初始化所述当前待处理DTMF的处理函数,并将所述当前待处理DTMF的处理状态设置为正在处理状态;
[0064] 当所述当前待处理DTMF的处理状态为正在处理状态时,判断所述当前待处理DTMF是否有结束时间戳,并根据判断结果处理所述当前待处理DTMF。
[0065] 处理单元43根据判断结果处理所述当前待处理DTMF,具体用于:
[0066] 当判断没有结束时间戳且在设定的时间阈值内接收到所述当前待处理DTMF的中间事件报文时,继续处理所述当前待处理DTMF;
[0067] 当判断没有结束时间戳且在设定的时间阈值内未接收到所述当前待处理DTMF的中间事件报文时,判断所述当前待处理DTMF的事件宽度是否超过设置的事件宽度阈值;若是则停止处理所述当前待处理DTMF,若否则继续处理所述当前待处理DTMF;
[0068] 当判断有结束时间戳时,判断当前处理时间戳是否到达所述当前待处理DTMF的结束时间戳,若到达则停止处理所述当前待处理DTMF,若未到达则继续处理所述当前待处理DTMF。
[0069] 本发明实施例中,针对当前待处理DTMF,在接收到当前待处理DTMF的事件报文时,根据该事件报文的事件类型设置所述当前待处理DTMF的处理状态;并根据所述当前待处理DTMF的处理状态,处理所述当前待处理DTMF;采用本发明技术方案,不管当前待处理DTMF所包含的事件报文为一个还是多个(如开始事件报文、中间事件报文和结束事件报文中的一个或多个),都可以对该当前待处理DTMF进行相应的处理,不存在由于缺少其中一个事件报文而无法对DTMF进行正确处理的问题,从而克服了现有技术中在DTMF中缺少开始事件报文、中间事件报文和结束事件报文中的任意一个或多个事件报文而不能正确处理DTMF的问题,从而导致对DTMF进行处理的准确性较低和成功率较低的问题;因此采用本发明技术方案,提高了对DTMF进行处理的正确性和成功率。
[0070] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些
修改和变型属于本发明
权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。