主动降噪

Gra*_*ant 6 delphi audio noise cancellation

我已经编写了一个语音识别程序,我在麦克风听到我,在电脑上播放音乐时遇到了问题.我需要能够滤除声音的软件,让声音从进入麦克风的声音中消失.

是否有软件或组件(用于Delphi)可以解决我的问题?

小智 7

你需要捕获:

  1. 电脑输出
  2. 话筒.输入

然后你需要找到两个参数,具体取决于你的麦克风.位置和音响系统延迟.这两个参数是n延迟和k放大.

Stream1[t+n]*k=Stream2[t]
Run Code Online (Sandbox Code Playgroud)

其中t =时间.当你找到这个参数然后你得到的流,只能说话麦克风.输入将是

Stream2[t]-Stream1[t+n]*k=MusicReductionStream[t]
Run Code Online (Sandbox Code Playgroud)

  • 这不会很好,因为系统的脉冲响应不太可能是单个延迟抽头.由于房间内的反射,扬声器相位响应等,声音会及时散开. (4认同)
  • 实际上,这是一种天真的做法.鉴于在不变化的环境中正确的n和k,您可能可以摆脱大部分反馈,但在现实生活中,这个公式本身不会像您习惯的反馈取消那样工作在Skype或您的手机上. (2认同)

fvu*_*fvu 6

我想你想做什么噪音消除麦克风.这些系统使用至少一个额外的麦克风来计算"周围噪声"与直接瞄准麦克风的噪声(它必须注册的语音)之间的差异.我不认为您可以使用纯软件解决方案可靠地获得相同的效果.

第一步显然是将音乐降低:-)


Wou*_*ick 5

查看AsioVST库.

  • 100%开源的Delphi代码
  • 自由
  • 非常完整
  • 活动(例如,正在添加对xe2/x64的支持)

Examples\Plugins\Crosstalk Cancellation\你的下方,你会找到一个插件的源代码,它可能正在寻找你正在寻找的东西.

截图

魔术发生在DAV_DspCrosstalkCancellation.pas中.