#extractor #cepstrum #quefrency #cepstral

cepstrum-extractor

一个易于使用的crate,用于计算信号的cepstrum。

3个版本

0.1.2 2024年6月18日
0.1.1 2024年6月17日
0.1.0 2024年6月15日

音频 类别中排名 225

MIT/Apache

8.5MB
280 代码行

Cepstrum Extractor

crates.io Documentation Rust + Miri

一个易于使用的crate,用于计算信号的cepstrum。

关于cepstrum概念的更多信息,请参阅这篇原始论文。

使用方法

非常简单的crate:使用给定的长度创建一个CepstrumExtractor,并使用它来计算信号的实数或复数cepstrum。

提取器接受一个Complex切片作为输入,RealToComplex::to_complex_vec从一个f32或f64切片创建一个新的Complex向量。

此类切片也实现了具有窗口函数的特质,目前只有一个可用:Hann

关于结果长度的说明

对于频谱来说,只有fft结果的另一半具有有意义的值。cepstrums是通过fft计算的,所以这里也是一样的。

返回向量的方法已经截断了结果到输入切片的一半,但*_mut方法,即那些修改输入切片的方法,显然不能这样做,所以在使用这些方法时请注意。

示例

给定一个长度为128CepstrumExtractorrceps_mut修改了输入切片(长度为128个样本),但修改后的切片中只有前64个样本真正代表了cepstrum。

关于多线程的说明

这个crate也可以用于并发环境。只需要一个提取器实例,并且可以通过简单的Arc在线程之间共享;有关此信息,请参阅相关文档页面。

示例可以在example文件夹下的concurrent中找到。

测试和示例

Miri 测试可以在 脚本 中找到。

以下命令必须从 crate 的根目录开始运行。

测试可以通过以下方式运行

cargo test

并发示例可以通过以下方式运行

cargo run --example concurrent

其他示例可以通过以下方式运行

RUSTFLAGS="--cfg examples" cargo run --example `example_name`

依赖项