public void InvalidMinFrequencyTest() { var configuration = new CustomSpectrogramConfig { FrequencyRange = new FrequencyRange { Max = 5512, Min = -1 } }; Assert.Fail(); }
public void CutLogarithmizedSpectrumOfJustOneFingerprintTest() { var stride = new StaticStride(0, 0); var configuration = new CustomSpectrogramConfig { Stride = stride }; int logSpectrumLength = configuration.ImageLength; // 128 var logSpectrum = GetLogSpectrum(logSpectrumLength); var cutLogarithmizedSpectrum = spectrumService.CutLogarithmizedSpectrum(logSpectrum, SampleRate, configuration); Assert.AreEqual(1, cutLogarithmizedSpectrum.Count); }
public void CreateLogSpectrogramFromMinimalSamplesLengthTest() { var configuration = new CustomSpectrogramConfig { NormalizeSignal = false }; var samples = TestUtilities.GenerateRandomAudioSamples(new DefaultFingerprintConfiguration().SamplesPerFingerprint + configuration.WdftSize); // 8192 + 2048 logUtility.Setup(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration)).Returns(new int[33]); fftService.Setup(service => service.FFTForward(samples.Samples, It.IsAny<int>(), configuration.WdftSize)) .Returns(TestUtilities.GenerateRandomFloatArray(2048)); var result = spectrumService.CreateLogSpectrogram(samples, configuration); logUtility.Verify(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration), Times.Once()); Assert.AreEqual(1, result.Count); Assert.AreEqual(configuration.ImageLength, result[0].Image.Length); }
public void CustomSpectrumValuesInheritFromDefault() { SpectrogramConfig defaultConfiguration = SpectrogramConfig.Default; SpectrogramConfig customConfiguration = new CustomSpectrogramConfig(); Assert.AreEqual(defaultConfiguration.ImageLength, customConfiguration.ImageLength); Assert.AreEqual(defaultConfiguration.LogBase, customConfiguration.LogBase); Assert.AreEqual(defaultConfiguration.LogBins, customConfiguration.LogBins); Assert.AreEqual(defaultConfiguration.FrequencyRange.Max, customConfiguration.FrequencyRange.Max); Assert.AreEqual(defaultConfiguration.FrequencyRange.Min, customConfiguration.FrequencyRange.Min); Assert.AreEqual(defaultConfiguration.UseDynamicLogBase, customConfiguration.UseDynamicLogBase); Assert.AreEqual(defaultConfiguration.WdftSize, customConfiguration.WdftSize); Assert.AreEqual(defaultConfiguration.Overlap, customConfiguration.Overlap); }
public void CustomSpectrumValuesInheritFromDefault() { SpectrogramConfig defaultConfiguration = new DefaultSpectrogramConfig(); SpectrogramConfig customConfiguration = new CustomSpectrogramConfig(); Assert.AreEqual(defaultConfiguration.ImageLength, customConfiguration.ImageLength); Assert.AreEqual(defaultConfiguration.LogBase, customConfiguration.LogBase); Assert.AreEqual(defaultConfiguration.LogBins, customConfiguration.LogBins); Assert.AreEqual(defaultConfiguration.FrequencyRange.Max, customConfiguration.FrequencyRange.Max); Assert.AreEqual(defaultConfiguration.FrequencyRange.Min, customConfiguration.FrequencyRange.Min); Assert.AreEqual(defaultConfiguration.UseDynamicLogBase, customConfiguration.UseDynamicLogBase); Assert.AreEqual(defaultConfiguration.WdftSize, customConfiguration.WdftSize); Assert.AreEqual(defaultConfiguration.Overlap, customConfiguration.Overlap); }
public void CreateLogSpectrogramTest() { var configuration = new CustomSpectrogramConfig { ImageLength = 2048 }; var samples = TestUtilities.GenerateRandomAudioSamples((configuration.Overlap * configuration.WdftSize) + configuration.WdftSize); // 64 * 2048 logUtility.Setup(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration)).Returns(new int[33]); fftService.Setup(service => service.FFTForward(samples.Samples, It.IsAny<int>(), configuration.WdftSize)) .Returns(TestUtilities.GenerateRandomFloatArray(2048)); var result = spectrumService.CreateLogSpectrogram(samples, configuration); logUtility.Verify(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration), Times.Once()); Assert.AreEqual(1, result.Count); Assert.AreEqual(configuration.WdftSize, result[0].Image.Length); Assert.AreEqual(32, result[0].Image[0].Length); }
public void CutLogarithmizedSpectrumTest() { var stride = new StaticStride(0, 0); var configuration = new CustomSpectrogramConfig { Stride = stride }; const int LogSpectrumLength = 1024; var logSpectrum = GetLogSpectrum(LogSpectrumLength); var cutLogarithmizedSpectrum = spectrumService.CutLogarithmizedSpectrum(logSpectrum, SampleRate, configuration); Assert.AreEqual(8, cutLogarithmizedSpectrum.Count); double lengthOfOneFingerprint = (double)configuration.ImageLength * configuration.Overlap / SampleRate; for (int i = 0; i < cutLogarithmizedSpectrum.Count; i++) { Assert.IsTrue( System.Math.Abs(cutLogarithmizedSpectrum[i].Timestamp - (i * lengthOfOneFingerprint)) < Epsilon); } }
public void CreateLogSpectrogramFromMinimalSamplesLengthTest() { var configuration = new CustomSpectrogramConfig { NormalizeSignal = false }; var samples = TestUtilities.GenerateRandomAudioSamples(new DefaultFingerprintConfiguration().SamplesPerFingerprint + configuration.WdftSize); // 8192 + 2048 logUtility.Setup(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration)).Returns(new int[33]); fftService.Setup(service => service.FFTForward(samples.Samples, It.IsAny <int>(), configuration.WdftSize)) .Returns(TestUtilities.GenerateRandomFloatArray(2048)); var result = spectrumService.CreateLogSpectrogram(samples, configuration); logUtility.Verify(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration), Times.Once()); Assert.AreEqual(1, result.Count); Assert.AreEqual(configuration.ImageLength, result[0].Image.Length); }
public void CreateLogSpectrogramTest() { var configuration = new CustomSpectrogramConfig { ImageLength = 2048 }; var samples = TestUtilities.GenerateRandomAudioSamples((configuration.Overlap * configuration.WdftSize) + configuration.WdftSize); // 64 * 2048 logUtility.Setup(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration)).Returns(new int[33]); fftService.Setup(service => service.FFTForward(samples.Samples, It.IsAny <int>(), configuration.WdftSize)) .Returns(TestUtilities.GenerateRandomFloatArray(2048)); var result = spectrumService.CreateLogSpectrogram(samples, configuration); logUtility.Verify(utility => utility.GenerateLogFrequenciesRanges(SampleRate, configuration), Times.Once()); Assert.AreEqual(1, result.Count); Assert.AreEqual(configuration.WdftSize, result[0].Image.Length); Assert.AreEqual(32, result[0].Image[0].Length); }
public void CutLogarithmizedSpectrumWithAnIncrementalStaticStride() { var stride = new IncrementalStaticStride(new DefaultFingerprintConfiguration().SamplesPerFingerprint / 2, new DefaultFingerprintConfiguration().SamplesPerFingerprint, 0); var config = new CustomSpectrogramConfig { Stride = stride }; int logSpectrumLength = (config.ImageLength * 24) + config.Overlap; var logSpectrum = GetLogSpectrum(logSpectrumLength); var cutLogarithmizedSpectrum = spectrumService.CutLogarithmizedSpectrum(logSpectrum, SampleRate, config); Assert.AreEqual(48, cutLogarithmizedSpectrum.Count); double lengthOfOneFingerprint = (double)config.ImageLength * config.Overlap / SampleRate; for (int i = 0; i < cutLogarithmizedSpectrum.Count; i++) { Assert.IsTrue(System.Math.Abs(cutLogarithmizedSpectrum[i].Timestamp - (i * lengthOfOneFingerprint / 2)) < Epsilon); } }
public void GenerateLogFrequenciesRangesTest() { var defaultConfig = new CustomSpectrogramConfig { 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(defaultFingerprintConfiguration.SampleRate, defaultConfig); for (int i = 0; i < logSpacedFrequencies.Length; i++) { var logSpacedFrequency = logSpacedFrequencies[i]; int index = logUtility.FrequencyToSpectrumIndex(logSpacedFrequency, defaultFingerprintConfiguration.SampleRate, defaultConfig.WdftSize); Assert.AreEqual(index, indexes[i]); } }
public void CustomSpectrumValuesOverrideDefaults() { var customConfiguration = new CustomSpectrogramConfig { ImageLength = 256, LogBase = 4, LogBins = 46, FrequencyRange = new FrequencyRange { Min = 5512, Max = 22050 }, Overlap = 32, UseDynamicLogBase = true, WdftSize = 4048 }; Assert.AreEqual(256, customConfiguration.ImageLength); Assert.AreEqual(4, customConfiguration.LogBase); Assert.AreEqual(46, customConfiguration.LogBins); Assert.AreEqual(22050, customConfiguration.FrequencyRange.Max); Assert.AreEqual(5512, customConfiguration.FrequencyRange.Min); Assert.AreEqual(32, customConfiguration.Overlap); Assert.IsTrue(customConfiguration.UseDynamicLogBase); Assert.AreEqual(4048, customConfiguration.WdftSize); }
public CustomFingerprintConfiguration() { SpectrogramConfig = new CustomSpectrogramConfig(); HashingConfig = new CustomHashingConfig(); }
public void InvalidFingerprintLengthTest() { var configuration = new CustomSpectrogramConfig { ImageLength = 0 }; Assert.Fail(); }
public void NegativeOverlapTest() { var configuration = new CustomSpectrogramConfig { Overlap = -1 }; Assert.Fail(); }
public void CutLogarithmizedSpectrumWithSpectrumWhichIsLessThanMinimalLengthOfOneFingerprintTest() { var stride = new StaticStride(0, 0); var config = new CustomSpectrogramConfig { Stride = stride }; int logSpectrumLength = config.ImageLength - 1; var logSpectrum = GetLogSpectrum(logSpectrumLength); var cutLogarithmizedSpectrum = spectrumService.CutLogarithmizedSpectrum(logSpectrum, SampleRate, config); Assert.AreEqual(0, cutLogarithmizedSpectrum.Count); }
public void InvalidLogBinsTest() { var configuration = new CustomSpectrogramConfig { LogBins = 0 }; Assert.Fail(); }
public void InvalidWdftSizeTest() { var configuration = new CustomSpectrogramConfig { WdftSize = -1 }; Assert.Fail(); }