STRAIGHT声码器详解

转载请注明出处。

STRAIGHT自适应加权谱内插的语音转换与重构

STRAIGHT( Speech Transformation and Representation using Adaptive Interpolation of weighted spectrum)算法(Kawahara,1998),是一种语音信号分析、合成、修改的算法,是一种基于源滤波模型的声码器 (VOCODER)。

STRAIGHT 特点:将语音信号解析成时频域相互独立的频谱参数和基频参数,自适应加权谱内插能够精确提取出与基频不相干的谱信息

能够对语音信号基频、时长、增益、语速等参数进行灵活调整。该模型在分析阶段仅针对语音基音频率、平滑功率谱和非周期成分 3 个模型参数进行提取分析,在合成阶段利用上述 3 个模型参数进行语音重构。
在这里插入图片描述

VOCODER以及 线性预测编码LPC 可灵活对参数进行优化,因为其功率谱和源信号参数间的内部约束较小。因此,STRAIGHT模型采用VOCODER为原型的源-滤波器 表征语音信号,可将语音信号视为一激励信号通过时变线性滤波器后的输出结果。
该模型一方面利用补偿窗来消除时域信号的周期性干扰,另一方面在样条空间中进行逆滤波来消除频域干扰,因此在很大程度上提高了合成语音的质量。

引言

STRAIGHT分析算法是基于源-滤波模型构建的。

1.源-滤波模型:
基于人发声的机理构建的一种模型。源就是嗓音源,对应图中的激励部分;滤波就是图中的声道谐振部分,声道被看作是一个谐振腔(共振峰模型,正弦模型),还有另一种角度,把声道看成是由多个不同截面积的短管串联而成的系统(声管模型,LPC滤波器)。
在这里插入图片描述
传统的激励为二元激励,要么输出清音,要么浊音。这样虽简单,但过于粗糙,所以出现了混合激励。

2.STRAIGHT混合激励
混合激励就是将随机噪声序列和周期脉冲按一定的比例叠加,作为声源激励信号。

  • 浊音激励源:通过高低通滤波器的随机噪声+脉冲序列(两种成分的相对比例随信号的浊化程度变化)
  • 清音激励源:噪声序列+一个位置随机的正脉冲跟随一个负脉冲构成的脉冲对形成的爆破脉冲

激励脉冲+抖动方式jitter:

  • 将基音相关程度不大或残差信号中存在的较大峰值时的语音作为抖动浊音帧。
  • 周期脉冲的相位需随机抖动,对每个基音周期的长度乘上一个在0.75~1.25之间的均匀分布随机数,提高语音自然度。

应用:
混合激励线性预测MELP编码中,将二元激励,码激励及多带激励MBE的优点综合在一起,得到混合激励源
下面是二元激励源与MELP混合激励源的波形对比图。
在这里插入图片描述

在STRAUGHT中,有两个控制混合激励源的参数:

  • 非周期参数AP(Aperiodic):控制噪声与总能量的比例
  • 组延迟(group delay):通过对高频部分随机添加相位,影响高频的能量分布,从而控制浊音段噪声的比例。

STRAIGHT还有专门生成类噪声的模快,最后加入到浊音段的合成中。

3.STRAIGHT中的相位感知
STRAIGHT合成语音质量高还有个关键原因,就是他在相位上的控制,其合成其中由多个调整相位的模块。

特征提取

1. 平滑功率谱提取(包括低频带补偿和清音帧处理等过程)

STRAIGHT模型分析阶段的一个关键步骤是进行自适应频谱分析———获取无干扰且平滑的功率谱。

直观概念:
传统声码器的核心思想是将语音中的声源信息和声道频谱信息分离出来,但这种方法的缺陷是:提取出的声源参数与声道参数之间仍有较强的相关性,一定程度上仍会互相影响,不便于各自独立调整修改。

通常浊音信号产生:s(t)=p(t)*v(t)。激励信号与频谱信息的卷积。
理想情况是p(t)和v(t)完全独立,不相关。STRAIGHT中,使用下面公式计算语音信号的短时谱SW(w,t):

