环形调制器用于语音效果

时间:2013-09-15 18:31:31

标签: java android c++ audio native

嘿我需要为我的Voice Changer应用程序更改音频文件。我需要机器人或外星人等效果。因此,我必须实现一个环形调制器http://en.wikipedia.org/wiki/Ring_modulation

你知道如何实现它吗?或者你有一个不同的更简单的建议? 我能够改变文件的音高,速度和回声。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

原则上,环形调制器只是将输入信号乘以载波,例如低频正弦波:

f - input signal
g - carrier
h - output

h[i] = f[i] * g[i], for all i

正如MSalters所说,h只是fg的内在产品,使用C ++函数可能比自己计算它更快。

然而,我们习惯听到的环形调制器是模拟环形调制器,它们引入的失真比数字环形调制器多得多。如果要在数字域中模拟模拟环形调制器,则必须完成比此处描述的更多的工作。但是,这里有一个很好的参考,包括用javascript编写的示例代码和一篇好文章的参考:

http://webaudio.prototyping.bbc.co.uk/ring-modulator/

如果你想要那种邪恶的dalek音效,那就是你要走的路。我不知道最简单的数字方法如何比作语音“机器人”,但我怀疑如果你没有特别试图模仿dalek,它们都很好。

当然还有许多其他方法可以“自动化”一个声音,但环形调制器非常经典。另一个“经典”的是channel vocoder,但实现起来要复杂得多。

答案 1 :(得分:1)

C ++有一个标准函数:std::inner_product。只需输入输入信号和正弦。