public void FingerprintConfigurationInheritsDefaultValues() { var customConfiguration = new CustomFingerprintConfiguration(); Assert.AreEqual(defaultConfiguration.NormalizeSignal, customConfiguration.NormalizeSignal); Assert.AreEqual(defaultConfiguration.SampleRate, customConfiguration.SampleRate); Assert.AreEqual(defaultConfiguration.SamplesPerFingerprint, customConfiguration.SamplesPerFingerprint); Assert.AreEqual(defaultConfiguration.TopWavelets, customConfiguration.TopWavelets); }
public void CustomValuesAreSetOnFingerprintConfiguration() { var customConfiguration = new CustomFingerprintConfiguration { NormalizeSignal = true, SampleRate = 10024, TopWavelets = 250, }; Assert.IsTrue(customConfiguration.NormalizeSignal); Assert.AreEqual(10024, customConfiguration.SampleRate); Assert.AreEqual(250, customConfiguration.TopWavelets); }
public void AudioSamplesAreNormalized() { const int TenSeconds = 5512 * 10; var samples = TestUtilities.GenerateRandomAudioSamples(TenSeconds); var fingerprintConfig = new CustomFingerprintConfiguration { NormalizeSignal = true }; var dividedLogSpectrum = GetDividedLogSpectrum(); spectrumService.Setup(service => service.CreateLogSpectrogram(samples, It.IsAny<CustomSpectrogramConfig>())).Returns(dividedLogSpectrum); waveletDecomposition.Setup(service => service.DecomposeImageInPlace(It.IsAny<float[][]>())); fingerprintDescriptor.Setup(descriptor => descriptor.ExtractTopWavelets(It.IsAny<float[][]>(), fingerprintConfig.TopWavelets)) .Returns(GenericFingerprint); audioSamplesNormalizer.Setup(normalizer => normalizer.NormalizeInPlace(samples.Samples)); fingerprintService.CreateFingerprints(samples, fingerprintConfig); }
public void CorrectFingerprintConfigurationIsUsedWithInstanceConfigTest() { const string PathToAudioFile = "path-to-audio-file"; var configuration = new CustomFingerprintConfiguration { FingerprintLength = 1234 }; var fingerprintCommand = fingerprintCommandBuilder.BuildFingerprintCommand() .From(PathToAudioFile) .WithFingerprintConfig(configuration) .UsingServices(audioService.Object); Assert.AreSame(configuration, fingerprintCommand.FingerprintConfiguration); Assert.AreEqual(configuration.FingerprintLength, fingerprintCommand.FingerprintConfiguration.FingerprintLength); }
public void CreateLogSpectrogramFromMinimalSamplesLengthTest() { var configuration = new CustomFingerprintConfiguration { NormalizeSignal = false }; float[] samples = TestUtilities.GenerateRandomFloatArray(configuration.SamplesPerFingerprint + configuration.WdftSize); // 8192 + 2048 logUtility.Setup(utility => utility.GenerateLogFrequenciesRanges(configuration)).Returns(new int[33]); fftService.Setup(service => service.FFTForward(samples, It.IsAny<int>(), configuration.WdftSize)) .Returns(TestUtilities.GenerateRandomFloatArray(2048)); float[][] result = spectrumService.CreateLogSpectrogram(samples, configuration); audioSamplesNormalizer.Verify(service => service.NormalizeInPlace(samples), Times.Never()); logUtility.Verify(utility => utility.GenerateLogFrequenciesRanges(configuration), Times.Once()); Assert.AreEqual(configuration.FingerprintLength, result.Length); // 128 Assert.AreEqual(32, result[0].Length); }
public void GenerateLogFrequenciesRangesTest() { var defaultConfig = new CustomFingerprintConfiguration { UseDynamicLogBase = false, LogBase = 10 }; float[] logSpacedFrequencies = new[] // generated in matlab with logspace(2.50242712, 3.3010299957, 33) { 318.00f, 336.81f, 356.73f, 377.83f, 400.18f, 423.85f, 448.92f, 475.47f, 503.59f, 533.38f, 564.92f, 598.34f, 633.73f, 671.21f, 710.91f, 752.96f, 797.50f, 844.67f, 894.63f, 947.54f, 1003.58f, 1062.94f, 1125.81f, 1192.40f, 1262.93f, 1337.63f, 1416.75f, 1500.54f, 1589.30f, 1683.30f, 1782.86f, 1888.31f, 2000f }; int[] indexes = logUtility.GenerateLogFrequenciesRanges(defaultConfig); for (int i = 0; i < logSpacedFrequencies.Length; i++) { var logSpacedFrequency = logSpacedFrequencies[i]; int index = logUtility.FrequencyToSpectrumIndex(logSpacedFrequency, defaultConfig.SampleRate, defaultConfig.WdftSize); Assert.AreEqual(index, indexes[i]); } }
public void FingerprintConfigurationInheritsDefaultValues() { var customConfiguration = new CustomFingerprintConfiguration(); var defaultConfiguration = new DefaultFingerprintConfiguration(); Assert.AreEqual(defaultConfiguration.FingerprintLength, customConfiguration.FingerprintLength); Assert.AreEqual(defaultConfiguration.LogBase, customConfiguration.LogBase); Assert.AreEqual(defaultConfiguration.LogBins, customConfiguration.LogBins); Assert.AreEqual(defaultConfiguration.MaxFrequency, customConfiguration.MaxFrequency); Assert.AreEqual(defaultConfiguration.MinFrequency, customConfiguration.MinFrequency); Assert.AreEqual(defaultConfiguration.NormalizeSignal, customConfiguration.NormalizeSignal); Assert.AreEqual(defaultConfiguration.NumberOfLSHTables, customConfiguration.NumberOfLSHTables); Assert.AreEqual(defaultConfiguration.NumberOfMinHashesPerTable, customConfiguration.NumberOfMinHashesPerTable); Assert.AreEqual(defaultConfiguration.Overlap, customConfiguration.Overlap); Assert.AreEqual(defaultConfiguration.SampleRate, customConfiguration.SampleRate); Assert.AreEqual(defaultConfiguration.SamplesPerFingerprint, customConfiguration.SamplesPerFingerprint); Assert.IsTrue(defaultConfiguration.Stride.GetType() == customConfiguration.Stride.GetType()); Assert.AreEqual(defaultConfiguration.TopWavelets, customConfiguration.TopWavelets); Assert.AreEqual(defaultConfiguration.UseDynamicLogBase, customConfiguration.UseDynamicLogBase); Assert.AreEqual(defaultConfiguration.WdftSize, customConfiguration.WdftSize); }
public void CustomValuesAreSetOnFingerprintConfiguration() { var staticStride = new StaticStride(2048); var customConfiguration = new CustomFingerprintConfiguration { FingerprintLength = 256, LogBase = 4, LogBins = 46, MaxFrequency = 22050, MinFrequency = 5512, NormalizeSignal = true, NumberOfLSHTables = 30, NumberOfMinHashesPerTable = 4, Overlap = 32, SampleRate = 10024, Stride = staticStride, TopWavelets = 250, UseDynamicLogBase = true, WdftSize = 4048 }; Assert.AreEqual(256, customConfiguration.FingerprintLength); Assert.AreEqual(4, customConfiguration.LogBase); Assert.AreEqual(46, customConfiguration.LogBins); Assert.AreEqual(22050, customConfiguration.MaxFrequency); Assert.AreEqual(5512, customConfiguration.MinFrequency); Assert.IsTrue(customConfiguration.NormalizeSignal); Assert.AreEqual(30, customConfiguration.NumberOfLSHTables); Assert.AreEqual(4, customConfiguration.NumberOfMinHashesPerTable); Assert.AreEqual(32, customConfiguration.Overlap); Assert.AreEqual(10024, customConfiguration.SampleRate); Assert.AreEqual(staticStride, customConfiguration.Stride); Assert.AreEqual(250, customConfiguration.TopWavelets); Assert.IsTrue(customConfiguration.UseDynamicLogBase); Assert.AreEqual(4048, customConfiguration.WdftSize); }
public void InvalidMinFrequencyTest() { var configuration = new CustomFingerprintConfiguration { MinFrequency = 44100 * 2 }; Assert.Fail(); }
public void InvalidWdftSizeTest() { var configuration = new CustomFingerprintConfiguration { WdftSize = -1 }; Assert.Fail(); }
public void NegativeOverlapTest() { var configuration = new CustomFingerprintConfiguration { Overlap = -1 }; Assert.Fail(); }
public void InvalidNumberOfMinHashesPerTableTest() { var configuration = new CustomFingerprintConfiguration { NumberOfMinHashesPerTable = 0 }; Assert.Fail(); }
public void InvalidNumberOfLSHTablesTest() { var configuration = new CustomFingerprintConfiguration { NumberOfLSHTables = 0 }; Assert.Fail(); }
public void InvalidFingerprintLengthTest() { var configuration = new CustomFingerprintConfiguration { FingerprintLength = 0 }; Assert.Fail(); }
public void InvalidLogBinsTest() { var configuration = new CustomFingerprintConfiguration { LogBins = 0 }; Assert.Fail(); }
public void InvalidSampleRateTest() { var configuration = new CustomFingerprintConfiguration { SampleRate = 0 }; Assert.Fail(); }
public void InvalidTopWaveletsTest() { var configuration = new CustomFingerprintConfiguration { TopWavelets = 0 }; Assert.Fail(); }