#rustfft #timestretch

app ness_stretch

实现了相位随机化的真实FFT时间拉伸算法NessStretch,它将原始音频文件分割成1-10个离散的频率带,并使用递减的帧大小来对应增加的频率,因此能够很好地解决较短的、噪声较大的高频声音,并创建丰富的、浓郁的低频垫音

4个版本

0.5.1 2023年9月16日
0.5.0 2023年9月16日
0.4.3 2023年7月21日
0.4.1 2021年8月1日
0.4.0 2021年8月1日

#89 in 音频

每月 35 次下载

GPL-3.0 许可协议

53KB
876

ness_stretch

算法由Alex NessSam Pluta提供

Rust版本由Sam Pluta提供

实现了相位随机化的真实FFT时间拉伸算法NessStretch,它将原始音频文件分割成9个离散的频率带,并使用递减的帧大小来对应增加的频率。从最大的65536帧开始,算法将使用以下频率带/帧大小分解(假设输入为44100 Hz)

0-86 Hz : 65536帧,86-172 : 32768,172-344 : 16384,344-689 : 8192,689-1378 : 4096,1378-2756 : 2048,2756-5512 : 1024,5512-11025 : 512,11025-22050 : 256。

NessStretch是Paul Nasca的出色算法PaulStretch的改进。PaulStretch在整个频率范围内使用单个帧大小。NessStretch的分层分析带更适合人类频率感知,并且更好地解决了较短的、噪声较大的高频声音(沙沙声、鼓点等)。

有关更多详情,请参阅ICMC论文。或者只需运行它并听听看。

安装

Rust

为了获得NessStretch的优化版本,请使用命令行Rust版本,可以通过以下几种方式安装

  1. 通过homebrew(mac通用构建,因此应该能在所有mac上运行),运行
brew tap spluta/ness_stretch
brew install ness_stretch

然后

ness_stretch -h

以获取帮助。

  1. Rust cargo用户可以使用cargo安装
cargo install ness_stretch

Mac x86、Linux和Windows构建版本(使用GitHub Actions的未经测试的自动构建)可在以下位置找到

https://github.com/spluta/ness_stretch/releases/tag/0.2.3

或下载Rust源代码,并使用cargo进行编译。

依赖项

~11MB
~161K SLoC