一种语音网关的语音加载的预判方法

文档序号:25093687发布日期:2021-05-18 21:10阅读:73来源:国知局
一种语音网关的语音加载的预判方法

1.本发明涉及语音网关的语音加载技术领域,特别是涉及到一种语音网关的语音加载的预判方法。


背景技术:

2.在传统架构下,语音网关给用户播放定制的媒体语音时,一般是通过专业的数字处理(digital signal processing,dsp)芯片实现,可以高效处理媒体语音。但是dsp芯片是媒体专用芯片,内存比较小,例如64mb。因此,在内存中一般仅存放一份最常见的g.711码型的语音文件,为了给不同编解码的用户进行播放语音,需要在语音资源和用户之间增加一个转码器资源,将g.711码型的语音转换为用户设备对应的语音码型,如图2所示。
3.不过dsp处理芯片和专业的转码器芯片的价钱都比较昂贵,因此,在新的语音网关架构下,媒体处理也采用通用的x86芯片。和dsp相比,转码器的性能大幅下降,另外通用的硬件设备使用的是通用的内存。因此,对于新的硬件架构和设备特性,在内存中存放各种用户码型的语音文件;对不同编解码的用户进行播放语音时,可以使用内存中不同的语音码型文件直接对用户进行播放语音。这样既节省播放语音时的转码器资源,又充分利用通用硬件设备的内存空间。如图3所示。
4.语音网关需要媒体需要播放语音,需要预先将需要播放的语音资源加载到语音网关中,一般需要如下的步骤:1)操作维护工具将原始的语音文件(一般为通用的wave文件格式,对应码型为g.711)导入到语音网关中。2)语音网关需要将g.711码型的原始语音文件,逐个转换为语音网关支持的各种码型的语音文件,并存储在语音网关中。3)语音网关将各种码型的语音文件加载到内存中。在播放语音时,根据用户选择的码型,选择对应码型的语音文件进行播放。
5.在语音加载过程中,相对于g.711码型,对语音网关的内存、存储的需求一般需要增加15~30倍左右,第二步的转换时间一般也需要长达几十分钟甚至以小时计算。如果语音加载到第二步或者第三步时才发现内存或者硬盘容量不足时,处理时间已经超过几十分钟,对于工程实施的影响是不可估量的。因此,需要在语音加载初期,对加载的语音占用的内存、硬盘的容量大小进行预判。


技术实现要素:

