public void CreateFingerprintsTest() { float[] samples = TestUtilities.GenerateRandomFloatArray(5512 * 10); var configuration = new DefaultFingerprintConfiguration(); float[][] logarithmizedSpectrum = new[] { TestUtilities.GenerateRandomFloatArray(2048), TestUtilities.GenerateRandomFloatArray(2048), TestUtilities.GenerateRandomFloatArray(2048) }; List <float[][]> dividedLogSpectrum = new List <float[][]> { new[] { TestUtilities.GenerateRandomFloatArray(2048) }, new[] { TestUtilities.GenerateRandomFloatArray(2048) }, new[] { TestUtilities.GenerateRandomFloatArray(2048) } }; spectrumService.Setup(service => service.CreateLogSpectrogram(samples, configuration)).Returns(logarithmizedSpectrum); spectrumService.Setup(service => service.CutLogarithmizedSpectrum(logarithmizedSpectrum, configuration.Stride, configuration.FingerprintLength, configuration.Overlap)) .Returns(dividedLogSpectrum); waveletDecomposition.Setup(service => service.DecomposeImagesInPlace(dividedLogSpectrum)); fingerprintDescriptor.Setup(descriptor => descriptor.ExtractTopWavelets(It.IsAny <float[][]>(), configuration.TopWavelets)).Returns(GenericFingerprint); List <bool[]> rawFingerprints = fingerprintService.CreateFingerprints(samples, configuration); Assert.AreEqual(3, rawFingerprints.Count); foreach (bool[] fingerprint in rawFingerprints) { Assert.AreEqual(GenericFingerprint, fingerprint); } }
public void CreateFingerprints() { const int TenSeconds = 5512 * 10; var samples = TestUtilities.GenerateRandomAudioSamples(TenSeconds); var fingerprintConfig = new DefaultFingerprintConfiguration(); var dividedLogSpectrum = GetDividedLogSpectrum(); spectrumService.Setup(service => service.CreateLogSpectrogram(samples, It.IsAny <DefaultSpectrogramConfig>())).Returns(dividedLogSpectrum); waveletDecomposition.Setup(service => service.DecomposeImageInPlace(It.IsAny <float[]>(), 128, 32, fingerprintConfig.HaarWaveletNorm)); fingerprintDescriptor.Setup(descriptor => descriptor.ExtractTopWavelets(It.IsAny <float[]>(), fingerprintConfig.TopWavelets, It.IsAny <ushort[]>())).Returns(new TinyFingerprintSchema(8192).SetTrueAt(0, 1)); localitySensitiveHashingAlgorithm.Setup(service => service.Hash(It.IsAny <Fingerprint>(), fingerprintConfig.HashingConfig, It.IsAny <IEnumerable <string> >())) .Returns(new HashedFingerprint(new int[0], 1, 0f, Enumerable.Empty <string>())); var fingerprints = fingerprintService.CreateFingerprints(samples, fingerprintConfig) .OrderBy(f => f.SequenceNumber) .ToList(); Assert.AreEqual(dividedLogSpectrum.Count, fingerprints.Count); }
public void CreateFingerprints() { const int TenSeconds = 5512 * 10; var samples = TestUtilities.GenerateRandomAudioSamples(TenSeconds); var fingerprintConfig = new DefaultFingerprintConfiguration(); var dividedLogSpectrum = GetDividedLogSpectrum(); spectrumService.Setup(service => service.CreateLogSpectrogram(samples, It.IsAny <DefaultSpectrogramConfig>())).Returns(dividedLogSpectrum); waveletDecomposition.Setup(service => service.DecomposeImageInPlace(It.IsAny <float[][]>())); fingerprintDescriptor.Setup(descriptor => descriptor.ExtractTopWavelets(It.IsAny <float[][]>(), fingerprintConfig.TopWavelets)) .Returns(GenericFingerprint); var fingerprints = fingerprintService.CreateFingerprints(samples, fingerprintConfig); Assert.AreEqual(dividedLogSpectrum.Count, fingerprints.Count); for (int index = 0; index < fingerprints.Count; index++) { Assert.AreEqual(GenericFingerprint, fingerprints[index].Signature); Assert.AreEqual(dividedLogSpectrum[index].Timestamp, fingerprints[index].Timestamp, Epsilon); } }
public void ShouldRunCorrectlyForSpecificUseCase() { int sequenceNumber = 334; float[] samples = GetAudioSamples().Samples; int start = sequenceNumber * 1536; float[] troubledPart = new float[8192 + 2048]; Array.Copy(samples, start, troubledPart, 0, 8192 + 2048); var audioSamples = new AudioSamples(troubledPart, "test", 5512); var fingerprintService = new FingerprintService( new SpectrumService(new LomontFFT(), new LogUtility()), new LocalitySensitiveHashingAlgorithm( new MinHashService(new DefaultPermutations()), new HashConverter()), new StandardHaarWaveletDecomposition(), new FingerprintDescriptor()); var fastFingerprintService = new FingerprintService( new SpectrumService(new LomontFFT(), new LogUtility()), new LocalitySensitiveHashingAlgorithm( new MinHashService(new DefaultPermutations()), new HashConverter()), new StandardHaarWaveletDecomposition(), new FastFingerprintDescriptor()); int runs = 10; for (int i = 0; i < runs; ++i) { var x = fingerprintService.CreateFingerprints(audioSamples, new DefaultFingerprintConfiguration()); var y = fastFingerprintService.CreateFingerprints(audioSamples, new DefaultFingerprintConfiguration()); for (int j = 0; j < x.Count; ++j) { CollectionAssert.AreEqual(x[j].HashBins, y[j].HashBins); } } }