在这里插入图片描述
信号s(t)加窗截断作用,会导致短时谱在频率轴和时间轴上出现与基频f0相关的周期性,采用如下窗函数,加窗后的短时谱在时域和频域具有一致的周期性:
在这里插入图片描述

加上高斯窗函数后,如下图的短时谱,很明显在时间轴和频率轴上都有很强的周期性特征,所以此时并没有把声道参数和声源参数完全分离,导致谱参数的调整受到限制。
在这里插入图片描述
经过平滑补偿窗等一系列操作,就能得到去除周期性之后的谱,如下图,即短时谱在时间轴和频率轴上没有了周期相关性,这就是STRAIGHT分析要得到的谱。
在这里插入图片描述

具体算法步骤:
自适应加权谱的提取,其核心算法在于对提取出的功率谱进行一系列的平滑和补偿过程。对输入的语音信号进行:语音信号预处理 -> 功率谱提取 -> 低频噪声补偿 -> 过平滑补偿 -> 无音帧谱的处理,最后得到自适应功率谱。

  • 预处理:包括让语音信号x(n)经过三个六阶butterworth高通滤波器:截止频率分别为70Hz,300Hz,3kHz。滤波得到x1(n),x2(n),x3(n)。算法通过x1(n)求取功率谱,通过x2(n),x3(n)产生无音帧功率谱的加权系数。

  • 提取当前帧的功率谱:首先要设计截取帧的数据窗函数,窗函数w1(n)和频率有关,因此由于各帧基音频率F0不同,窗长是变化的。当语音信号x1(n)被截取后,作FFT得到功率谱。为使功率谱更平滑,算法基于w1(n)设计了一个补偿滤波器w2(n)。w2(n)在频域上对w1(n)的幅度谱进行了搬移,在相位谱上则较w2(n)偏移了pi/2.

  • 低频噪声补偿的原因:若当前帧为有音帧,基音频率为F0,功率谱E(k)在F0的倍频处具有较强的能量,而在其他频率各处能量较低,考虑到STAIGHT算法在语音合成部分,E(k)需要按输入的基音频率为间隔进行抽样,因此需要保证E(k)在F0以下的低频处比较平滑,因此需要对F0以下的频带进行低频噪声补偿,将 F0/2 ~ F0 Hz频带上的功率谱E(k)翻折复制到0~F0/2的频带上。

  • 过平滑补偿:经过低频噪声补偿的功率谱为E1(k)。对E1(k)进行一次平滑w1(n),以获取E1(k)的大致变化趋势E’1(k)。过平滑补偿则首先构造出平滑滤波器的逆滤波器g1(n),使得: g1(n)*w1(n) = 冲激函数.对经过低频噪声补偿的功率谱E1(k)在时域进行过平滑补偿,再转换为频域的功率谱E2(k);最后,利用变化趋势E’1(k)和E2(k)进行加权,得到过平滑补偿后的功率谱E3(k)。

  • 清音帧功率谱修正:首先获得300Hz以上语音x2(n)的各帧能量P1(nframe),根据有/无音的程度,将P1(nframe)和本帧功率谱E3(k)所得能量P(nframe)加权,得到P’1(nframe),最后,当语音帧为无音帧时,功率谱作如下修正:
    E3(k,nframe) = P’1(nframe)E3(k,nframe)/∑∑E3(k,nframe)。
    (当语音帧为有音帧时,相邻帧能量较为接近,高频能量也较为相似;而无音帧相邻帧的高频能量变化剧烈,因此采用此性质来判断有/无音程度)
    在这里插入图片描述
    对语音进行快速傅里叶变换(FFT),并通过一系列方法进行修正与补偿,最终获取平滑功率谱。 通过固定时窗函数与基音自适应平滑滤波器产生的可变基音间的尺寸误匹配消除时域的周期干扰。同时,对频域的相位干扰进行处理,利用补偿时间窗消除相位失真引起的频谱空洞。另外,为了进一步提高STRAIGHT模型的语音合成质量,在频域中采用过平滑补偿法恢复一些潜在的语音功率谱结构特征。
    根据上述功率谱提取步骤,经过一系列降干扰后语音平滑功率谱Pr(w,t)可近似表示为:
    在这里插入图片描述
    其中,Po(w ,t)和Pc(w ,t)分别为语音信号的原始功率谱和补偿功率谱,ζ为补偿系数,即得到的谱的时间变化最小,实验结果最佳ζ为0.13655。

2. 非周期成分提取

非周期成分可灵活描述周期能量和噪声能量间的比例关系,其中周期能量和噪声能量分别由语音功率谱的上包络和下包络决定。由于非周期成分的提取过程包含许多复杂的非线性运算,如包裹相位映射和等效矩形带宽(ERB)域的功率谱计算等,因此很难精确地用公式对非周期成分进行表示。
在这里插入图片描述
上下谱包络提取后,进行相减,然后转换到ERB域。ERB是等价矩形带宽,相关概念需参考听觉心理学教程。

在这里插入图片描述

语音的谐波成分在其功率谱中所占比重隐含于非周期成分参数中,非周期成分参数a (w ,t)可表示为:
在这里插入图片描述
其中,PoH(w, t)和PoL(w, t)分别为Po,(w t)的上下功率谱包络。

  • 语音非周期成分的提取,主要是分析信号的功率谱,提取功率谱的上包络与下包络(ERB域提取谱包络),利用上下谱包络的比例t(f,n)=EL/EH,判决语音信号在该频率点处的非周期成分的大小。t(f,n)在频率f处越大,非周期成分也越大,则合成时衰减频率f处的可能性也越大,从而提升合成音质。对非周期成分划分组得到bap。

3. 基频轨迹提取

通过小波时频分析的方式。首先是通过对语音信号中的基频信息进行解析,然后计算出相应的瞬时基频值,最后在频率域上进行谐波解析,并在频率轴上进行平滑处理,获得语音信号的各基频参数。
基频F0提取:设计一个Gabor滤波器(频域有较高分辨率)。

引言
为简单起见,采用FIR滤波器,冲激相应就是滤波器系数(卷积系数),且具有线性相位。先设计LP滤波器,再变频为BP滤波器。
在这里插入图片描述

为了获得好的频率响应,采用类似Gabor变换的方法,设计滤波器系数(FIR中即冲激响应)为:(例:T0=7.87ms,f0=127.1Hz时)
在这里插入图片描述
其中f0为所设计的中心频率,其傅里叶变化仍为类高斯函数,带宽约为2f0。为了进一步压缩带宽,用另一B-锤形函数与它卷积:
在这里插入图片描述
左图wd1, 右wd2
在这里插入图片描述

卷积得到wwd
在这里插入图片描述

从而可以进一步压缩带宽为f0。要变为BP滤波器,只要乘以余弦即可变频:
在这里插入图片描述
在这里插入图片描述

具体步骤
F0的提取步骤主要分为:F0粗定位->F0轨迹平滑->F0精定位。

  • F0粗定位:对语音信号进行小波变换,得到小波系数。再将小波系数转换为瞬时频率作为各帧的一组候选F0值。在进行小波变换前,要经过高通滤波器去除信号的直流分量;然后对信号降采样。
  • F0轨迹平滑:根据计算得到的高频能量比、最小噪声能量、判决门限、跳跃度(帧级别的基音频率与参考频率的误差),在一组候选F0值中寻找最可能的F0平滑曲线。
  • F0精定位和F0粗定位相似,也会用到瞬时频率。但F0粗定位是用小波变换得到瞬时频率,而F0精定位则是用FFT得到瞬时频率,再根据当前帧的噪声能量和语音能量对瞬时频率进行微调。

通过复合Gabor滤波器得到分析小波gAG(t),输入信号经过分解滤波得到复合信号D(t,τ0)
在这里插入图片描述
式中第一项为AM成分的幅度值;第二项为总能量,用来归一化AM成分的幅值;第三项为FM成分的幅值;第四项为基频平方,用来归一化FM成分的幅值;第五项表示时域积分区间的归一化因子。
当AM和FM取最小值时,基本性指数M值最大。

