音效的概述

最常见的音效处理其实就是均衡/混响/变调

均衡

每个人都有自己独特的音色,音色不同主要是每个人的声音能量在频域各个频段分布不一致导致的。改变这种声音能量分布最直接的方式就是eq。
eq本质就是一组滤波器,比如常见的低通,高通,带阻。比如想要去掉齿音,就在10-14KHz部分加一个带通滤波器,削减一下这部分能量。
然后eq的实现-在其他地方写了。

变调

不同人发音的基频是不一样的,音调和基频直接相关的,变调其实就是要改变基频,基频的本质就是一个信号循环周期的倒数。比如基频是 250Hz,那么当前时间的语音信号就是以 4ms 为周期的信号。要变调,其实就是把这个循环周期进行扩大或者缩小。<语音具有弱周期性>
谐波的频率是基频的倍数,频谱看起来会更稀疏。
音调的提升,简单的方法就是把原始信号重采样,但是不改变播放信号的采样率。比如原信号20ms,播放10ms,但是这样子的问题是,处理过之后会感觉这个人声音变高了,变速又变调了。
但是目标是变调不变速/变速不变调

变调不变速

把音频信号按照一定规律拼在一起(OLA-overlap and add)
OLA 的过程按照图 2 中 b、c、d 的顺序:取一帧 xm​,选择间隔长度 Ha​ 的下一帧 xm+1​,然后把这两帧加窗(汉宁窗)后,以步长 Hs​ 把两帧重叠、相加在一起。很显然 Ha​ 和 Hs​ 的比值就是原始信号和输出信号长度的比值。这样就可以把原始音频拼接成不同长度的音频了,然后再经过重采样把音频恢复成和原始音频相同长度的音频再播放,这样就实现了变速不变调。
在这里插入图片描述
如果要是没有重采样这一步骤,直接播放,由于拼接起来的音频没有改变原始语音的基频周期,只是改变了音频的长短,这就实现了弱网对抗中用的“变速不变调”的算法。
但是采用这种 Overlap 的方式虽然可以防止连接处的信号产生跳变,但不能保证每一个窗内覆盖的信号都处于周期中的相同相位,或者说两个窗内信号周期的起始位置不相同。这就会导致常说的“相位失真”。
如图 3 所示,拼接的信号会出现时高时低的现象。所以如果能实时的根据信号本身的自相关属性,也就是把信号中相似的两段直接拼接在一起,这样就不会有相位的问题了。基于这样的思想,于是就有了波形相似叠加 WSOLA(Waveform similarity Overlap-Add)算法
在这里插入图片描述
WSOLA 算法的计算步骤如图所示,其实相比于 OLA,WSOLA 会在 xm+1​ 帧的附近寻找和输入信号中如果也移动步长 Hs​ 的信号 x~m​ 相似度最高的一段 x’m+1​ 来做拼接。
在这里插入图片描述
根据相似性原理,其实 WSOLA 合成出来的变调杂音基本已经没有了,WebRTC 中的快慢放用的就是 WSOLA。但 WSOLA 算法在实时变调中有一个问题,那就是每一帧出现的位置由于需要相似性搜索,所以需要更多的未来帧的信息,也就是说,需要引入更多的延迟。
在时域变调的算法中还有一种PSOLA(Pitch Synchronous Overlap and Add),需要先计算pitch(音高,也是由基频决定的),然后根据基音周期来改变 Overlap 的大小,这样就直接实现了变调。但是基频检测的鲁棒性没有 WSOLA 的相似性搜索高,所以 PSOLA 的生成可能会出现不稳定的情况。
其实变调算法除了在时域上做拼接,还可以在频域上实现,比如常见的 LSEE-MSTFTM、Phase Vocoder 等算法。

可以看到 WSOLA 等方法通过相似性来寻找拼接对象,但是相似性说到底是通过计算两段时域信号的 MSE(mean squared error)取最小值来得到的,这种方法能尽量保持低频相位的连续性,但高频信号的相位差异可能不能确保一致。

其中 Phase Vocoder 利用 STFT 中提供的相位信息,在变调扩展的同时会对每个傅里叶频点做相位修正,生成出的音质会比较高,所以在实时变调中常被使用。

