我需要在一个小型数据库中查找长度为5到7秒之间的40个wav文件中与另一个相似的wav文件。
这些wav文件是您拨打电话时电话服务提供商提供的记录。
例如:
我的参考时间为1或2秒。
所有的wav都是PCM编码,16位,8000Hz单声道。
我尝试使用Aurio.AudioFingerPrint但没有成功。
https://github.com/protyposis/Aurio
// Setup the sources
var audioTrack1 = new AudioTrack(new FileInfo("Full5secs.wav"));
var audioTrack2 = new AudioTrack(new FileInfo("Part2Secs.wav"));
// Setup the fingerprint generator
var defaultProfile = FingerprintGenerator.GetProfiles()[0];
var generator = new FingerprintGenerator(defaultProfile);
// Create a fingerprint store
var store = new FingerprintStore(defaultProfile);
// Setup the generator event listener (a subfingerprint is a hash with its temporal index)
generator.SubFingerprintsGenerated += (sender, e) => {
var progress = (double)e.Index / e.Indices;
var hashes = e.SubFingerprints.Select(sfp => sfp.Hash);
store.Add(e);
};
// Generate fingerprints for both tracks
generator.Generate(audioTrack1);
generator.Generate(audioTrack2);
// Check if tracks match
if (store.FindAllMatches().Count > 0) {
Console.WriteLine("overlap detected!");
}
我的方法有什么问题?
有人知道我缺少哪些配置来处理小的wav文件吗?