在这里插入图片描述
在这里插入图片描述

语音合成

STRAIGHT 算法采用 PSOLA 技术和最小相位脉冲响应相结合的方式,在合成语音时输入待合成语音的基音频率轨迹和去除了周期性的二维短时谱包络。
待合成语音 y(t) :
在这里插入图片描述

第一个公式反映的是基音同步叠加的过程 , Q 表示用于实现语音合成的基音同步标记的集合, y(t)表示所恢复的语音信号,函数G( )表示基频调整参数,它可以是任意形式的映射关系。
第二个公式说明的是每帧语音信号的冲击响应求取过程,ф(w)是一个具备附加控制相位激励的全通滤波器,可以用来改善听觉,函数V( ) 表示最小的相位冲击响应傅里叶变换,由前面的平滑包络谱S(w,t)得到,并利用刀谱分析理论方法将一般相位谱强制转化为最小相位谱。实际中进行转换得到的谱没有相位信息,这里也是还原了一定的相位谱。相关计算公式:

在这里插入图片描述
第三个公式反映了确定基音同步位置的过程。q表示倒谱,A, u,r函数分别对应幅度谱S(u,r)在幅度,频率,时间轴上的修改。

STRAIGHT代码应用

里面有主要的四个.m文件,一般足够项目用了。

1.源信息F0、AP提取

 [f0raw,ap,analysisParams]=exstraightsource(x,fs,optionalParams)

输入参数:
x : input signal. if it is multi channel, only the first channel is used
fs : sampling frequency (Hz)
optionalParams : Optional parameters for analysis

输出参数:
f0raw : fundamental frequency (Hz)
ap : amount of aperiodic component in the time frequency representation
analysisParams : Analysis parameters actually used

应用:

   Case 1: The simplest method[f0raw,ap]=exstraightsource(x,fs); Case 2: You can get to know what parameters were used.[f0raw,ap,analysisParams]=exstraightsource(x,fs);CAse 3: You can have full control of STRAIGHT synthesis.Please use case 2 to find desired parameters to modify.[f0raw,ap,analysisParams]=exstraightsource(x,fs,optionalParams);

2.谱信息SP提取

[n3sgram,nalysisParamsSp]=exstraightspec(x,f0raw,fs,optionalParamsSP)

输入参数:
x : input signal. only the first channel is analyzed
f0raw : fundamental frequency (Hz) in 1 ms temporal resolution
: set 0 for aperiodic part
fs : sampling frequency (Hz)
optionalParamsSP : spectrum analysis parameters

输出参数:
n3sgram : Smoothed time frequency representation (spectrogram)
analysisParamsSp : Actually used parameters

应用:

   Case 1: The simplest methodn3sgram = exstraightspec(x,f0raw,fs); Case 2: You can get to know what parameters were used.[n3sgram,analysisParamsSp]=exstraightspec(x,f0raw,fs);CAse 3: You can have full control of STRAIGHT synthesis.Please use case 2 to find desired parameters to modify.[n3sgram,analysisParamsSp]=exstraightspec(x,f0raw,fs,optionalParamsSP);

3.参数语音合成

[sy,prmS] = exstraightsynth(f0raw,n3sgram,ap,fs,optionalParamsS)

输入参数:
f0raw : fundamental frequency (Hz)
n3sgram : STRAIGHT spectrogram (in absolute value)
ap : aperiodic component (dB re. to total power)
fs : sampling frequency (Hz)
optionalParamsS : optional synthesis parameters

输出参数:
sy : synthesized speech
prmS : Actually used synthesis parameters

应用:

Case 1: The simplest method
sy = exstraightsynth(f0raw,n3sgram,ap,fs); Case 2: You can get to know what parameters were used.
[sy,prmS] = exstraightsynth(f0raw,n3sgram,ap,fs);CAse 3: You can have full control of STRAIGHT synthesis.Please use case 2 to find desired parameters to modify.[sy,prmS]=exstraightsynth(f0raw,n3sgram,ap,fs,optionalParamsS);

