CN104934040B - 音频信号的时长调整方法和装置 - Google Patents
音频信号的时长调整方法和装置 Download PDFInfo
- Publication number
- CN104934040B CN104934040B CN201410099360.1A CN201410099360A CN104934040B CN 104934040 B CN104934040 B CN 104934040B CN 201410099360 A CN201410099360 A CN 201410099360A CN 104934040 B CN104934040 B CN 104934040B
- Authority
- CN
- China
- Prior art keywords
- audio frame
- duration
- current audio
- frame
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供一种音频信号的时长调整方法和装置,包括:接收端根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,然后,根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,并且在确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。上述方法在对当前音频帧进行时长调整时,能够根据音频帧的时长调整类型进行时长调整,从而使得在进行时长调整时能够考虑不同音频帧的特性,保证每个音频帧都具有良好的音质,改善了音频信号的质量。
Description
技术领域
本发明实施例涉及数据通讯技术,尤其涉及一种音频信号的时长调整方法和装置。
背景技术
在互联网协议语音业务(Voice over Internet Protocol,简称VoIP)通信系统中,数据包在传输过程中会产生时延抖动(delay jitter),严重时会产生数据包丢失,造成语音失真,导致VoIP业务质量下降。
目前现有技术中,通过在VoIP通信系统的不同层中降低时延、平滑以及进行丢包补偿等方法来提高VoIP业务的质量。一种常用的方法中接收端通过实现高效的抖动缓存处理(Jitter Buffer Management,简称JBM)来补偿数据包在网络中的时延抖动。JBM处理中,接收端接收到数据包后并不是立即播放,而是在缓冲区内等待一段时间,到预定的播放时间(play-out time)再将该数据包送到解码器并播放。JBM是利用较高的延迟来实现语音的流畅播放,以提升用户体验。抖动缓存(Jitter Buffer)的缓冲深度与数据包的播放延时(play-out delay)相关,可分为固定抖动缓存器(Fixed Jitter Buffer Management,简称FJBM)和自适应抖动缓存器(Adaptive Jitter Buffer Management,简称AJBM)。显然,JBM会引入额外的缓存时延(buffering delay)。当数据包到达接收端的时间晚于预定的播放时间时,将产生延时丢包(late loss)。发生延时丢包时,接收端通过自适应抖动缓存器实现缓存时延和延时丢包之间的有效平衡,这需要将JBM和音频信号的时长调整(Time-ScaleModification,简称TSM)技术相结合,TSM技术是在保持音频原始特性(诸如基音、音色等)不变的前提下,调整音频信号的时间长度来保证音频的连续播放。
现有的TSM技术通常采用统一的时长调整长度对音频信号进行时长调整,由于对所有的音频信号都采用统一的时长调整长度进行调整,会引起部分音频信号失真,导致音频质量下降。
发明内容
本发明实施例提供一种音频信号的时长调整方法和装置,以克服现有技术中所有的音频信号都采用统一的时长调整长度进行调整,引起部分音频信号失真,导致音频质量下降的问题。
本发明第一方面提供一种音频信号的时长调整方法,包括:
获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;
根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,并且在确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述JBM帧模式包括有效帧或丢失帧;所述根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,包括:
若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面,在本发明第一方面的第二种可能的实现方式中,所述JBM帧模式包括有效帧或丢失帧;所述根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,包括:
若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧;
若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若根据所述当前音频帧的语音激活检测结果判断判断所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第五种可能的实现方式中,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第五种可能的实现方式,在本发明第一方面的第六种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0时,根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整小于0时,根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第七种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第八种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第九种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
结合本发明第一方面的第九种可能的实现方式,在本发明第一方面的第十种可能的实现方式中,所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
结合本发明第一方面的第七种至第九种可能的实现方式,在本发明第一方面的第十一种可能的实现方式中,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第十一种可能的实现方式,在本发明第一方面的第十二种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0时,根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整小于0时,根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第一方面的第八种可能的实现方式,在本发明第一方面的第十三种可能的实现方式中,若确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第七种至第十种可能的实现方式,在本发明第一方面的第十四种可能的实现方式中,若确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第十四种可能的实现方式,在本发明第一方面的第十五种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第一方面的第七种至第十种可能的实现方式,在本发明第一方面的第十六种可能的实现方式中,若确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第十六种可能的实现方式,在本发明第一方面的第十七种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要对所述当前音频帧对应的时域信号的时长进行调整,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;
当所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第一方面的第七种至第十种可能的实现方式,在本发明第一方面的第十八种可能的实现方式中,若确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型,则根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第一方面的第十八种可能的实现方式,在本发明第一方面的第十九种可能的实现方式中,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;
确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第一方面,在本发明第一方面的第二十种可能的实现方式中,所述获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式,包括:
接收所述发送端发送的数据包,解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
本发明第二方面提供一种音频信号的时长调整装置,包括:
获取模块,用于获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;
时长调整类型确定模块,用于根据所述获取模块获取的所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
判断模块,用于根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长;
时长调整模块,用于在所述判断模块确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述JBM帧模式包括有效帧或丢失帧;所述时长调整类型确定模块具体用于:
若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型;
所述判断模块具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面,在本发明第二方面的第二种可能的实现方式中,所述JBM帧模式包括有效帧或丢失帧;所述时长调整类型确定模块具体用于:
若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧;
若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型;
所述判断模块具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型;
所述判断模块具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定所述需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第三种可能的实现方式,在本发明第二方面的第四种可能的实现方式中,所述判断模块具体用于:
提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,当所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第五种可能的实现方式中,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则所述时长调整类型确定模块还用于:确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述判断模块具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第五种可能的实现方式,在本发明第二方面的第六种可能的实现方式中,所述判断模块具体用于:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第七种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第八种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第九种可能的实现方式中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
结合本发明第二方面的第九种可能的实现方式,在本发明第二方面的第十种可能的实现方式中,所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
结合本发明第二方面的第七种至第十种可能的实现方式,在本发明第二方面的第十一种可能的实现方式中,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则所述时长调整类型确定模块还用于:
确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第十一种可能的实现方式,在本发明第二方面的第十二种可能的实现方式中,所述判断模块具体用于:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0时,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
结合本发明第二方面的第八种可能的实现方式,在本发明第二方面的第十三种可能的实现方式中,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则所述判断模块具体用于:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第七种至第十种可能的实现方式,在本发明第二方面的第十四种可能的实现方式中,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第十四种可能的实现方式,在本发明第二方面的第十五种可能的实现方式中,所述判断模块具体用于:
获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第二方面的第七种至第十种可能的实现方式,在本发明第二方面的第十六种可能的实现方式中,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第十六种可能的实现方式,在本发明第二方面的第十七种可能的实现方式中,所述判断模块具体用于:
获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;
如果所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第二方面的第七种至第十种可能的实现方式,在本发明第二方面的第十八种可能的实现方式中,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型时,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
结合本发明第二方面的第十八种可能的实现方式,在本发明第二方面的第十九种可能的实现方式中,所述判断模块具体用于:
获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;
确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
结合本发明第二方面,在本发明第二方面的第二十种可能的实现方式中,所述获取模块具体用于:
接收所述发送端发送的数据包,解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
本发明实施例音频信号的时长调整方法和装置,通过根据当前音频帧和当前音频帧的前N帧音频帧的音频参数确定当前音频帧的时长调整类型,进而根据当前音频帧的时长调整类型或者当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度,然后,根据当前根据当前音频帧的时长调整类型和实际时长调整长度,调整当前音频帧对应的时域信号的时长。由于不同时长调整类型的音频帧的实际时长调整长度不同,因此,能够根据不同类型的音频帧的特性采用不同的实际时长调整长度进行调整,从而保证良好的音质,改善音频质量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为接收端对音频帧的处理流程示意图;
图2为本发明音频信号的时长调整方法实施例一的流程图;
图3为本发明音频信号的时长调整方法实施例二的流程图;
图4为本发明音频信号的时长调整方法实施例三的流程图;
图5为本发明实施例提供的一种音频信号的时长调整装置的结构示意图;
图6为本发明实施例提供的另一种音频信号的时长调整装置的结构示意图;
图7为本发明实施例提供的又一种音频信号的时长调整装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明各实施例提供的方法由接收端执行,以下简单介绍一下接收端对音频帧的处理过程,图1为接收端对音频帧的处理流程示意图,如图1所示,接收端主要包括以下模块:网络分析(Network Analyser)模块、抖动缓存(Jitter Buffer)模块、自适应控制逻辑(Adaptation Control Logic)模块、时长调整模块和音频解码(Audio Decoded)模块。当实时传输协议(Real-time Transport Protocol,简称RTP)数据包到达接收端后,首先,接收端将数据包发送给抖动缓存模块进行缓存处理,同时,自适应控制逻辑模块通过分析网络状况(Network condition)、缓存状态(Buffer Status)和帧类型(frame type)等参数确定音频帧的播放时间(Play-out time)以及时长调整参数,网络状况是由网络分析模块获取并发送给自适应控制逻辑模块的,缓存状态和帧类型由自适应控制逻辑模块从抖动缓存模块处获取。然后,当预定的播放时间到时,缓存的音频帧经过音频解码模块解码,得到解码后的时域信号,最后,音频解码模块将解码后的时域信号发送给时长调整模块,时长调整模块根据自适应控制逻辑模块确定的时长调整参数,对解码后的时域信号进行时长调整,并输出时长调整后的音频,同时时长调整模块还向自适应控制逻辑模块返回时长调整反馈,以便自适应控制逻辑模块根据时长调整反馈确定后续音频帧的时长调整参数。
图2为本发明音频信号的时长调整方法实施例一的流程图,本实施例提供的方法由接收端执行,如图2所示,本实施例的方法包括以下步骤:
步骤101、获取发送端发送的当前音频帧和当前音频帧的前一帧音频帧,以及当前音频帧的JBM帧模式和当前音频帧的前一帧音频帧的JBM帧模式。
接收端获取当前音频帧以及当前音频帧的前一帧音频帧的音频参数,其中,当前音频帧的前一帧音频帧是指与当前音频帧相邻并且在时域上超前当前音频帧的音频帧,如果当前音频帧的帧号为n,那么当前音频帧的前一帧音频帧的帧号为n-1,当前音频帧的后一帧音频的帧号为n+1。接收端获取的音频参数包括音频帧的抖动缓存处理(JitterBuffer Management,简称JBM)帧模式、音频编码类型、语音激活检测(Voice ActivityDetection,简称VAD)结果、帧擦除掩蔽(Frame erasure concealment,简称FEC)帧类型等参数中的至少一个,但本发明并不以此为限,音频参数还可以是其他的参数。其中,JBM帧模式包括有效帧和丢失帧;音频编码类型包括音乐帧编码类型和语音编码类型;语音编码类型可以包括:清音(unvoiced)编码类型、浊音(voiced)编码类型、一般(generic)编码类型和瞬态(transition)编码类型等。FEC帧类型包括:清音帧类型、浊音帧类型和语音开始(onset)帧类型。语音激活检测(Voice Activity Detection,简称VAD)结果用于判断音频帧为语音帧还是背景帧,如果VAD的值为1时,音频帧为语音帧,如果VAD的值为0,音频帧为背景帧,背景帧也称为噪音帧。
其中,在本发明的实施例中,当前音频帧的前一帧音频帧是指的与当前音频帧紧邻的前一帧音频帧。
步骤102、根据当前音频帧的JBM帧模式和当前音频帧的前一帧音频帧的JBM帧模式确定当前音频帧的时长调整类型。
JBM帧模式包括有效帧或丢失帧,根据当前音频帧的JBM帧模式和当前音频帧的前一帧音频帧的JBM帧模式确定当前音频帧的时长调整类型,具体为:若当前音频帧和当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定当前音频帧的时长调整类型为丢失帧时长调整类型。若当前音频帧和当前音频帧的前一帧音频帧都为有效帧,则根据当前音频帧的音频编码类型进一步确定当前音频帧的时长调整类型。
在根据当前音频帧的音频编码类型确定当前音频帧的时长调整类型时,首先,根据音频编码类型确定当前音频帧是否为音乐帧,若根据当前音频帧的音频编码类型判断当前音频帧为音乐帧,则确定当前音频帧的时长调整类型为音乐帧时长调整类型。若根据当前音频帧的音频编码类型判断当前音频不是音乐帧,则可以进一步根据当前音频帧的语音激活检测结果判断当前音频帧是否为语音帧。
如果根据语音激活检测结果判断出当前音频帧不为语音帧,则确定当前音频帧的时长调整类型为背景帧时长调整类型,如果根据语音激活检测结果判断出当前音频帧为语音帧,则对语音帧有以下两种处理情况:第一种情况,若当前音频帧为语音帧,则确定当前音频帧的时长调整类型为语音帧时长调整类型。第二种情况,若当前音频帧为语音帧,则进一步根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型;或者,根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型;或者,根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型。根据FEC帧类型和/或音频编码类型得到以下几种音频帧时长调整类型:语音开始帧时长调整类型、清音帧时长调整类型、浊音帧时长调整类型、瞬态帧时长调整类型。如何根据FEC帧类型和/或音频编码类型确定当前音频帧时长调整类型在以下实施例中详细说明。
其中,本发明实施例中当前音频帧的前两帧音频帧的指的是与当前帧紧邻的前一帧音频帧和当前音频帧的前一帧音频帧的前一帧音频帧,例如,当前音频帧是第i帧,则当前音频帧的前两帧音频帧指的是第i-1帧音频帧和第i-2帧音频帧,i是大于等于2的整数,第i-1帧音频帧即为当前音频帧的前一帧音频帧,第i-2帧即为当前音频帧的前一帧音频帧的前一帧音频帧。
步骤103、根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长,并且在确定需要调整当前音频帧对应的时域信号的时长时,根据当前音频帧的时长调整类型对当前音频帧对应的时域信号的时长进行调整。
本实施例中,在确定当前音频帧的时长调整类型后,根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长。音频帧的时长调整类型主要有以下几种:丢失帧时长调整类型、音乐帧时长调整类型、语音帧时长调整、背景帧时长调整类型、语音开始帧时长调整类型、清音帧时长调整类型、浊音帧时长调整类型、瞬态帧时长调整类型。当然,根据不同的音频参数确定出的时长调整类型不同,这里只是举例说明,音频帧的时长调整类型还可以为其他类型。
在上述各音频帧时长调整类型中,对于丢失帧时长调整类型、音乐帧时长调整类型和语音开始帧时长调整类型不需要对当前音频帧对应的时域信号的时长进行调整,其他音频帧时长调整类型均需要对对当前音频帧对应的时域信号的时长进行调整。
在确定需要调整当前音频帧对应的时域信号的时长时,根据当前音频帧的时长调整类型对当前音频帧对应的时域信号的时长进行调整,根据当前音频帧的时长调整类型对当前音频帧对应的时域信号的时长进行调整具体为:根据时长调整类型选择合适的时长调整方法和实际时长调整长度,对当前音频帧对应的时域信号的时长进行调整。举例来说,若当前音频帧的时长调整类型为背景帧时长调整类型,当前音频帧的实际时长调整长度有三种取值,大于0、等于0和小于0,当实际时长调整大于0时,对当前音频帧的时域信号进行拉伸,既调整后的时长大于调整前的时长,当实际时长调整长度小于0时,对当前音频帧的时域信号进行压缩,既调整后的时长小于调整前的时长,当实际时长调整长度等于0时,不对当前音频帧对应的时域信号进行调整。对于其他音频帧时长调整类型对应的调整方式在后续的实施例中将具体说明。
本实施例提供的方法,接收端根据当前音频帧和当前音频帧的前一帧音频帧的JBM帧模式确定当前音频帧的时长调整类型,然后,根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长,并且在确定需要调整当前音频帧对应的时域信号的时长时,根据当前音频帧的时长调整类型对当前音频帧对应的时域信号的时长进行调整。上述方法能够根据音频帧的时长调整类型确定是否对当前音频帧进行时长调整,而且,在对当前音频帧进行时长调整时,能够根据音频帧的时长调整类型进行时长调整,从而使得根据不同音频帧时长调整类型进行时长调整时能够考虑不同音频帧的特性,保证每个音频帧都具有良好的音质,改善了音频信号的质量。
下面采用几个具体的实施例,对图2所示方法实施例的技术方案进行详细说明。
图3为本发明音频信号的时长调整方法实施例二的流程图,如图3所示,本实施例提供的方法包括以下步骤:
步骤201、接收发送端发送的数据包,解析数据包获取当前音频帧和当前音频帧的前一帧音频帧,以及当前音频帧的音频参数和当前音频帧的前一帧音频帧的音频参数。
当接收端接收到发送端发送的数据包后,解析该数据包获取当前音频帧和当前音频帧的前一帧音频帧,以及当前音频帧的音频参数和当前音频帧的前一帧音频帧的音频参数,并解码得到当前音频帧的时域信号。音频参数包括JBM帧模式、音频编码类型、语音激活检测结果和FEC帧类型,其中,音频编码类型和语音激活检测结果也可以由发送端发送给接收端。
步骤202、根据当前音频帧JBM帧模式和当前音频帧的前一帧音频帧的JBM帧模式,判断当前音频帧或当前音频帧的前一帧音频帧是否为丢失帧。
音频帧的JBM帧模式包括有效帧和丢失帧,如果当前音频帧和当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,执行步骤203;如果当前音频帧和当前音频帧的前一帧都为有效帧,执行步骤204。
步骤203、确定当前音频帧的时长调整类型为丢失帧时长调整类型。
在步骤203执行完后,继续执行步骤209。
步骤204、根据当前音频帧的音频编码类型判断当前音频帧是否为音乐帧。
音频编码类型包括音乐编码类型和语音编码类型,首先,根据当前音频帧的音频编码类型判断当前音频帧是否为音乐帧,如果根据当前音频帧的音频编码类型判断当前音频帧为音乐帧,执行步骤205,如果根据当前音频帧的音频编码类型判断当前音频帧不为音乐帧,执行步骤206。
步骤205、确定当前音频帧的时长调整类型为音乐帧时长调整类型。
在步骤205执行完后,继续执行步骤209。
步骤206、根据当前音频帧的语音激活检测结果判断当前音频帧是否为语音帧。
根据当前音频帧的语音激活检测结果判断当前音频帧是否为语音帧,具体为:判断当前音频帧的语音激活检测值是否为1,既判断VAD值是否为1,如果VAD值为1,则确定当前音频帧为语音帧;如果VAD值不为1,则确定当前音频帧为背景帧。
如果根据当前音频帧的语音激活检测结果判断当前音频帧为语音帧,执行步骤207,如果根据当前音频帧的语音激活检测结果判断当前音频帧不为语音帧,执行步骤208。
步骤207、确定当前音频帧的时长调整类型为语音帧时长调整类型。
在步骤207执行完后,继续执行步骤209。
步骤208、确定当前音频帧的时长调整类型为背景帧时长调整类型。
在步骤208执行完后,继续执行步骤209。
步骤209、根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长。
在确定当前音频帧的时长调整类型后,执行步骤209,根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长。如果需要调整当前音频帧对应的时域信号的时长,执行步骤210,如果不需要调整当前音频帧对应的时域信号的时长,执行步骤211。
具体地,如果当前音频帧的时长调整类型为丢失帧时长调整类型或音乐帧时长调整类型,则确定不需要调整当前音频帧对应的时域信号的时长,继续执行步骤211。
如果根据当前音频帧的语音激活检测结果判断当前音频帧的时长调整类型为背景帧时长调整类型,则根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长,具体为:首先,获取对当前音频帧进行时长调整的预期时长调整长度,然后,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度;最后,根据当前音频帧的实际时长调整长度确定是否需要调整当前音频帧对应的时域信号的时长。
预期时长调整长度可以通过分析当前的网络状况、当前音频帧的缓存状态和帧类型等参数获取到。需要说明的是,通过分析当前的网络状况、当前音频帧的缓存状态和帧类型等参数直接获取到并不是预期时长调整长度,而是预期时长因子或者预期调整后的时长。预期时长因子=预期调整后的时长/调整前的时长,这里调整前的时长为当前音频帧的时长,预期时长调整因子的取值有三种情况:大于1、小于1和等于1,当预期时长因子大于1时,预期调整后的时长大于调整前的时长,即实际时长调整长度大于0,对当前音频帧进行了拉伸;当预期时长因子小于1时,预期调整后的时长小于调整前的时长,即实际时长调整长度小于0,对当前音频帧进行了压缩;当预期时长因子等于1时,即实际时长调整长度等于0,不对当前音频帧对应的时域信号进行调整。在获取到预期时长因子后,用当前音频帧的时长乘以预期时长因子得到预期调整后的时长,预期调整后的时长减去当前因频帧的时长就是预期时长调整长度。如果直接获取到预期调整后的时长,则用预期调整后的时长减去当前音频帧的时长就是预期时长调整长度。
实际时长调整长度等于实际调整后的时长减去调整前的时长,需要说明的是,在确定时长调整长度时并没有对当前音频帧进行时长调整,实际时长调整长度为接收端期望的一个值。本实施例中,如果当前音频帧的时长调整类型为背景帧时长调整类型,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度具体为:根据背景帧时长调整类型确定当前音频帧的实际时长调整长度等于预期时长调整长度。根据当前音频帧的实际时长调整长度,确定是否需要调整当前音频帧对应的时域信号的时长具体为:若当前音频帧的实际调整长度等于0,则确定不需要对当前音频帧对应的时域信号的时长进行调整;若当前音频帧的实际调整长度不等于0,则确定需要对当前音频帧对应的时域信号的时长进行调整。
如果根据当前音频帧的语音激活检测结果判断当前音频帧的时长调整类型为语音帧时长调整类型,根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长具体为:首先,获取对当前音频帧进行时长调整的预期时长调整长度,然后,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度;最后,根据当前音频帧的实际时长调整长度确定是否需要调整当前音频帧对应的时域信号的时长。
其中,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度,具体为:提取当前音频帧的基音周期,根据当前音频帧的基音周期和预期时长调整长度确定当前音频帧的实际时长调整长度,根据当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整当前音频帧对应的时域信号的时长,具体为:若当前音频帧的实际时长调整长度为0,则确定不需要对当前音频帧对应的时域信号的时长进行调整;若当前音频帧的实际时长调整长度不为0,则确定需要对当前音频帧对应的时域信号的时长进行调整。
步骤210、根据当前音频帧的时长调整类型对当前音频帧对应的时域信号的时长进行调整。
如果根据当前音频帧的语音激活检测结果判断当前音频帧的时长调整类型为语音帧时长调整类型,则根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整。根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整,具体为:当当前音频帧的实际时长调整长度大于0,根据实际时长调整长度采用多次波形相似叠加(Waveform Similarity OverLapand Add,简称WSOLA)算法对当前音频帧对应的时域信号进行时长调整;当当前音频帧的实际时长调整长度小于0,根据实际时长调整长度采用波形相似叠加WSOLA算法对当前音频帧对应的时域信号进行时长调整。
如果根据当前音频帧的语音激活检测结果判断当前音频帧的时长调整类型为背景帧时长调整类型,则根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整。根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整,具体为:当当前音频帧的实际时长调整长度大于0时,根据实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对当前音频帧对应的时域信号进行时长调整;当当前音频帧的实际时长调整小于0时,根据实际时长调整长度采用去掉样点的时长调整方法对当前音频帧对应的时域信号进行时长调整。
步骤211、确定不需要对当前音频帧对应的时域信号的时长进行调整。
本实施例提供的方法,根据当前音频帧和当前音频帧的前一帧音频帧的JBM帧模式、音频类型、语音激活检测结果确定当前音频帧的时长调整类型,将当前音频帧分为丢失帧时长调整类型、音乐帧时长调整类型、语音帧时长调整类型和背景帧时长调整类型,对丢失帧时长调整类型和音乐帧时长调整类型不需要进行时长调整,对语音帧时长调整类型和背景帧时长调整类型需要进行时长调整,在对语音帧时长调整类型和背景帧时长调整类型进行时长调整时,根据时长调整类型进行调整,根据音频帧时长调整类型选择合适的实际调整长度和调整方法,保证每帧音频都具有良好的音质,改善了音频信号的质量。
图4为本发明音频信号的时长调整方法实施例三的流程图,如图4所示,本实施例与图3所示实施例的区别在于本实施中在根据语音激活检测结果确定出当前音频帧为语音帧时,进一步根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型。本实施例的前提是已经根据语音激活检测结果确定出了当前音频帧为语音帧,具体的确定方法可参照实施例二中的描述,这里不再赘述。本实施例的方法可以包括以下步骤:
步骤301、根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型。
语音帧的FEC帧类型包括:清音帧类型、浊音帧类型和语音开始帧类型,语音帧的音频编码类型包括:清音编码类型、浊音编码类型、一般编码类型、瞬态编码类型等。
根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:当前音频帧或者当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:当前音频帧和当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:当前音频帧的音频编码类型为清音编码类型,当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:当前音频帧的音频编码类型为一般编码类型,当前音频帧的前一帧音频的音频编码类型为浊音编码类型,则确定当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:当前音频帧的音频编码类型为一般编码类型,当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:当前音频帧的音频编码类型为浊音编码类型,当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:当前音频帧的音频编码类型为浊音编码类型,且当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,具体为:
若当前音频帧的FEC帧类型为语音开始帧类型,则确定当前音频帧的时长调整类型为语音开始帧时长调整类型;
若当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定当前音频帧的时长调整类型为清音帧时长调整类型;
若当前音频帧的FEC帧类型为清音帧类型,且当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定当前音频帧的时长调整类型为瞬态帧时长调整类型。
根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:当前音频帧的FEC帧类型为浊音帧类型,当前音频帧的音频编码类型为一般编码类型,且当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:当前音频帧的时长调整类型不为清音帧时长调整类型,且当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:当前音频帧的时长调整类型不为清音帧时长调整类型,且当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。其中,根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定当前音频帧是否为清音帧时长调整类型具体为:判断当前音频帧是否满足条件八,如果满足条件八则确定当前音频帧的时长调整类型为清音帧时长调整类型,如果不满足条件八则确定当前音频帧的时长调整类型不为清音帧时长调整类型。
步骤302、根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长。
若当前音频帧的时长调整类型为语音开始帧时长调整类型,确定不需要对当前音频帧对应的时域信号的时长进行调整。
若当前音频帧的时长调整类型为清音帧时长调整类型或浊音帧时长调整类型,则根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长,具体为:获取对当前音频帧进行时长调整的预期时长调整长度,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度;根据当前音频帧的实际时长调整长度确定是否需要调整当前音频帧对应的时域信号的时长。
根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度,具体为:获取当前音频帧的基音周期,根据当前音频帧的基音周期和预期时长调整长度确定当前音频帧的实际时长调整长度。根据当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整当前音频帧对应的时域信号的时长,包括:若当前音频帧的实际时长调整长度为0,则确定不需要对当前音频帧对应的时域信号的时长进行调整;若当前音频帧的实际时长调整长度不为0,则确定需要对当前音频帧对应的时域信号的时长进行调整。
若当前音频帧的时长调整类型为瞬态帧时长调整类型,则根据当前音频帧的时长调整类型确定是否需要调整当前音频帧对应的时域信号的时长,具体为:获取对当前音频帧进行时长调整的预期时长调整长度,根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度;根据当前音频帧的实际时长调整长度确定是否需要调整当前音频帧对应的时域信号的时长。
根据当前音频帧的时长调整类型和预期时长调整长度确定当前音频帧的实际时长调整长度,具体为:获取当前音频帧的基音周期,根据当前音频帧的长度和基音周期确定中间时长调整长度;确定中间时长调整长度和当前音频帧的预期时长调整长度中的较小值作为当前音频帧的实际时长调整长度。具体地,该中间时长调整长度=基音周期-原始帧长度,这里原始音频帧长度是指当前音频帧没有进行时长调整前的帧长度。
根据当前音频帧的实际时长调整长度,确定是否需要调整当前音频帧对应的时域信号的时长,具体为:若当前音频帧的实际时长调整长度为0,则确定不需要对当前音频帧对应的时域信号的时长进行调整;若当前音频帧的实际时长调整长度不为0,则确定需要对当前音频帧对应的时域信号的时长进行调整;
如果确定需要对当前音频帧对应的时域信号的时长进行调整,则执行步骤303,如果确定不需要对当前音频帧对应的时域信号的时长进行调整,则执行步骤304。
步骤303、根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整。
若当前音频帧的时长调整类型为清音帧时长调整类型,根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整,具体为:根据基音周期和实际时长调整长度,对当前音频帧对应的时域信号进行波形相似性叠加,以调整当前音频帧对应的时域信号的时长。
若当前音频帧的时长调整类型为浊音帧时长调整类型或者瞬态帧时长调整类型,则根据当前音频帧的时长调整类型和实际时长调整长度对当前音频帧对应的时域信号的时长进行调整,具体为:如果当前音频帧的实际时长调整长度大于0,则根据基音周期和实际时长调整长度对当前音频帧对应的时域信号进行多次波形相似性叠加,以调整当前音频帧对应的时域信号的时长;如果当前音频帧的实际时长调整长度小于0,则根据基音周期和实际时长调整长度对当前音频帧对应的时域信号进行波形相似性叠加,以调整当前音频帧对应的时域信号的时长。
步骤304、确定不需要对当前音频帧对应的时域信号进行调整。
本实施例提供的方法,在实施例二的基础上,根据FEC帧类型和音频编码类型进一步的确定语音帧的时长调整类型,并根据时长调整类型选择匹配的WSOLA算法进行时长调整。
图5为本发明实施例提供的一种音频信号的时长调整装置的结构示意图,如图5所示,本实施例的提供的音频信号的时长调整装置包括:获取模块41、时长调整类型确定模块42、判断模块43、时长调整模块44。
其中,获取模块41,用于获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;
时长调整类型确定模块42,用于根据所述获取模块41获取的所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
判断模块43,用于根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长;
时长调整模块44,用于在所述判断模块43确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
获取模块41具体用于:接收所述发送端发送的数据包,解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
本实施例提供的音频信号的时长调整装置可用于执行方法实施例一提供的技术方案,具体实现方式和技术效果类似,这里不再赘述。
图6为本发明实施例提供的另一种音频信号的时长调整装置的结构示意图,如图6所示,本实施例的提供的音频信号的时长调整装置包括:获取模块51、时长调整类型确定模块52、判断模块53、时长调整模块54。
其中,获取模块51,用于获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;
时长调整类型确定模块52,用于根据所述获取模块51获取的所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
判断模块53,用于根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长;
时长调整模块54,用于在所述判断模块53确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
其中,所述JBM帧模式包括有效帧或丢失帧;所述时长调整类型确定模块52具体用于:若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型。当所述所述当前音频帧的时长调整类型为丢失帧时长调整类型时,判断模块53具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,则时长调整类型确定模块52根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧。若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型。当所述当前音频帧的时长调整类型为音乐帧时长调整类型是,所述判断模块53具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
若根据所述当前音频帧的音频编码类型判断当前音频帧不为音乐帧,则时长调整类型确定模块52还用于:根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型。
当所述当前音频帧的时长调整类型为语音帧时长调整类型时,所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。所述时长调整模块54具体用于:在所述判断模块53确定所述需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
本实施例中,判断模块53在根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,具体用于:提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。判断模块53在根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长时,具体用于:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54在根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长时,具体用于:如果所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;如果所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
在当前音频帧的时长调整类型为背景帧时长调整类型时,所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。所述时长调整模块54具体用于:在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
所述判断模块53在根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,具体用于:根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度,若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54在根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整时,具体用于:如果所述当前音频帧的实际时长调整长度大于0,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整。如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
本实施例提供的音频信号的时长调整装置,可用于执行方法实施例二提供的技术方案,具体实现方式和技术效果类似,这里不再赘述。
图6所示的音频信号的时长调整装置,在根据语音激活检测结果确定出当前音频帧为语音帧时,确定当前音频帧的时长调整类型为语音帧时长调整类型。参照图6所示的音频信号的时长调整装置,在本实施例中,音频信号的时长调整装置在根据语音激活检测结果确定出当前音频帧为语音帧时,进一步根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型。本实施例的前提是已经根据语音激活检测结果确定出了当前音频帧为语音帧,具体的确定方法可参照装置实施例二中的描述,这里不再赘述。
本实施例中,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则时长调整类型确定模块52根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧。
若所述当前音频帧为语音帧,则时长调整类型确定模块52根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
若所述当前音频帧为语音帧,则时长调整类型确定模块52根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
若所述当前音频帧为语音帧,则时长调整类型确定模块52根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
其中,当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
若所述当前音频帧不为语音帧,则所述时长调整类型确定模块52确定所述当前音频帧的时长调整类型为背景帧时长调整类型。
如果当前音频帧的时长调整类型为背景帧时长调整类型,所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
当所述判断模块53根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,判断模块53具体用于:根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在时长调整模块54根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:如果所述当前音频帧的实际时长调整长度大于0,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
若所述时长调整类型确定模块52确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则所述判断模块53具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
若所述时长调整类型确定模块52确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
在判断模块53根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,判断模块53具体用于:获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。在判断模块53根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长时,判断模块53具体用于:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在时长调整模块54根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
若所述时长调整类型确定模块52确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
在判断模块53根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,所述判断模块53具体用于:获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。在判断模块53根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长时,所述判断模块53具体用于:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在时长调整模块54根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:如果所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;如果所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
若所述时长调整类型确定模块52确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型时,则所述判断模块53具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
在判断模块53根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度时,所述判断模块53具体用于:获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;然后,确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度。在判断模块53根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长时,所述判断模块53具体用于:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在所述判断模块53确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述时长调整模块54具体用于:根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
本实施例提供的音频信号的时长调整装置,可用于执行方法实施例三的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本发明实施例还提供了一种音频信号的时长调整装置600,图7为本发明实施例提供的又一种音频信号的时长调整装置的结构示意图,如图7所示,该音频信号的时长调整装置600包括:总线640,以及连接到总线640的处理器610、存储器620和接口630,其中,该存储器620用于存储指令,该处理器610执行该指令具体用于执行以下操作:
获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;
根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,并且在确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
其中,所述JBM帧模式包括有效帧或丢失帧;处理器610所述根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,具体为:若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型。处理器610根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
处理器610还用于:若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,则根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧。若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型。处理器610所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
处理器610还用于:若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧。
处理器610根据当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧有两种情况:一种情况,若所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型;另一种情况,若所述当前音频帧不为语音帧,则根据音频编码类型和/或FEC帧类型确定当前音频帧的时长调整类型。
如果当前音频帧的时长调整类型为语音帧时长调整类型,处理器610所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
处理器610根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,具体为:提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,处理器610所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,具体为:如果所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;如果所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
处理器610还用于:若所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型。如果当前音频帧的时长调整类型为背景帧时长调整类型,处理器610所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
其中,处理器610根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,具体为:根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度。处理器610所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,处理器610所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,具体为:当所述当前音频帧的实际时长调整长度大于0时,根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;当所述当前音频帧的实际时长调整小于0时,根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
本实施中在处理器610根据语音激活检测结果确定出当前音频帧为语音帧时,进一步根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,或者,根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型。
处理器610根据当前音频帧的音频编码类型和当前音频帧的前两帧音频帧的音频编码类型确定当前音频帧的时长调整类型具体为:
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧为语音帧,且所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
处理器610根据当前音频帧和当前音频帧的前一帧音频帧的FEC帧类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
处理器610根据当前音频帧和当前音频帧的前两帧音频帧的音频编码类型和FEC帧类型确定当前音频帧的时长调整类型,具体为:
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
其中,所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
根据上述判断结果,若确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则处理器610所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
若确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则处理器610所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
处理器610所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,具体为:获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。处理器610所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,具体为:根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
若确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则处理器610根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
处理器所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,具体为:获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度。处理器所述根据所述当前音频帧的实际时长调整长度,确定是否需要对所述当前音频帧对应的时域信号的时长进行调整,具体为:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,具体为:当所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;当所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
若确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型,则处理器610根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;然后,根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长。在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
处理器610根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,具体为:获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;然后,确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度。处理器610根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,具体为:若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整。
处理器610根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,具体为:根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
本实施例中,获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式,具体为:接口630接收所述发送端发送的数据包,然后,处理器610解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
本实施例提供的音频信号的时长调整装置,可用于执行方法实施例一至三的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (42)
1.一种音频信号的时长调整方法,其特征在于,包括:
获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;其中,JBM帧模式包括有效帧或丢失帧;
根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,并且在确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,包括:
若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型,包括:
若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧;
若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
4.根据权利要求3所述的方法,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
5.根据权利要求4所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
6.根据权利要求4所述的方法,其特征在于,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
7.根据权利要求6所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0时,根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整小于0时,根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
8.根据权利要求3所述的方法,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
9.根据权利要求3所述的方法,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
10.根据权利要求3所述的方法,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,所述方法进一步包括:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
11.根据权利要求10所述的方法,其特征在于,所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
12.根据权利要求8-11中任一项所述的方法,其特征在于,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
13.根据权利要求12所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0时,根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
当所述当前音频帧的实际时长调整小于0时,根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
14.根据权利要求9所述的方法,其特征在于,若确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
15.根据权利要求8-11中任一项所述的方法,其特征在于,若确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则所述根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
16.根据权利要求15所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的时长调整类型和实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
17.根据权利要求8-11中任一项所述的方法,其特征在于,若确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
18.根据权利要求17所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要对所述当前音频帧对应的时域信号的时长进行调整,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整,包括:
当所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;
当所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
19.根据权利要求8-11中任一项所述的方法,其特征在于,若确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型,则根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
20.根据权利要求19所述的方法,其特征在于,所述根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度,包括:
获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;
确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度;
所述根据所述当前音频帧的实际时长调整长度,确定是否需要调整所述当前音频帧对应的时域信号的时长,包括:
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
在确定需要对所述当前音频帧对应的时域信号的时长进行调整时,所述对所述当前音频帧对应的时域信号的时长进行调整,包括:
根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
21.根据权利要求1所述的方法,其特征在于,所述获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式,包括:
接收所述发送端发送的数据包,解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
22.一种音频信号的时长调整装置,其特征在于,包括:
获取模块,用于获取发送端发送的当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的抖动缓存处理JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式;其中,JBM帧模式包括有效帧或丢失帧;
时长调整类型确定模块,用于根据所述获取模块获取的所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式确定所述当前音频帧的时长调整类型;
判断模块,用于根据所述当前音频帧的时长调整类型确定是否需要调整所述当前音频帧对应的时域信号的时长;
时长调整模块,用于在所述判断模块确定需要调整所述当前音频帧对应的时域信号的时长时,根据所述当前音频帧的时长调整类型对所述当前音频帧对应的时域信号的时长进行调整。
23.根据权利要求22所述的装置,其特征在于,所述时长调整类型确定模块具体用于:
若所述当前音频帧和所述当前音频帧的前一帧音频帧中的至少一帧音频帧为丢失帧,则确定所述当前音频帧的时长调整类型为丢失帧时长调整类型;
所述判断模块具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
24.根据权利要求22所述的装置,其特征在于,所述时长调整类型确定模块具体用于:
若所述当前音频帧和所述当前音频帧的前一帧音频帧都为有效帧,根据所述当前音频帧的音频编码类型判断所述当前音频帧是否为音乐帧;
若所述当前音频帧为音乐帧,则确定所述当前音频帧的时长调整类型为音乐帧时长调整类型;
所述判断模块具体用于:确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
25.根据权利要求24所述的装置,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧为语音帧,则确定所述当前音频帧的时长调整类型为语音帧时长调整类型;
所述判断模块具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定所述需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
26.根据权利要求25所述的装置,其特征在于,所述判断模块具体用于:
提取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0,根据所述实际时长调整长度采用多次波形相似叠加WSOLA算法对所述当前音频帧对应的时域信号进行时长调整;
如果所述当前音频帧的实际时长调整长度小于0,根据所述实际时长调整长度采用波形相似叠加算法对所述当前音频帧对应的时域信号进行时长调整。
27.根据权利要求24所述的装置,其特征在于,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则所述时长调整类型确定模块还用于:确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述判断模块具体用于:获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
28.根据权利要求27所述的装置,其特征在于,所述判断模块具体用于:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
29.根据权利要求24所述的装置,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件一,所述条件一包括:所述当前音频帧或者所述当前音频帧的前一帧音频帧中的至少一个音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件二,所述条件二包括:所述当前音频帧和所述当前音频帧的前一帧音频帧的音频编码类型均为清音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件三,所述条件三包括:所述当前音频帧的音频编码类型为清音编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件四,所述条件四包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型为浊音编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件五,所述条件五包括:所述当前音频帧的音频编码类型为一般编码类型,所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件六,所述条件六包括:所述当前音频帧的音频编码类型为浊音编码类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件七,所述条件七包括:所述当前音频帧的音频编码类型为浊音编码类型,且所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件一至七中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
30.根据权利要求24所述的装置,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为语音开始帧类型,则确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型均为清音帧类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且所述当前音频帧的FEC帧类型为清音帧类型,且所述当前音频帧的前一帧音频帧的FEC帧类型浊音帧类型,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型。
31.根据权利要求24所述的装置,其特征在于,若根据所述当前音频帧的音频编码类型判断所述当前音频帧不为音乐帧,则所述时长调整类型确定模块还用于:
根据所述当前音频帧的语音激活检测结果判断所述当前音频帧是否为语音帧;
若所述当前音频帧为语音帧,且满足条件八,所述条件八包括:所述当前音频帧的FEC帧类型为浊音帧类型,所述当前音频帧的音频编码类型为一般编码类型,且所述当前音频帧的前一帧音频帧的音频编码类型不为浊音编码类型,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件九,所述条件九包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型为瞬态编码类型时,则确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型;
若所述当前音频帧为语音帧,且满足条件十,所述条件十包括:所述当前音频帧的时长调整类型不为清音帧时长调整类型,所述当前音频帧的前一帧音频帧的前一帧音频帧的音频编码类型不为瞬态编码类型,则确定所述当前音频帧的时长调整类型为浊音帧时长调整类型;
若所述当前音频帧为语音帧,且不满足所述条件八至十中的任意一个条件,则确定所述当前音频帧的时长调整类型为清音帧时长调整类型。
32.根据权利要求31所述的装置,其特征在于,所述当前音频帧的时长调整类型是否为清音帧时长调整类型是根据所述当前音频帧和所述当前音频帧的前一帧音频帧的FEC帧类型和音频编码类型确定的。
33.根据权利要求29-32中任一项所述的装置,其特征在于,若根据所述当前音频帧的语音激活检测结果判断所述当前音频帧不为语音帧,则所述时长调整类型确定模块还用于:
确定所述当前音频帧的时长调整类型为背景帧时长调整类型;
所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
34.根据权利要求33所述的装置,其特征在于,所述判断模块具体用于:
根据所述背景帧时长调整类型确定所述当前音频帧的实际时长调整长度等于预期时长调整长度;
若所述当前音频帧的实际调整长度等于0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际调整长度不等于0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0时,则根据所述实际时长调整长度采用零值填充时长调整方法或者噪声填充时长调整方法,对所述当前音频帧对应的时域信号进行时长调整;
如果所述当前音频帧的实际时长调整小于0,则根据所述实际时长调整长度采用去掉样点的时长调整方法对所述当前音频帧对应的时域信号进行时长调整。
35.根据权利要求30所述的装置,其特征在于,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为语音开始帧时长调整类型,则所述判断模块具体用于:
确定不需要对所述当前音频帧对应的时域信号的时长进行调整。
36.根据权利要求29-32中任一项所述的装置,其特征在于,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为清音帧时长调整类型,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
37.根据权利要求36所述的装置,其特征在于,所述判断模块具体用于:
获取所述当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
38.根据权利要求29-32中任一项所述的装置,其特征在于,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为浊音帧时长调整类型,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
39.根据权利要求38所述的装置,其特征在于,所述判断模块具体用于:
获取当前音频帧的基音周期,根据所述当前音频帧的基音周期和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,如果所述当前音频帧的实际时长调整长度大于0,则根据所述基音周期和所述实际时长调整长度对所述当前音频帧对应的时域信号进行多次波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长;
如果所述当前音频帧的实际时长调整长度小于0,则根据所述基音周期和实际时长调整长度对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
40.根据权利要求29-32中任一项所述的装置,其特征在于,若所述时长调整类型确定模块确定所述当前音频帧的时长调整类型为瞬态帧时长调整类型时,则所述判断模块具体用于:
获取对所述当前音频帧进行时长调整的预期时长调整长度,根据所述当前音频帧的时长调整类型和预期时长调整长度确定所述当前音频帧的实际时长调整长度;
根据所述当前音频帧的实际时长调整长度确定是否需要调整所述当前音频帧对应的时域信号的时长;
所述时长调整模块具体用于:在所述判断模块确定需要对所述当前音频帧对应的时域信号的时长进行调整时,根据所述当前音频帧的时长调整类型和实际时长调整长度对所述当前音频帧对应的时域信号的时长进行调整。
41.根据权利要求40所述的装置,其特征在于,所述判断模块具体用于:
获取当前音频帧的基音周期,根据所述当前音频帧的长度和基音周期确定中间时长调整长度;
确定所述中间时长调整长度和所述当前音频帧的预期时长调整长度中的较小值作为所述当前音频帧的实际时长调整长度;
若所述当前音频帧的实际时长调整长度为0,则确定不需要对所述当前音频帧对应的时域信号的时长进行调整;
若所述当前音频帧的实际时长调整长度不为0,则确定需要对所述当前音频帧对应的时域信号的时长进行调整;
所述时长调整模块具体用于:根据所述实际时长调整长度和所述基音周期,对所述当前音频帧对应的时域信号进行波形相似性叠加,以调整所述当前音频帧对应的时域信号的时长。
42.根据权利要求22所述的装置,其特征在于,所述获取模块具体用于:
接收所述发送端发送的数据包,解析所述数据包获取所述当前音频帧和所述当前音频帧的前一帧音频帧,以及所述当前音频帧的JBM帧模式和所述当前音频帧的前一帧音频帧的JBM帧模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410099360.1A CN104934040B (zh) | 2014-03-17 | 2014-03-17 | 音频信号的时长调整方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410099360.1A CN104934040B (zh) | 2014-03-17 | 2014-03-17 | 音频信号的时长调整方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104934040A CN104934040A (zh) | 2015-09-23 |
CN104934040B true CN104934040B (zh) | 2018-11-20 |
Family
ID=54121181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410099360.1A Active CN104934040B (zh) | 2014-03-17 | 2014-03-17 | 音频信号的时长调整方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104934040B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107068160B (zh) * | 2017-03-28 | 2020-04-28 | 大连理工大学 | 一种语音时长规整系统及方法 |
CN110751942B (zh) * | 2018-07-20 | 2024-10-18 | 京东科技控股股份有限公司 | 一种识别特征声音的方法和装置 |
CN109448752B (zh) * | 2018-11-28 | 2021-01-01 | 广州市百果园信息技术有限公司 | 音频数据的处理方法、装置、设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7319703B2 (en) * | 2001-09-04 | 2008-01-15 | Nokia Corporation | Method and apparatus for reducing synchronization delay in packet-based voice terminals by resynchronizing during talk spurts |
US7426221B1 (en) * | 2003-02-04 | 2008-09-16 | Cisco Technology, Inc. | Pitch invariant synchronization of audio playout rates |
CN100417129C (zh) * | 2004-04-02 | 2008-09-03 | 华为技术有限公司 | 语音传输过程中动态调整抖动缓存的实现方法 |
US20060187970A1 (en) * | 2005-02-22 | 2006-08-24 | Minkyu Lee | Method and apparatus for handling network jitter in a Voice-over IP communications network using a virtual jitter buffer and time scale modification |
CN101304557B (zh) * | 2008-04-25 | 2012-09-05 | 华为技术有限公司 | 一种分组传输控制方法及装置 |
CN101335796B (zh) * | 2008-07-25 | 2011-01-19 | 华为技术有限公司 | 解码调度方法和装置 |
CN101924683B (zh) * | 2009-06-09 | 2013-04-24 | 华为技术有限公司 | 一种动态调整抖动缓存的方法、装置和电子设备 |
CN101894558A (zh) * | 2010-08-04 | 2010-11-24 | 华为技术有限公司 | 丢帧恢复方法、设备以及语音增强方法、设备和系统 |
CN103404053A (zh) * | 2011-08-24 | 2013-11-20 | 华为技术有限公司 | 音频或语音信号处理器 |
CN103259803B (zh) * | 2013-06-04 | 2016-01-27 | 腾讯科技(深圳)有限公司 | 一种音频回放方法、装置和系统 |
-
2014
- 2014-03-17 CN CN201410099360.1A patent/CN104934040B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104934040A (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4673411B2 (ja) | 移動通信ネットワークにおける方法および装置 | |
KR101513184B1 (ko) | 계층적 디코딩 구조에서의 디지털 오디오 신호의 송신 에러에 대한 은닉 | |
US7778824B2 (en) | Device and method for frame lost concealment | |
JP5232151B2 (ja) | パケットベースのエコー除去および抑制 | |
WO2009059497A1 (fr) | Procédé et dispositif d'obtention d'un facteur d'atténuation | |
US8996389B2 (en) | Artifact reduction in time compression | |
KR101868767B1 (ko) | 디코딩 방법 및 디코딩 디바이스 | |
JP2019511738A (ja) | ハイブリッドコンシールメント方法:オーディオコーデックにおける周波数および時間ドメインパケットロスの組み合わせ | |
CN104934040B (zh) | 音频信号的时长调整方法和装置 | |
WO2021227749A1 (zh) | 一种语音处理方法、装置、电子设备及计算机可读存储介质 | |
CN103714820B (zh) | 参数域的丢包隐藏方法及装置 | |
CN109155134A (zh) | 使用正确解码的音频帧的解码表示的特性的错误隐藏单元、音频解码器和相关方法以及计算机程序 | |
KR20160124877A (ko) | 음성 주파수 코드 스트림 디코딩 방법 및 디바이스 | |
CN114267372A (zh) | 语音降噪方法、系统、电子设备和存储介质 | |
US7991612B2 (en) | Low complexity no delay reconstruction of missing packets for LPC decoder | |
CN101221765B (zh) | 一种基于语音前向包络预测的差错隐藏方法 | |
Stimberg et al. | WaveNetEQ—Packet loss concealment with WaveRNN | |
US20070201656A1 (en) | Time-scaling an audio signal | |
WO2015100999A1 (zh) | 语音频码流的解码方法及装置 | |
CN112398912B (zh) | 一种语音信号加速方法、装置、计算机设备及存储介质 | |
Strods et al. | Enhancing Gappy Speech Audio Signals with Generative Adversarial Networks | |
Florencio et al. | Enhanced adaptive playout scheduling and loss concealment techniques for voice over ip networks | |
Ou et al. | Concealing audio packet loss using frequency-consistent generative adversarial networks | |
Vicente-Peña et al. | Band-pass filtering of the time sequences of spectral parameters for robust wireless speech recognition | |
Rodbro et al. | Time-scaling of sinusoids for intelligent jitter buffer in packet based telephony |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |