1个不稳定版本

0.1.1 2024年1月1日
0.1.0 2024年1月1日

#540音频

BSD-3-Clause

30KB
91

Rust的简单噪声门


噪声门

为Rust编写的简单噪声门算法,用于处理来自CPAL等原始音频流。噪声门对于清理混浊的音频流非常有用:呼吸声、翻页声、麦克风敲击声、键盘噪声、HVAC嗡嗡声、风扇噪声、房间混响等等,以帮助从您的流中去除不需要的声音。虽然噪声门不能完全消除背景噪声,但它可以帮助使您的音频流听起来更加干净。

用法

这个crate旨在与CPAL或类似工具的原始音频流一起使用。

  1. 将crate添加到您的项目中
cargo add audio-gate
  1. 在外部创建噪声门(最好是在输入流)并设置所需的参数。
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
);
  1. 使用门处理音频的每一帧以去除不需要的声音。以下示例来自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条款许可证授权

无运行时依赖项