【问题标题】:Real time microphone audio manipulation windows实时麦克风音频操作窗口
【发布时间】:2020-07-06 13:30:43
【问题描述】:

我想做一个应用程序(Target pc windows),可以让你实时修改微输入,比如引入声音效果甚至调制你的声音。

我在互联网上搜索,只发现有人告诉it would not be possible without using a virtual audio cable

但是,我知道一些具有类似行为(voicemod、resonance)的应用程序不使用虚拟音频线,所以我想获得一些关于如何完成的帮助(只需一个库的名称就足够了)或从哪里开始。

【问题讨论】:

  • 除非很明显,否则请定义什么是 VAC?
  • @PhilFreihofner 目标是 windows pc,问题已更新。

标签: windows audio input driver microphone


【解决方案1】:

linked tutorial 为我工作。在其中,声音被录制并保存为 .wav。

让这个流到扬声器的关键是打开一个SourceDataLine 并输出到那个而不是写入一个 wav 文件。因此,不要在第 59 行输出到 AudioSystem.write,而是输出到 SourceDataLine 写入方法。

IDK 如果有反馈问题。输出到耳机而不是你的扬声器可能很好!

要添加效果,必须分段访问和处理AudioInputLine。在每个细分市场中,需要发生以下情况:

  • AudioInputLine获取字节数组
  • 将音频字节转换为 PCM
  • 将您的音频效果应用到 PCM(如果效果是随时间变化的音量,这可以通过逐渐改变 0 到 1 之间的音量因子,将该因子与 PCM 相乘来实现)
  • 转换回音频字节
  • 写信给SourceDataLine

所有这些步骤都已在 StackOverflow 帖子中介绍。

链接教程对文件位置、线程以及停止和启动的处理方式做了一些简化。但最重要的是,它显示了来自麦克风的工作、实时音频线路。

【讨论】:

  • 实际上我想输出到麦克风,而不是耳机或扬声器。这就是我提到的示例应用程序所做的。 SourceDataLine 有可能吗?
  • 是否要将麦克风用作扬声器?根据您的问题描述,我假设您想实时对来自麦克风的声音应用影响。您可以显示示例应用程序的链接吗?我不知道麦克风线是否会接受数据,我想它可能会。如果是这样,我假设 SourceDataLine 将是写入它的方式。
  • 这正是我想要的。 resanance.comvoicemod.net
  • 不过,我认为您链接的这些应用程序都不是这样做的。在某些情况下,正在处理来自麦克线路的数据,使用基于颗粒的变换以实现频移,或者使用数字滤波器或其他一些计算上的高级功能。然后数据通过扬声器输出。 Java 可以做到这一点,而且做得很好,但基于 C 的语言更常被用于商业产品的这一级别的数字信号处理。
【解决方案2】:

首先,您可以为此使用专业的现成软件 - Digital audio workstation (DAW) 结合大量插件

5 steps to real-time process your instrument in the DAW

还有What is (audio) direct monitoring?

如果您确定必须自己编写,您可以使用库进行实时音频处理(据我所知,C++ 在这方面比 C# 更好)。

这些库确实有效。它们专为实时而设计。

https://github.com/thestk/rtaudio
http://www.portaudio.com/

另见https://en.wikipedia.org/wiki/Csound

如果您还没有专业的声音界面,但想尽量减少延迟,请阅读Asio4All

【讨论】:

  • 自己写是我想要的,所以这不是问题,实时处理音频也不是问题,我需要帮助的是如何修改输入流字节,以便其他应用程序捕获更改我做了音频。我不介意用 c、c++、c# 或 java 编写代码,但是这些库中是否有这样的能力?
猜你喜欢
  • 2017-10-26
  • 1970-01-01
  • 2019-12-02
  • 2010-11-26
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多