4个版本

0.2.0 2024年2月2日
0.1.3 2023年3月12日
0.1.2 2023年3月4日
0.1.1 2022年7月23日
0.1.0 2022年7月23日

#170音频

Download history 386/week @ 2024-04-07 365/week @ 2024-04-14 400/week @ 2024-04-21 574/week @ 2024-04-28 534/week @ 2024-05-05 465/week @ 2024-05-12 598/week @ 2024-05-19 397/week @ 2024-05-26 343/week @ 2024-06-02 341/week @ 2024-06-09 358/week @ 2024-06-16 290/week @ 2024-06-23 302/week @ 2024-06-30 278/week @ 2024-07-07 335/week @ 2024-07-14 231/week @ 2024-07-21

1,174 每月下载次数
4 个包中使用 (通过 czkawka_core)

MIT 许可证

490KB
2K SLoC

rusty-chromaprint

这是chromaprint的一个正在进行的端口

Chromaprint是为AcoustID项目开发的音频指纹库。它旨在识别几乎相同的音频,并且生成的指纹尽可能紧凑以实现这一点。它不是一个通用的音频指纹解决方案。它以搜索性能为代价,牺牲了精确性和鲁棒性。目标用例包括完整的音频文件识别、重复音频文件检测和长音频流监控。

用法

要计算音频流的指纹,只需创建一个新的Fingerprinter实例,并向它提供所有音频样本

use rusty_chromaprint::{Configuration, Fingerprinter};

fn main() {
    // Use a preset configuration. This must be always the same for the audio fingerprints 
    // that are going to be compared against each other.
    let mut printer = Fingerprinter::new(&Configuration::preset_test2());
    
    // Sampling rate is set to 44100 and stream has 2 audio channels. It is expected that samples 
    // are interleaved: in this case left channel samples are placed at even indices 
    // and right channel - at odd ones.
    printer.start(44100, 2).unwrap();
    
    // Process a few samples...
    printer.consume(&[-100, -100, -50, -50, 1000, 1000]);
    // ... and add some more...
    printer.consume(&more_samples);
    
    // Make sure that all the sample are processed.
    printer.finish();
    
    // Get the fingerprint.
    let fingerprint = printer.fingerprint();

    println!("fingerprint = {:08x?}", &fingerprint);
}

要查看一个完整的示例,请查看此存储库中的compare,它使用Symphonia解码各种音频格式。它比较两个文件并打印出它们的共同部分

cargo run --release --bin compare -- audio1.mp3 audio2.wav
  #  |          File 1          |          File 2          |  Duration  |  Score  
-----+--------------------------+--------------------------+------------+---------
   1 | 0:00:04.83 -- 0:00:19.44 | 0:00:00.00 -- 0:00:14.61 | 0:00:14.61 |   0.69

有关比较音频指纹的更多详细信息,请参阅文档

依赖项

~3.5MB
~63K SLoC