嘿我需要为我的Voice Changer应用程序更改音频文件。我需要机器人或外星人等效果。因此,我必须实现一个环形调制器http://en.wikipedia.org/wiki/Ring_modulation
你知道如何实现它吗?或者你有一个不同的更简单的建议? 我能够改变文件的音高,速度和回声。
感谢您的帮助
答案 0 :(得分:2)
原则上,环形调制器只是将输入信号乘以载波,例如低频正弦波:
f - input signal
g - carrier
h - output
h[i] = f[i] * g[i], for all i
正如MSalters所说,h
只是f
和g
的内在产品,使用C ++函数可能比自己计算它更快。
然而,我们习惯听到的环形调制器是模拟环形调制器,它们引入的失真比数字环形调制器多得多。如果要在数字域中模拟模拟环形调制器,则必须完成比此处描述的更多的工作。但是,这里有一个很好的参考,包括用javascript编写的示例代码和一篇好文章的参考:
http://webaudio.prototyping.bbc.co.uk/ring-modulator/
如果你想要那种邪恶的dalek音效,那就是你要走的路。我不知道最简单的数字方法如何比作语音“机器人”,但我怀疑如果你没有特别试图模仿dalek,它们都很好。
当然还有许多其他方法可以“自动化”一个声音,但环形调制器非常经典。另一个“经典”的是channel vocoder,但实现起来要复杂得多。
答案 1 :(得分:1)
C ++有一个标准函数:std::inner_product
。只需输入输入信号和正弦。