#神经网络 #噪声 #wav #降低 #xiph #输入

bin+lib nnnoiseless

音频降噪,源自 Xiph 的 RNNoise 库

11 个版本

0.5.1 2022 年 12 月 16 日
0.5.0 2022 年 5 月 26 日
0.4.0 2022 年 2 月 22 日
0.3.3 2021 年 11 月 25 日
0.1.1 2020 年 7 月 12 日

#71 in 音频

Download history 1557/week @ 2024-03-14 1591/week @ 2024-03-21 1672/week @ 2024-03-28 2023/week @ 2024-04-04 2335/week @ 2024-04-11 2158/week @ 2024-04-18 2561/week @ 2024-04-25 1735/week @ 2024-05-02 2237/week @ 2024-05-09 2497/week @ 2024-05-16 2891/week @ 2024-05-23 1636/week @ 2024-05-30 1747/week @ 2024-06-06 2164/week @ 2024-06-13 1956/week @ 2024-06-20 1577/week @ 2024-06-27

7,816 每月下载量
3 crates 中使用

BSD-3-Clause

135KB
2.5K SLoC

nnnoiseless

Rust docs

nnnoiseless 是一个用于抑制音频噪声的 Rust crate。它是 C 库 RNNoise 的 Rust 版本,基于循环神经网络。

尽管 nnnoiseless 主要用作库,但也提供了一个简单的命令行工具作为示例。它操作 WAV 文件或 RAW PCM 文件。运行

cargo install nnnoiseless

以安装它(您可能需要先安装 rust)。一旦安装了 nnnoiseless,您就可以像这样运行它

nnnoiseless input.wav output.wav

,或者,对于更高级的使用,尝试

nnnoiseless --help

安全性

除了下面描述的 C API 之外,nnnoiseless 主要使用安全的 Rust 编写。它目前在两个地方使用 unsafe,将 f32 数组转换为长度减半的 Complex<f32> 数组;这带来了小幅但可测量的性能提升。如果 RustFFT 的未来版本具有内置对仅实数 FFT 的支持,则此不安全代码将被移除。

C API

您可以将 nnnoiseless 安装为一个库,该库可以从 C 使用,并具有与 RNNoise 兼容的头文件。

$ cargo install cargo-c
$ mkdir staging-nnnoiseless
$ cargo cinstall --destdir staging-nnnoiseless
$ sudo cp -a staging-nnnoiseless/* /

自定义模型

nnnoiseless 基于神经网络。有一个内置的模型,但您也可以用您自己的模型替换内置网络。(这可能很有用,例如,如果您有一种特定的噪声要过滤掉,而 nnnoiseless 的内置网络做得不够好。)

加载 nnnoiseless 网络文件

假设你已经训练(或从某处下载)了你的神经网络权重,并且它们存储在文件 weights.rnn 中。你可以通过传递 --model 选项来使用这些权重进行 nnnoiseless 二进制操作。

nnnoiseless --model=weights.rnn input.wav output.wav

另一方面,如果你将 nnnoiseless 作为库使用,你可以使用 RnnModel::from_bytesRnnModel::from_static_bytes 加载你的神经网络权重。

转换 RNNoise 网络

有些人已经为 RNNoise 制作了自己的神经网络权重(例如,这里)。这些权重也可以在 nnnoiseless 中使用,但你需要首先将它们从基于文本的 RNNoise 格式转换为二进制 nnnoiseless 格式。在 train 目录中有一个脚本可以为你完成这个任务:只需运行

python train/convert_rnnoise.py input_file.txt output_file.rnn

训练你自己的权重

这个过程有些复杂,但现在已经有文档说明了。有关更多信息,请参阅 train/README.md

依赖项

~3–4.5MB
~82K SLoC