6.为了解决上述存在问题,本发明提供一种语音网关的语音加载的预判方法,在语音加载之前,预判是否能成功加载所有的语音文件。本发明提供一种语音网关的语音加载的预判方法,根据需要加载的原始语音文件的大小,以及语音网关支持的码型类型,估算出加载语音需要的内存和硬盘的容量大小,并和当前语音网关空闲的内存容量和硬盘容量进行比较,从而对语音加载是否成功做出预判。
7.本发明提供一种语音网关的语音加载的预判方法,具体步骤如下:
8.第一步,根据历史数据,计算不同码型的语音文件与g.711码型文件的语音压缩比
例;
9.第二步,获取需要加载的所有g.711码型的原始语音wave文件的容量,根据补全静音帧的规则,估算出g.711码型语音的净荷总容量;
10.计算语音文件大小时,需要将原始语音wave文件的文件头长度去掉,取净荷的大小;
11.因此,g.711码型的语音净荷容量计算公式为:
12.语音净荷容量=wave文件总容量+音文件数
×
(mutelen

waveheadlen)
13.第三步,根据语音网关支持的码型类型,以及不同码型的压缩比例,分别估算出不同码型的语音净荷的总容量;根据语音文件在硬盘中的存储格式、在内存中的数据格式,分别估算出需要占用的硬盘容量和内存容量;
14.不同编解码的语音内存文件所占有的容量,通过如下的过程推算得到:
15.语音占用内存容量=语音净荷容量
×
语音转换比率+音文件数
×
(memheadlen+8/2+1024/2);
16.不同编解码的语音硬盘文件占用的容量,通过如下的过程推算得到:
17.语音占用硬盘容量=语音净荷容量
×
语音转换比率+音文件数
×
(diskheadlen+8/2);
18.根据上述推算公式,从原始wave文件得出一种编解码的语音文件占用的硬盘容量和内存容量,将语音网关支持的所有编解码的硬盘容量和内存容量进行求和,最终得到语音加载所需要占用的硬盘总容量和内存总容量;
19.第四步,获取语音网关空闲的硬盘容量和内存容量,和第三步得出的数据进行比较,从而得出语音加载的预判结论。
20.作为本发明进一步改进,步骤二中对净荷进行处理,具体步骤如下:
21.1)净荷补足;
22.语音网关的编码帧长度典型的为10ms/20ms/30ms,净荷的长度需要为编码帧长度的整数倍,不足部分需要以静音帧补足,按0.5个编码帧计;
23.2)语音文件补齐静音帧;
24.播放语音时,有时需要将多个语音文件合并成一个完整的通知音,为了避免两个音直接连接,导致音的突变,需要在语音文件前/后添加静音帧,规则为:文件头/文件尾分别加一个编解码长度帧,对于10ms的编解码,文件尾加2个长度帧,即加20ms的静音帧。
25.作为本发明进一步改进,步骤三中硬盘容量和内存容量具体如下;
26.内存语音文件为了查找和播放音方便,定义了24个字节的文件头memheadlen,为了提高内存访问数据的效率,内存语音文件净荷按8字节对齐,在内存语音文件存放时,为了避免形成太多的内存碎片,内存语音文件按1kb大小存放;
27.其中语音转换比率,需要根据不同国家、不同语言的语音实际转换实测后,取其中的最大值后,适当向上取整:
28.硬盘语音文件,参考wave文件的格式,需要增加58个字节的diskheadlen,语音文件净荷按8字节对齐。
29.作为本发明进一步改进,步骤四具体如下;
30.从语音网关获取当前空闲硬盘和空闲内存的容量,如果语音网关涉及多台主机,
需要获取所有需要播放语音的主机的空闲硬盘和空闲内存的容量,如果语音网关上述所有主机的空闲硬盘容量大于语音占用硬盘总容量,且空闲内存容量大于语音占用内存总容量,则正常进行后续的加载语音操作;如果其中任何主机空闲硬盘或者空闲内存不满足上述条件,预判结果为不可以加载语音,需要再减少音文件、减少编解码类型或者增加硬盘内存容量等处理后,再进行尝试加载音操作。
31.本发明其显著优点在于,在语音加载之前,语音音加载预判技术估算的剩余内存大小基本准确,误差范围在10%以内。实现该技术后,可以在真正转换语音和加载语音之前判断系统的内存是否满足语音加载要求,提前给出预警,为工程人员实际操作时节省时间。
附图说明
32.图1本发明语音加载流程图;
33.图2本发明传统语音网关播放语音结构;
34.图3本发明新型语音网关播放语音结构。
具体实施方式
35.下面结合附图与具体实施方式对本发明作进一步详细描述:
36.本发明提供一种语音网关的语音加载的预判方法,在语音加载之前,预判是否能成功加载所有的语音文件。本发明提供一种语音网关的语音加载的预判方法,根据需要加载的原始语音文件的大小,以及语音网关支持的码型类型,估算出加载语音需要的内存和硬盘的容量大小,并和当前语音网关空闲的内存容量和硬盘容量进行比较,从而对语音加载是否成功做出预判。
37.下面通过具体实施例,对本发明进行详细说明。
38.第一步,计算不同码型和g.711码型的压缩比例。
39.下面对具体的放音文件包(1100音文件,原始音文件为23.7mb)转码后,最终生成的53种码型的音文件大小为441.6mb。部分码型的压缩比例如下表所示:
40.表1部分语音文件压缩比率
41.编解码类型音文件(b)压缩比率amr 12.249350970.198amr

