16

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

非常感谢!

4

6 回答 6

10

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

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

于 2009-06-06T13:52:55.297 回答
4

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

于 2009-06-06T14:01:01.880 回答
2

您正在寻求支持 VSTi 或 DXi 插件。
有很多也可以充当声码器,甚至是免费的。
您只需要编写主机应用程序。看看这里:)

于 2009-06-06T13:53:37.417 回答
1

现在这是一个好主意,尤其是对于移动应用程序。

我可能会通过使用 .wav 文件作为输入来离线开始,以使效果按我想要的方式工作。您可以为此使用任何高级语言,但您可能想要一些可以很好地映射到 C/C++ 中的东西。

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

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

于 2009-06-06T13:38:19.663 回答
1

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

于 2009-06-06T13:40:20.860 回答
0

试试这个示例应用程序。我认为它对你有用。关联

于 2015-03-30T08:15:52.883 回答