4.用其他F0提取方式时:

AP需用如下函数算

[ap,analysisParams]=exstraightAPind(x,fs,f0,optionalParams)

输入参数:
x : input signal. if it is multi channel, only the first channel is used
fs : sampling frequency (Hz)
f0 : fundamental frequency (Hz)
optionalParams : Optional parameters for analysis

输出参数:
ap : amount of aperiodic component in the time frequency represntation
: represented in dB
analysisParams : Analysis parameters actually used

应用:

   Case 1: The simplest methodap=exstraightAPind(x,fs,f0); Case 2: You can get to know what parameters were used.[ap,analysisParams]=exstraightAPind(x,fs,f0);CAse 3: You can have full control of STRAIGHT synthesis.Please use case 2 to find desired parameters to modify.[ap,analysisParams]=exstraightAPind(x,fs,f0,optionalParams);

补充

STRAIGHT算法应用一下简单,但是要理解原理还是有一定难度。但尽量还是深入理解原理算法,对今后实验也有帮助。

用Chatgpt问该算法:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31353.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:如何用Python挣钱:从小白到大佬的必备指南

如何用Python挣钱:从小白到大佬的必备指南 作为一名有10年Python编程经验的工程师,我深知Python的应用范围非常广泛,它可以为各种行业带来巨大的价值。当然,对于许多人来说,如果你是一名SEO从业者,也完全可…

chatgpt赋能python:如何利用Python在网上赚钱:一份SEO指南

如何利用Python在网上赚钱:一份SEO指南 随着互联网的快速发展和Python成为一种越来越受欢迎的编程语言,越来越多的人开始利用Python在网上赚取额外的收入。本篇文章将介绍一些Python工具和技术,以及SEO最佳实践,帮助你利用Python…

PHP短信验证功能

PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定AppKEY和App Secret还有配置签名 第二步 在应用管理中选择SDK下载,或者直接点击http://download.csdn.net/detail/s371795639/9695983下载,免费的…

发送短信验证码 API数据接口

1.前言 此接口发送短信验证码 短信模板 参数说明: 1449978 验证码为:{1}为您的登录验证码,请于{2}分钟内填写,如非本人操作,请忽略本短信。 1449979 验证码为:{1},您正在登录,若非本人操作&…

为何语言学家乔姆斯基对ChatGPT持否定态度?

本文比较了乔姆斯基关于语言知识的本质、来源和使用的理论与 GPT 的不同, 说明了GPT没有可解释性。 2023年3月8日著名语言学家乔姆斯基与罗伯茨(Ian Roberts)、瓦图穆尔(Jeffrey Watmull)共同在《纽约时报》发表了题为…

如何更换您的Gmail地址

在许多情况下,您可能需要更改您的 Gmail 地址:您换了工作、结婚并改了名字,或者您在 2003 年设置的电子邮件地址突然看起来有点累了。无论出于何种原因,以下是更改 Gmail 地址并确保您在此过程中不会丢失任何重要数据的方法。 创…

将163邮箱改为使用outlook软件登录的切换步骤

效果图: 实际操作步骤如下: 1. 登录163.邮箱,如下是使用网页版登录;按照下面要求,扫描二维码 2. 找个txt文件,保存此 一次性密码,后面步骤有用。 3.检查当前状态; 两个都是“已开…

Becky!客户端Hotmail/outlook邮箱设置方法

Becky!邮箱客户端是一款非常简洁好用的邮件接收发送软件。最近本软件菜单增加了对中的支持,感谢作者的不懈努力。 日语版本下载地址: http://www.rimarts.co.jp/becky-j.htm 中文菜单版本: http://www.zhcn.org/wp-content/plugins/download…

Gmail,qq,hotmail,163,sina等邮箱的Smtp设置

Gmail SMTP 服务器:smtp.gmail.com, SSL:是,服务器端口:587,见下图: Hotmail SMTP 服务器:smtp.live.com, SSL:是,服务器端口:587&…

凭实力破圈的狄耐克,究竟藏了多少惊喜?