wb 23.8595085420.382evrc35157520.141g.722251457621.011g.72325902180.104g.72931836820.128evs pri 13.252505070.211evs pri 128505118422.029
42.第二步,估算g.711码型的语音净荷容量。
43.wave文件一般为g.711净荷,文件头大小waveheadlen为58个字节。
44.计算语音文件大小时,需要将原始文件的文件头长度去掉,取净荷的大小。另外,还需要对净荷进行如下处理:
45.1)净荷补足;
46.语音网关的编码帧长度典型的为10ms/20ms/30ms,净荷的长度需要为编码帧长度的整数倍,不足部分需要以静音帧补足(按0.5个编码帧计)。
47.2)语音文件补齐静音帧;
48.播放语音时,有时需要将多个语音文件合并成一个完整的通知音,为了避免两个音直接连接,导致音的突变,需要在语音文件前/后添加静音帧,规则为:文件头/文件尾分别加一个编解码长度帧,对于10ms的编解码,文件尾加2个长度帧,即加20ms的静音帧。
49.因此,对于wave文件的净荷,对于不同的编码帧,净荷分别需要增加如下长度的静音帧长度mutelen(10ms g.711净荷的长度为80bytes):
50.10ms:(1+2+0.5)
×
80=280b
51.20ms:(1+1+0.5)
×
160=400b
52.30ms:(1+1+0.5)
×
240=600b
53.因此,g.711码型的语音净荷容量计算公式为:
54.语音净荷容量=wave文件总容量+音文件数
×
(mutelen

waveheadlen)
55.第三步,根据语音网关支持的码型,估算需要的硬盘容量和内存容量。
56.内存语音文件为了查找和播放音方便,定义了24个字节的文件头memheadlen。为了提高内存访问数据的效率,内存语音文件净荷按8字节对齐。在内存语音文件存放时,为了避免形成太多的内存碎片,内存语音文件按1kb大小存放。
57.因此,不同编解码的语音内存文件所占有的容量,通过如下的过程推算得到:
58.语音占用内存容量=语音净荷容量
×
语音转换比率+音文件数
×
(memheadlen+8/2+1024/2)
59.其中语音转换比率,需要根据不同国家、不同语言的语音实际转换实测后,取其中的最大值后,适当向上取整。下表列出部分编解码的语音转换比率及对应的mutelen大小:
60.表2部分编解码语音转换比率&补充静音帧长度
[0061][0062][0063]
硬盘语音文件,参考wave文件的格式,需要增加58个字节的diskheadlen,语音文件净荷按8字节对齐。因此,不同编解码的语音硬盘文件占用的容量,通过如下的过程推算得到:
[0064]
语音占用硬盘容量=语音净荷容量
×
语音转换比率+音文件数
×
(diskheadlen+8/2)
[0065]
根据上述推算公式,从原始wave文件可以得出一种编解码的语音文件占用的硬盘
容量和内存容量。将语音网关支持的所有编解码的硬盘容量和内存容量进行求和,最终可以得到语音加载所需要占用的硬盘总容量和内存总容量。
[0066]
第四步,预判语音加载的结果。
[0067]
从语音网关获取当前空闲硬盘和空闲内存的容量,值得注意的是,如果语音网关涉及多台主机,需要获取所有需要播放语音的主机的空闲硬盘和空闲内存的容量。如果语音网关上述所有主机的空闲硬盘容量大于语音占用硬盘总容量,且空闲内存容量大于语音占用内存总容量,则正常进行后续的加载语音操作;如果其中任何主机空闲硬盘或者空闲内存不满足上述条件,预判结果为不可以加载语音,需要再减少音文件、减少编解码类型或者增加硬盘内存容量等处理后,再进行尝试加载音操作。
[0068]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1