混响

空间音频中,可以通过采样或者镜像法得到房间的混响 RIR,这样得到的混响叫做采样混响。采样混响真实,但是不一定好听,并且 RIR 需要和音频信号做卷积才能得到混响信号。当混响时间很长的时候需要的算力也是巨大的。在音乐制作时,为了营造更好的听感经常会使用一些人工混响效果器来产生混响,在实时音效里也可能因为要节省算力而采用人工混响效果器的方式来生成混响。
简单地理解,混响信号可以看作是直达声和许多逐步衰减、不断延迟的回声信号叠加而成的。假设一个衰减系数 a 和延迟 D,那么混响信号 y(n) 可以用下面的等比数列来表示:
在这里插入图片描述
梳状滤波器的频谱曲线不平坦,呈现明显的梳状效应。从而对不同的频率成分幅度会产生波动,导致梳状滤波器的拖尾声音带有很强的金属染色效应。而且回声只在延迟为 D 和 D 的倍数的时候出现,这就显得过于稀疏了。
所以在梳状滤波器的基础上 Schroeder 使用多个梳状滤波器来解决混响不够密集的问题,然后用全通滤波器(Allpass filter)来消除金属声。
在这里插入图片描述
图 7 为 Schroeder 混响模型的结构图,其中每个 Comb 代表一个梳状滤波器。但 Schroeder 依靠全通滤波器生成的混响依旧不够密集。

后续 Moorer 又对 Schroeder 模型进行了改良,把混响的生成拆成了直达声、早期混响、晚期混响这三个部分。加入了 FIR 模块来模拟早期混响,用 6 个梳状滤波器和一个全通滤波器来模拟晚期混响,并可以控制各部分的增益。

其实 Moorer 模型之后,人们会用各种方式来对混响模型进行改造,现在的混响生成器基本上也都是开放出很多参数,可调节的混响效果器了。比如混响的初始延迟、干湿比、混响 RT60 时间等。
<程序后补>

——参考https://blog.csdn.net/qq_37756660/article/details/123476828

附:**音高(pitch)**是由声音的基频决定的,音高和基频常常混用。可以这样认为,音高(pitch)是稀疏离散化的基频(F0)。由规律振动产生的声音一般都会有基频,比如语音中的元音和浊辅音;也有些声音没有基频,比如人类通过口腔挤压气流的清辅音。在汉语中,元音有a/e/i/o/u,浊辅音有y/w/v,其余音素比如b/p/q/x等均为清辅音,在发音时,可以通过触摸喉咙感受和判断发音所属音素的种类。

基音周期反映了声门相邻两次开闭之间的时间间隔,基频(fundamental frequency, F0)则是基音周期的倒数,对应着声带振动的频率,代表声音的音高,声带振动越快,基频越高。如图2所示,蓝色箭头指向的就是基频的位置,决定音高。它是语音激励源的一个重要特征,比如可以通过基频区分性别。一般来说,成年男性基频在 100-250Hz左右,成年女性基频在 150-350Hz左右,女声的音高一般比男声稍高。 人类可感知声音的频率大致在20-20000Hz之间,人类对于基频的感知遵循对数律,也就是说,人们会感觉100Hz到200Hz的差距,与200Hz到400Hz的差距相同。因此,音高常常用基频的对数来表示。
在这里插入图片描述
计算声音强度,用声压级表示:每帧语音在空气中的声压级Sound Pressure Level(SPL),单位dB公式:10log/20log 前者是功率后者是能量

——参考:https://zhuanlan.zhihu.com/p/510550742 还有python代码

高音质

对于高音质来说,基础是高采样率<48K>然后使用码率较高的音频编码器,并进行低损伤信号处理。
在这里插入图片描述
在这里插入图片描述
分析声音好听不好听需要覆盖的专业领域有很多。

像声学,这个人的发音是不是好,就跟发音腔体有关。比如发音是不是足够浑厚,嘴巴的开度是不是足够大,声音的响度如何,还有共振峰决定了发音的音色,基频决定了发音的音调,这些都是在发声时需要注意的一些方向。声学方面还有混响,刚才提到过,不同房间会有不同的混响。

