1个不稳定版本
0.1.1 | 2024年1月1日 |
---|---|
0.1.0 |
|
#540 在 音频
30KB
91 行
噪声门
为Rust编写的简单噪声门算法,用于处理来自CPAL等原始音频流。噪声门对于清理混浊的音频流非常有用:呼吸声、翻页声、麦克风敲击声、键盘噪声、HVAC嗡嗡声、风扇噪声、房间混响等等,以帮助从您的流中去除不需要的声音。虽然噪声门不能完全消除背景噪声,但它可以帮助使您的音频流听起来更加干净。
用法
这个crate旨在与CPAL或类似工具的原始音频流一起使用。
- 将crate添加到您的项目中
cargo add audio-gate
- 在外部创建噪声门(最好是在输入流)并设置所需的参数。
let mut gate = NoiseGate::new(
-36.0, // Open Threshold
-54.0, // Close Treshold
48000.0, // Sample Rate
2, // Channels
150.0, // Release Rate
25.0, // Attack Rate
150.0 // Hold time
);
- 使用门处理音频的每一帧以去除不需要的声音。以下示例来自CPAL
let stream = match device.build_input_stream(
&config,
move |data: &[f32], _: &cpal::InputCallbackInfo| {
let gated_data = gate.process_frame(&data);
for &sample in gated_data.as_slice() {
producer.push(sample).unwrap_or({});
}
},
move |err| {},
None
) {
Ok(stream) => stream,
Err(e) => {
return Err(anyhow!("{}", e.to_string()));
}
};
听差异
示例目录中提供了一个反馈示例,以便您可以听到噪声门可能对您的音频流产生的影响。
要使用噪声门听您的当前输入,请运行示例
cargo run --example feedback -- --with-gate
要听不使用噪声门的音频,请运行不带标志的示例
cargo run --example feedback
许可证
本应用程序根据BSD 3条款许可证授权