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 音频
7,816 每月下载量
在 3 crates 中使用
135KB
2.5K SLoC
nnnoiseless
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_bytes
或 RnnModel::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