这块就有很多的理论支持,可以提取响度是怎样的,基频是怎样的,混响是怎样的,这样就可以对声音进行分析了。

另外一块是语言学,主要和韵律、乐理有关。韵律就是指一个人的抑扬顿挫,从指标上来说就是音调变化以及声音响度的变化,有些重读、重音,或者说这个字拉得特别长,这些像语速、动态调整、语调的变化就是韵律。还是就是音乐上好不好听,就是说是不是按照正确唱歌的做法去做的,这就跟乐理有关了,比如是不是在调上,人声和乐器是不是需要配合,不同的音乐风格也会有所不同。

还有像心理学这块,是指感知声音。其实声音发成什么样子,在我们心理上的感知又是不一样的,我们可以感知到这个声音是冷色调还是暖色调,是有一些情绪标签的。心理上又可以根据双耳效应来感知这个声音发的位置,不同的声音它的延迟(比如左右耳)是不一样的,那么在心理上就会感觉出这个位置的方向感也是不一样的。这是我们要在最后做的,让声音从心理上也觉得是好听的。

前面是在塑造发声的器官是不是正确,空间感是不是正确。其中,语言学决定了抑扬顿挫是不是正确,乐理决定了唱歌是不是正确,心理学决定了听音是不是正确,甚至和播放设备也有关系。

这里有很多数学的方式,或者说数学描述的特征,去多维度地分析好声音的一般规律。

举个例子,比如像男性磁性的声音,它其实呈海鸥状,在低频和高频的能量会比较高,中频能量较低,就像一个海鸥展翅的形状,这样的声音往往会表现出比较磁性的特征。再比如说一些温柔的声音,它的节奏就不会那么快,同时咬文嚼字可能也没有那么清楚,这个时候听上去就会比较温柔。
在这里插入图片描述

在这里插入图片描述
调整的方式主要有这样两种。

第一种,理论模型。比如说要去变调,让这个人发音的调性是正确的,就需要做一些修音,这个时候可以采用一些变调算法。然后你觉得混响空间不够贴合伴奏,比如伴奏是在维也纳金色大厅这种比较大一些的音乐会的混响氛围,而这个人唱歌的时候是在混响比较小的客厅,这时就要改变混响,加入一些混响模型。这种链路式的一个一个模块去改造,根据理论模型就可以实现了,也称之为“链路式的理论模型推导”。

第二种,端到端的改变。随着 AI 技术的发展,可以用一些 AI 的方法,自动提取这个人的风格,而不是提取这样一个一个的链路。比如可以做一些整体的变声,整体去改变一个人的音色、音调,以及发音的时长、规律等等。这就是用 AI 方法做端到端的调整,这样就可以一次性的把这些工作都完成了。

在这里插入图片描述
————参考 https://blog.csdn.net/qq_37756660/article/details/123485367
相关可能涉及的程序后补<传统/AI>

AI变声

然后就是:https://blog.csdn.net/qq_37756660/article/details/123485711
关于ASR(Automatic Speech Recognition)可以理解为语音转文字,TTS(Text To Speech)文字转语音和 VPR(Voice Print Recognition)声纹识别等——<后补,常见模型和库,以及实用案例>
在之前说的音效算法的时候了解到,要做到变声需要改变整个语音信号的基频,还需要改变语音的音色。传统算法是通过目标语音和原始语音,计算出基频差距和频谱能量分布的差异等特征,然后使用变调、EQ 等方法来对语音进行调整,从而实现变声(Voice Conversition,VC)。
但这些特征的差异,在发不同的音,不同的语境中可能都是不一样的。如果用一个平均值来进行整体语音的调整,你可能会发现有的音变声效果比较贴近目标语音,而有的音,可能会有比较大的偏离。整体听感上就会觉得变声效果时好时坏。

甚至由于某些发音在改变了频谱能量分布后,共振峰发生了较大改变,连原本想表达的语意都发生了变化。所以为了获得比较好的变声效果,需要实时对语音做动态的调整,而这使用传统算法显然是无法穷尽所有发音、语境的对应变化关系的。

so ai算法:https://blog.csdn.net/qq_37756660/article/details/123485711

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值