你是否曾经想象这样一个场景: 进入社区时,自动识别业主身份,精准放行并联动家中智能场景模式。人未到,智先行,提前营造极度舒适便捷的人居环境。 进入单元楼时,联动电梯等候,无需触碰按键&…

点燃创作灵感:Prompt 实践指南揭秘!让 ChatGPT 更智能的六种策略(上)

在和 ChatGPT 对话中,Prompt 提示词的选择,如果遵循以下六种策略,我们将获得更好、更符合要求的回答。 这些策略,后几种更适合在编程调用 ChatGPT API 时使用,不过也适用直接和 ChatGPT 对话,让它更好的理解…

英伟达EditGAN:为高精度百变而生

点击上方“机器学习与生成对抗网络”,关注星标 获取有趣、好玩的前沿干货! 来源 机器之心报道 编辑 杜伟 在实现复杂且高精度图像编辑效果的同时,EditGAN 还能保持较高的图像质量和对象身份,英伟达在图像处理领域果然「出手不凡」…

英伟达把P图软件GAN了

晓查 发自 凹非寺量子位 报道 | 公众号 QbitAI 英伟达的最新AI工具又让网友用户们激动了。 “我已经等不及了!” 一位网友在看完演示视频后表示。 对于“手残党”来说,英伟达的EditGAN简直就是零基础P图神器。 能够高质量、高精细度地对图像进行修改&…

英伟达NVIDIA GPU 架构介绍

一、NVIDIA GPU的架构演变历史和基本概念 截止2021年,发布时间离我们最近的8种NVIDIA GPU微架构是: Tesla (特斯拉) Fermi(费米) Kepler(开普勒) Maxwell(麦克斯韦) Pascal&#x…

英伟达 GPU 架构简史

英伟达 GPU 架构简史 尽管近年来 Nvidia GPU 确实更频繁地成为新闻,但它们绝不是新事物。事实上,多年来,Nvidia GPU 已经进行了多次迭代,GPU 架构也取得了进步。因此,让我们回顾一下最近的历史,以了解 GPU…

英伟达创始人CEO黄仁勋:一个事实是,拥有一个可以完美执行的简单想法,有时候比拥有一个你的公司无法执行的宏伟想法更好 | 英伟达:地球上最重要的公司之一

英伟达创始人&CEO黄仁勋:一个事实是,拥有一个可以完美执行的简单想法,有时候比拥有一个你的公司无法执行的宏伟想法更好 文章目录 英伟达创始人&CEO黄仁勋:一个事实是,拥有一个可以完美执行的简单想法,有时候比拥有一个你的公司无法执行的宏伟想法更好英伟达公司…

英伟达突破万亿美元市值,创始人黄仁勋分享创业心得

你知道全球第一家市值突破万亿美元的芯片公司是哪一家吗?它的创始人又是怎样的一个人呢?今天我们就来聊聊英伟达和黄仁勋的故事。 —————————————————————————————— 英伟达(NVIDIA Corporation)&a…

不愁失业!英伟达 CEO 黄仁勋:“AI 让每个人都能成为程序员”

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 你是否想过,AI 可以帮你圆梦程序员? 早些年,大家或许对此存在疑惑,但近来 AI 编程工具的涌现和升级,这题的答案或许是——“y…

关于英伟达数字人文章的致歉和说明

大家好,昨天我们发布的一篇英伟达数字人新进展的文章,引发了较大范围的关注和讨论。经过我们的复核及英伟达官方最新确认,这篇文章存在不严谨和失当之处,特此进行说明和致歉。 一、说明一下我们的错误。 今日英伟达官方确认&#…

元宇宙大比拼:英伟达Nvidia,Facebook,iwemeta

还是那个熟悉的黄色厨房,还是那身立领的黑皮衣,在11月9日下午4点,黄仁勋带着他的元宇宙概念开启了英伟达GTC 2021大会。 在长达1小时30分钟的新品发布会中,黄仁勋重磅发布了英伟达最先进的Omniverse Avatar平台,这是一…