如何实现语音转换器?

时间:2009-06-06 13:21:48

标签: windows directx

我想写一个改变麦克风输入语音的应用程序,让它像机器人或一些有趣的男人的声音。它必须支持发送改变的语音到所有应用程序,如IM软件或游戏客户端。我应该选择哪种技术? Windows WaveForm Api?的DirectX? 音频驱动程序?

非常感谢!

6 个答案:

答案 0 :(得分:7)

有一个MSDN Coding4Fun article解释了如何在C#(.NET)中创建一个通过Skype运行的语音转换器。完整源代码也作为CodePlex上的项目托管。此外,使用音频做其他事情应该相当容易(而不是通过Skype流式传输),因为该项目基于NAudio框架,其中包含良好的抽象级别。无论如何,这是一个相当完整(和稳定)的例子 - 在我看来绝对值得一试。

如果你想/需要使用C ++或其他语言进行开发,那么这个项目至少应该给你一些关于如何去做的想法。不过,如果你可以使用.NET,那么我认为你很幸运。

答案 1 :(得分:3)

机器人声音通常以ring modulator效果完成,将声音与正弦波混合 - 这更容易。或者使用vocoder效果,将声音调制到其他波形(如矩形)上可能会有点棘手。去了解效果如何工作,得到一个程序,你可以检查它们的声音(Audacity适用于环形调制器,查找和使用声码器可能会有点困难)。然后阅读它是如何完成的,或者获得一个可以为你处理的库。

答案 2 :(得分:1)

您希望支持VSTi或DXi插件 即使是免费的,也有很多也可以作为声码器 您只需要编写主机应用程序。 看看here:)

答案 3 :(得分:0)

现在这是一个很好的主意,特别是对于移动应用程序。

我可能会通过使用.wav文件作为输入来启动离线,以便按照我想要的方式运行效果。你可以使用任何高级语言,但你可能想要一些能够很好地映射到C / C ++的东西。

就生产版本而言,我将使用C或C ++进行本地化。你想要一些快速的实时音频处理和我喜欢避免依赖.net之类的东西进行分发。 (并不是说我有任何针对.net的东西,它对公司内部的服务器和分发很有用,但我不太热衷于将它作为收缩包装软件的依赖。)

Windows DirectShow将是一个诱人的选择 - 如果您将语音变形器实现为直接显示过滤器,您可以使用多媒体做一些有趣的效果。

答案 4 :(得分:0)

您要找的是vocoder。我不知道上面列出的任何技术是否具有声码器效果,但最好的机会是使用DirectX。

答案 5 :(得分:0)

试试这个示例应用。我认为它对您有用。Link