本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
音频变声包括对声音的音调和速度的改变。两个属性的组合有四种情况:1,不变速不变调;2,变速不变调;3,变调不变速;4,变速变调。而声音的组成是由基频和多个倍频的泛音(谐波)组成的,对其泛音的不同处理,可以改变声音的音色。
关于声音的原理,参考 音频自动踩点研究 。
由于声音的音调(音高(pitch))是由其基频(基音)决定的,而音色是由其泛音决定的,通过对音频数据做 FFT 之后不同频率的数值进行处理之后再做 IFFT(快速逆傅里叶变换),即可完成对音调、音色的改变。例如将音调调高时就是女声,调低时就是男声。
常见第三方库
SoundTouch
SoundTouch是一个用C++编写的开源的音频处理库,可以改变音频文件或实时音频流的节拍(Tempo)、音调(Pitch)、回放率(Playback Rates),还支持估算音轨的稳定节拍率(BPM rate)。ST的3个效果互相独立,也可以一起使用。这些效果通过采样率转换、时间拉伸结合实现。
易于实现:ST为所有支持gcc编译器或者visual Studio的处理器或操作系统进行了编译,支持Windows、Mac OS、Linux、Android、Apple iOS等。
完全开源:ST库与示例工程完全开源可下载
容易使用:编程接口使用单一的C++类
支持16位整型或32位浮点型的单声道、立体声、多通道的音频格式
可实现实时音频流处理:
官网提供了ST的可执行程序、C++源码、说明文档、不同操作系统的示例工程,几个重要链接:
fmod Ex 声音系统是为游戏开发者准备的革命性音频引擎。最新版本是Fmod Studio 2.00.07。你也可以在FMOD的官网上下载到FMOD 3。如今采用了FMOD作为音频引擎的游戏包括Far Cry(孤岛惊魂)、Tom Clancy's Ghost Recon(幽灵行动),甚至著名的World Of Warcraft(魔兽争霸)。