Я создаю веб-сайт для хора, чтобы автоматически оценивать кандидатов перед тем, как их приглашают на прослушивание.Я веду базу данных звуковых фрагментов, которые должен петь кандидат.
Я пытаюсь использовать код Aurio отсюда: https://github.com/protyposis/Aurio. Но я не могу заставить его правильно сравнивать звуковые дорожки, которыемедленнее или в другом масштабе.
private int findMatchesWang(String file1, String file2)
{
// Setup the sources
var audioTrack1 = new AudioTrack(new FileInfo(file1));
var audioTrack2 = new AudioTrack(new FileInfo(file2));
var profile = Aurio.Matching.Wang2003.FingerprintGenerator.GetProfiles()[0];
var store = new Aurio.Matching.Wang2003.FingerprintStore(profile);
var gen = new Aurio.Matching.Wang2003.FingerprintGenerator(profile);
int hashCount = 0;
gen.SubFingerprintsGenerated += delegate (object sender, SubFingerprintsGeneratedEventArgs e)
{
store.Add(e);
hashCount += e.SubFingerprints.Count;
};
gen.Generate(audioTrack1);
gen.Generate(audioTrack2);
var matches = store.FindAllMatches();
return matches.Count;
}
Когда file1 идентичен file2, функция возвращает ожидаемое значение (4686 совпадений).Я попытался вызвать функцию с помощью:
file2 - это та же песня, что и file1, но она воспроизводилась медленнее (см. Файл "slow.wav").
file2 - это та же песня, что и file1, но она воспроизводится в другом масштабе (см. файл "different-scale.wav").
В обоих случаях функция возвращает 0. Пожалуйста, найдитефайлы здесь: https://drive.google.com/drive/folders/10vKdc6C3InWpVs0g877Yub3ddv267GSZ?usp=sharing
Кто-нибудь может объяснить, что не так?