1994_An Algorithm To Reconstruct Wideband Speech From Narrowband Speech Based On Codebook Mapping
论文地址:基于码本映射的窄带语音宽带重建算法
博客作者:凌逆战
博客地址:https://www.cnblogs.com/LXP-Never/p/12144324.html
摘要
本文提出了一种从窄带语音中重构宽带语音的新算法,该算法有两个新的特点。第一是基于码本映射的频谱包络重构。第二是利用重构的频谱包络进行语音信号重构。由于该算法无需使用任何附加的发送信息就能生成高质量的语音(盲源),所以它适用于任何网络,如现有的电话网络、支持模拟和ISDN服务的网络等。该算法应用于20个说话人。通过acoustic distance measure(声学距离测量)和listening tests confirms(听力测试验证)了算法的良好性能。
引言
近年来,高质量的声音已经通过CD(小型光盘)和LDs(激光光盘)变得熟悉起来,这就提高了现有服务的音质的需求。例如,一些调幅电台已经开始用立体声代替单声道广播。这些趋势表明,改进的质量是传统系统或现有服务中最重要的要求之一。在电话服务方面,一个要求是提供宽带语音而不是窄带语音。因为宽带语音是清晰的,并且精确地保留了说话人的身份,所以用户可以通过电话线更真实地交流[1][2]。
本文提出了一种从电话语音中产生宽带语音的方法。因为模拟电话的带宽限制在300Hz~3.4kHz之间。该算法产生一个附加的低频信号(50hz-300Hz)和一个高频信号(3.4kHz-7.3kHz)。这generation基于两个假设,一是窄带语音与低频带和高频带信号密切相关;二是即使低频带和高频带信号不完全正确,也能显著提高感知语音质量。该算法的一个优点是可以在不增加任何额外信息的情况下生成宽带语音。这使得它适用于任何网络,如现有的电话网、支持模拟和ISDN的网络等。此外,在传输带宽受限的情况下,如在移动通信中,它也是有效的。
2 重建算法
该算法分为两个步骤,
- 步骤一:高频带和低频带的频谱包络重建。利用宽带语音集及其窄带版本生成映射函数,映射功能将窄带频谱的矢量映射到宽带频谱的矢量空间[3]的码书实现的。
- 步骤二:合成低频带和高频带信号。低频带信号采用线性预测编码(LPC)来合成。在高频带信号合成方面,我们考虑了LPC合成和波形叠加两种方法,最后将高频带和低频带信号叠加到电话语音中得到宽带语音。
下面解释这两个过程的细节
2.1 频谱包络产生
要从窄带频谱包络中产生宽带频谱包络,需要一对码本。其中一个码本包含宽带频谱包络,另一个码本包含对应的窄带频谱包络。宽带频谱包络码本的码向量与窄带频谱包络的码向量具有一对一的对应关系。码本的制作步骤如下,下面步骤中的序号对应于图1中的数字。
- 宽带语音通过带通滤波器生成窄带语音
- 提取宽带和窄带语音频谱包络
- 使用LBG算法生成宽带码本[4]
- 使用宽带码本对宽带语音中的语音进行矢量量化
- 利用时间关系,将窄带语音的频谱包络进行聚类
- 平均每个窄带群集中的频谱包络,然后将其存储为窄带码本的码向量(当通过波形叠加产生高频信号时,需要其它码本)
- 选择具有最接近每个码矢量频谱包络的宽带波形,通过高通滤波器和带通滤波器后,将其存储为代表波形
图1 码本生成算法框图
2.2 从窄带语音生成宽带语音
图2是生成过程的框图,步骤如下
- 用LPC分析输入窄带语音并提取基音、功率和频谱包络
- 使用窄带码本对每个频谱包络进行矢量量化,并使用宽带码本对向量进行解码
- 产生低频信号。细节将在后面介绍
- 产生高频信号。细节将在后面介绍
- 对输入的窄带语音进行上采样
- 在(5)的输出中加入低频带和高频带信号,产生宽带语音
图2 生成过程框图
下面解释低频带和高频带信号的产生。利用LPC合成技术合成了低频信号。为了合成高频信号,提出了两种方法,一种是使用LPC合成法(方法1),另一种是使用波形形成法(方法2),图3、4和5分别是低频信号生成、高频信号生成的框图(方法1和方法2)。
低频段产生
- 利用所分析的基音、功率和由宽带码本解码的频谱包络,通过LPC进行宽带语音合成。
- (1)的输出通过低通滤波器提取低频带信号(在这种情况下,我们使用STFT分析/合成[5]作为低通滤波器)
- 将(2)的输出乘以一个常数,因为(2)的power(功率)insufficient(缺乏)宽带语音。这就产生了低频带信号
低频段语音生成
高频带生成(方法1)
- 利用宽带码本解码后的基音、功率和频谱包络,用LPC合成宽带信号
- 通过高通滤波器(1)提取高频信号(在这种情况下,我们使用STFT分析/合成作为高通滤波器)
- 将(2)的输出乘以余弦函数,以减小由LPC合成引起的脉冲,并使功率正常化。这就产生了高频信号
高频带信号生成(方法一)
高频带生成(方法2)
- 参考码矢量索引,得到两个waveform(波形):一个来自窄带代表码本,另一个来自高频代表码本。
- 检查波形是否为浊音(voiced)或清音(unvoiced)
- 如果是浊音,则通过基音同步重叠加法来合成窄带语音。如果没有浊音,则通过逐帧重叠加法合成窄带语音
- 计算(3)的输出与输入语音之间的功率比
- 用与(3)相同的方法合成高频信号
- 将(5)的输出乘以功率比,得到高频信号。
高频带信号生成(方法二)
3 性能评估
频谱失真和听觉测试评估了该算法的性能。 实验条件如表1所示
“说话人相关”表示模型的训练数据和测试数来自同一个人,“说话人独立”表示不同的说话人。
3.1 频谱失真评估
通过使用宽带码本和窄带码本来测量频谱失真,我们使用了10位男性说话人和10位女性说话人。
VQ失真计算如下
(1)从宽带语音中提取频谱包络
(2)使用宽带码本进行矢量量化(1)
(3)分别计算低频和高频信号(1)和(2)之间的平方误差。误差定义如下
$$D=\sum_{t=0}^{T^{\prime}}\left[\frac{1}{2 \pi} \int_{a}^{b}\left[10 \log _{10} \frac{\hat{Y}_{t}(\omega)}{Y_{t}(\omega)}\right]^{2} d \omega\right]^{\frac{1}{2}}$$
重建失真计算方式如下
(4)通过滤波(1)中使用的语音获得窄带语音,并提取窄带频谱包络
(5)利用窄带码本和宽带码本重构(4)输出相对应的宽带频谱包络
(6)分别计算低频和高频信号(4)和(5)之间的平方误差。误差定义见(3)
实验结果如图6和图7所示。每个失真值是所有说话人对的平均值。从结果来看,该算法可以像矢量量化一样精确地重建低频谱,并且重建失真随着码本尺寸的增大而减小(8bit码本会导致3.5dB的频谱失真),在高带宽重建方面,使用4bit码本,重建失真的降低在6.5dB处饱和。这表明,高频信号和窄带语音的相关系数没有低频信号和窄带语音的相关系数高。
表1:测试条件
训练数据数目:186个单词平衡了所有音素
分析窗函数:hamming
窗函数长度:21毫秒
帧移长度:3毫秒
LPC阶数:12
FFT点的数量:512
失真度量:LPC倒谱的欧氏距离
图6:频谱失真(低频段)
图7:频谱失真(高频段)
3.2 听力测试评估
进行配对比较听力测试。基于以上结果,分别用8bit和4bit码本对低频和高频信号进行了宽带语音生成。两名男发言人和两名女发言人以独立于发言者的方式受雇。随机从三个语音集中选择两个语音集:电话语音、使用方法1生成的语音和使用方法2生成的语音2。六位听众被要求选择一个比另一个更宽的语音。使用了77对。
实验结果如图8所示。结果表明,该算法能有效地从电话语音中重建宽带语音。就产生高频的最佳方法而言,它们之间没有显著差异
图8:偏好得分
4 总结
提出了一种利用码本映射生成窄带语音宽带语音的算法,并从频谱失真的角度验证了算法的性能,在说话人相关和独立重构之间没有性能差异。听力测试证实,生成的宽带语音质量优于原始电话语音。我们计划改进高频信号的产生过程,以提高与窄带信号的相关性
致谢
我们感谢语音处理部门的成员进行了有价值的讨论。我们也感谢语音和声学实验室主任北崎骏博士和语音处理小组组长杉村博士对这项工作的持续支持。
参考文献
[1] Y. Cheng, D. O'Shaughnessy, P. Mermelstein, "Statistical Re covery of Wideband Speech From Narrowband Speech, "Proceedings of ICSLP92, pp. 1577-1480,19922
[2] N. Jayant,"High-Quality Coding of Telephone ech and wideband Audio, Advances in Speech Sign cessing, pp85-108,1992
[3] M. Abe, S. Nakamura, K. Shikano, H. Kuwabara, "Voice conversion through vector quantization, "ICASSP,88, pp. 655-658,1988
[4] Y. Linde, A. Buzo, and R. M. Gray, " An algorithm for vector quantizer design, "IEEE Trans. Commun COM-28, 1, pp 8495(Jan.19805
[5] Lawrence R. Rabiner, Ronald W. Schafer "Digital Processing of Speech Signals”,
1994_An Algorithm To Reconstruct Wideband Speech From Narrowband Speech Based On Codebook Mapping的更多相关文章
- 论文翻译:2015_DNN-Based Speech Bandwidth Expansion and Its Application to Adding High-Frequency Missing Features for Automatic Speech Recognition of Narrowband Speech
论文地址:基于DNN的语音带宽扩展及其在窄带语音自动识别中加入高频缺失特征的应用 论文代码:github 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never ...
- Wideband Direction of Arrival Estimation Based on Multiple Virtual Extension Arrays
基于多重虚拟扩展阵列的宽带信号DOA估计[1]. 宽带DOA估计是阵列信号处理领域的一个重要研究方向.在DOAs估计的实际应用中,信号总是会被噪声破坏,在某些情况下,源信号的数量大于传感器的数量,因此 ...
- 利用Google Speech API实现Speech To Text
很久很久以前, 网上流传着一个免费的,识别率暴高的,稳定的 Speech To Text API, 那就是Google Speech API. 但是最近再使用的时候,总是返回500 Error. 后来 ...
- 2000_narrowband to wideband conversion of speech using GMM based transformation
论文地址:基于GMM的语音窄带到宽带转换 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12151027.html 摘要 在不改变现有通信网络的情 ...
- A Deep Neural Network Approach To Speech Bandwidth Expansion
题名:一种用于语音带宽扩展的深度神经网络方法 作者:Kehuang Li:Chin-Hui Lee 2015年出来的 摘要 本文提出了一种基于深度神经网络(DNN)的语音带宽扩展(BWE)方法.利用对 ...
- 论文翻译:2018_Artificial Bandwidth Extension with Memory Inclusion using Semi-supervised Stacked Auto-encoders
论文地址:使用半监督堆栈式自动编码器实现包含记忆的人工带宽扩展 作者:Pramod Bachhav, Massimiliano Todisco and Nicholas Evans 博客作者:凌逆战 ...
- Time-Frequency Networks For Audio Super-Resolution
论文题目:2018_用于音频超分辨率的时频网络 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12345950.html 摘要 音频超分辨率(即带 ...
- 2000_wideband extension of telephone speech using a hidden Markov model
论文地址:基于隐马尔科夫模型的电话语音频带扩展 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12151866.html 摘要 本文提出了一种从l ...
- 论文翻译:2021_A Perceptually Motivated Approach for Low-complexity, Real-time Enhancement of Fullband Speech
论文地址:一种低复杂度实时增强全频带语音的感知激励方法 论文代码 引用格式:A Perceptually Motivated Approach for Low-complexity, Real-tim ...
随机推荐
- Scrapy深度和优先级
一.深度 配置文件 settings.py DEPTH_LIMIT = 5 二.优先级 配置文件 DEPTH_PRIORITY=1 优先级为正数时,随着深度越大,优先级越低 源码中,优先级 reque ...
- SEVERE: Unable to process Jar entry [avassist xxxx.class]
<bean id="sqlSessionTemplate2" class="org.mybatis.spring.SqlSessionTemplate" ...
- 团队项目-Beta冲刺1(七个小矮人)
团队项目-Beta冲刺1(七个小矮人) 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScien ...
- python3读取excel文档数据
实现场景: 1.读取Excel表数据 2.把数据作为参数传给后面的函数 3.后面的函数循环读取参数执行操作 本案例Excel内容为下图,becks为表名 先贴代码 import xlrd #读取exc ...
- 基于Flask框架搭建视频网站的学习日志(一)
------------恢复内容开始------------ 基于Flask框架搭建视频网站的学习日志(一)2020/02/01 一.Flask环境搭建 创建虚拟环境 初次搭建虚拟环境 搭建完虚拟环境 ...
- PlayCanvas PBR材质shader代码分析(pixel shader)
#version es #define varying in out highp vec4 pc_fragColor; #define gl_FragColor pc_fragColor #defin ...
- DRF框架之使用Django框架完成后端接口(API)的定义
学习DRF框架,首先我们就需要明白为什么要学习这个框架. 接下来我们就先用原生的Django框架来定义一个符合RESTful设计方法的接口(API). RESTful接口的需求如下: GET /boo ...
- JDK源码之Integer类分析
一 简介 Integer是int基本类型的包装类,同样继承了Number类,实现了Comparable接口,String类中的一些转化方法就使用了Integer类中的一些API,且fianl修饰不可继 ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- 解决python报错:ImportError: No module named shutil_get_terminal_size 的方法
我的环境:Ubuntu 16.04.5 LTS 修改这个文件: $HOME/.local/lib/python2.7/site-packages/IPython/utils/terminal.py 这 ...