一种基于能量统计的语音音量自动调整方法

文档序号:8380713阅读:573来源:国知局
一种基于能量统计的语音音量自动调整方法
【技术领域】
[0001]本发明属于计算机数字语音处理通信领域,具体来说是一种基于能量统计的语音音量自动调整方法。
【背景技术】
[0002]在语音处理通信领域,比如在线教育系统、视频会议系统等,从麦克风输入的语音数据由于各种情况的影响,语音有可能太小,也有可能太大,通过音量调整模块对语音音量进行相应的增加或减少,可以维持音量大小的相对稳定,让人听起来比较舒适。
[0003]在各种语音处理通信系统中,大部分系统都有音量自动调整的功能,实现方法主要有两大类,一是通过调整系统麦克风音量来改变从麦克风采集到的源语音的音量来实现,二是通过软件对采集到的语音数据进行放大和缩小来实现,而第二种通过软件来实现的方法又可以进一步进行细分为在时域和频域中进行实现。在通过调整系统麦克风音量实现时,当判断出音量需要增强或者减少时,通过调用系统的麦克风接口,对麦克风的增益和音量进行相应的增加和减少来达到音量的自动调整,优点是可以降低软件处理时需要的计算量,对语音音质不会造成影响,缺点是会对系统音量进行频繁调整,会影响到用户体验;在通过软件在时域中进行处理时,会直接对pcm语音数据进行缩放运算,其优点是算法简单,计算量小,缺点是理论上会对一些语音中的噪音也进行相应的发大和缩小,但是实际使用过程中发现对用户体验影响并不大,而在频域中处理时需要先将pcm数据变换到频域中,在频域中进行相应的处理后再把频域中的数据通过逆变换转换为pcm数据,在频域中处理的优点是可以对各个频段的数据进行控制,更有目的地对需要的频段和数据进行缩放,缺点是算法复杂度高,计算量比较大。通过软件对语音数据进行音量调整时,优点是不需要对系统麦克风音量进行操作,对系统音量不会造成影响,缺点是需要一定的计算量,对音质也会有些影响。
[0004]各个系统根据实际需求情况来决定使用哪种方法进行自动音量调整,一般都是在满足需求的基础上力求简单,从而达到节省资源的目的。

【发明内容】

[0005]本发明的目的是针对现有技术的不足,提供一种基于能量统计的语音音量自动调整方法。本发明对判定为语音的数据进行处理,对噪声等非语音数据不进行处理,语音数据的判定通过vad算法进行,本发明不对vad算法进行讨论。
[0006]本发明解决其技术问题所采用的技术方案包括如下步骤:
[0007]步骤⑴、统计每帧采样点的能量平均值energy和该帧中所有采样点能量值的绝对值中的最大值峰值peak,计算公式如下:
[0008]energy = (| sample [O] |+...+1 sample [count—1] |)+count ;
[0009]peak = max (|sample[0]|,..., |sample[count-1]|);
[0010]即能量平均值energy为每个采样点的能量值的绝对值之和再除以该帧中总的采样点个数;sample[i]表示当前语音数据帧中第i个采样点的值,O ^ i ^ count-1,sample[i]数据类型为 16 位的 short 型,取值范围为 32767 ^ sample[i] ^ -32768 ;
[0011]步骤(2)、计算O到frame_index帧中每帧采样点的能量平均值energy的平均值energy_avg和最大值峰值peak的平均值peak_avg,计算公式如下:
[0012]energy_avg = (energy [O] +...+energy [frame_index]) +frame_count ;
[0013]即energy_avg为每帧的采样点的能量平均值energy相加再除以总的帧数frame_count ;frame_count = time + frame_len,其中frame_len为语音数据帧的长度,该长度为10或20毫秒;
[0014]peak_avg = (peak[0]+...+peak [frame_index]) +frame_count ;
[0015]即peak_avg为每帧中采样点的最大值峰值peak相加再除以总的帧数frame_count ;其中,frame_count为time时间内总的帧数,即时间段time内要统计的帧数;frame_index表示当前处理的语音数据帧的索引;
[0016]步骤(3)、计算下个时间段time内的放大因子factor_max'和缩小因子factor_min';所述的放大因子和缩小因子在最开始的时间段time内不进行缩放操作,其初始值都均为I.0,当frame_index> = frame_count时(即time时间内统计结束),计算一次缩放因子;
[0017]所述的缩放判定条件和计算公式如下:
[0018]3-1.当peak_avg < peak_max_threshold时,预测下个时间段time内的音量偏小,则下个时间段time内的放大因子factor_max '和缩小因子factor_min'需如下操作:
[0019]factor—temp = peak—max_threshold + peak—avg ;
[0020]factor—max' = factor—maxX0.6+factor—tempX0.4 ;
[0021]factor—min' = factor—minX0.6+1.0X0.4 ;
[0022]其中,factor—temp为临时因子,是计算下个时间段time内放大因子factor—max'和缩小因子factor—min'的临时变量;peak—max—threshold为最大峰值均值peak—avg的放大阈值(即峰值均值阈值下限)factor—max为当前时间段time内放大因子,factor—min为当前时间段time内缩小因子;
[0023]具体的,下个时间段time内放大因子factor—max'通过临时因子factor—temp的计算,尽量将语音数据帧的peak—avg放大到放大阈值peak—max—threshold的大小附近,下个时间段time内放大因子factor—max'通过权重来分配当前时间段time内的放大因子factor—max和临时因子factor—temp的比重,使下个时间段time内的放大因子factor—max'平滑进行增大最终稳定在一个大于1.0的浮点值附近;由于此时是音量偏小,所以下个时间段time内缩小因子factor—min'通过计算最终会趋向初始值1.0附近;
[0024]3-2.当peak—avg > peak—min—threshold时,预测下个时间段time内的音量偏大,则下个时间段time内的放大因子factor—max'和缩小因子factor—min'需如下操作:
[0025]factor—temp = peak—avg + peak—min_threshold ;
[0026]factor—min' = factor—minX0.6+factor—tempX0.4 ;
[0027]factor—max' = factor—maxX0.6+1.0X0.4 ;
[0028]其中,peak_min_threshold为语音数据帧的采样点的峰值均值peak_avg的缩小阈值(即峰值均值阈值上限);
[0029]具体的,下个时间段time内缩小因子factor_min'通过临时因子factor_temp的计算,尽量将语音数据帧的peak_avg缩小到缩小阈值peak_min_threshold的大小附近,下个时间段time内缩小因子factor_min'通过权重来分配当前时间段time内的缩小因子factor_min和临时因子factor_temp的比重,使下个时间段time内的缩小因子factor_min'平滑进行增大最终稳定在一个大于1.0的浮点值附近;由于此时是音量偏大,所以下个时间段time内放大因子factor_max'通过计算最终会趋向初始值1.0附近;
[0030]3-3.当 peak_min_threshold peak_avg peak_max_threshoId 时,预测下个时间段time内音量正常,不需要对音量进行缩小放大,则下个时间段time内的放大因子factor_max'和缩小因子factor_min'需如下操作:
[0031]factor_min' = factor_minX0.6+1.0X0.4 ;
[0032]factor_max' = factor_maxX0.6+1.0 X 0.4 ;
[0033]其中,下个时间段time内的放大因子factor_max'和缩小因子factor_min'通过上述公式计算最终会趋向初始值1.0附近。
[0034]步骤(4)、对下个时间段time内的每帧语音数据进行判定,当需要缩放时,通过缩放因子进行放大或者缩小;
[0035]4-1.当 energy < energy_avg_max_threshold,或者 peak < peak_max_thresho I d时,该语音数据帧需要放大;
[0036]其中,energy_avg_max_threshold为能量平均值energy的放大阈值(即能量均值阈值下限);
[0037]4-1-1.判断是否需要修正放大因子factor_max',防止放大后的最大值峰值peak 超出其放大峰值上限 peak_max_volume ;若 factor_max' > factor_temp' > 1.0,则放大因子 factor_max'修正如下:放大因子 factor_max' = factor_temp';
[0038]其中,另一个临时因子factor_temp' = peak_max_voIume+ peak ;
[0039]通过计算临时因子factor_temp'来防止放大因子factor_max'过大,造成放大后的音量超过放大峰值上限peak_max_volume的情况发生;
[0040]4-1-2.对该语音数据帧中的每个采样点的音量进行如下放大:
[0041]sample [i] = sample [i] X factorjnax,;且 32767 ^ sample [i] ^ -32768 ;
[0042]4-2.当 energy > energy_avg_min_threshold 或者 p
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1