public void CreateFingerprintsTest() { float[] samples = TestUtilities.GenerateRandomFloatArray(5512 * 10); var configuration = new DefaultFingerprintingConfiguration(); 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); waveletService.Setup(service => service.ApplyWaveletTransformInPlace(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 CustomFingerprintingConfiguration() { DefaultFingerprintingConfiguration defaultFingerprinting = new DefaultFingerprintingConfiguration(); SamplesPerFingerprint = defaultFingerprinting.SamplesPerFingerprint; Overlap = defaultFingerprinting.Overlap; WdftSize = defaultFingerprinting.WdftSize; MinFrequency = defaultFingerprinting.MinFrequency; MaxFrequency = defaultFingerprinting.MaxFrequency; TopWavelets = defaultFingerprinting.TopWavelets; SampleRate = defaultFingerprinting.SampleRate; LogBase = defaultFingerprinting.LogBase; FingerprintLength = defaultFingerprinting.FingerprintLength; Stride = defaultFingerprinting.Stride; LogBins = defaultFingerprinting.LogBins; NormalizeSignal = defaultFingerprinting.NormalizeSignal; UseDynamicLogBase = defaultFingerprinting.UseDynamicLogBase; }
private void BtnStartClick(object sender, EventArgs e) { DefaultFingerprintingConfiguration configuration = new DefaultFingerprintingConfiguration(); switch (hashAlgorithm) { case HashAlgorithm.LSH: if (!fileList.Any()) { MessageBox.Show(Resources.SelectFolderWithSongs, Resources.Songs, MessageBoxButtons.OK, MessageBoxIcon.Information); break; } WinQueryResults winQueryResults = new WinQueryResults( (int)_nudNumberOfFingerprints.Value, (int)_numStaratSeconds.Value, (int)_nudHashtables.Value, (int)_nudKeys.Value, Convert.ToInt32(_nudThreshold.Value), WinUtils.GetStride((StrideType)_cmbStrideType.SelectedIndex, (int)_nudQueryStrideMax.Value, (int)_nudQueryStrideMin.Value, configuration.SamplesPerFingerprint), tagService, modelService, queryBuilder); winQueryResults.Show(); winQueryResults.Refresh(); winQueryResults.ExtractCandidatesWithMinHashAlgorithm(fileList); break; case HashAlgorithm.NeuralHasher: throw new NotImplementedException(); case HashAlgorithm.None: throw new NotImplementedException(); } }
private void BtnQueryFromMicrophoneClick(object sender, EventArgs e) { DefaultFingerprintingConfiguration configuration = new DefaultFingerprintingConfiguration(); int secondsToRecord = (int)_nudSecondsToRecord.Value; int sampleRate = (int)_nudSampleRate.Value; string pathToFile = "mic_" + DateTime.Now.Ticks + ".wav"; _gbQueryMicrophoneBox.Enabled = false; Task<float[]>.Factory.StartNew(() => audioService.RecordFromMicrophoneToFile(pathToFile, sampleRate, secondsToRecord)).ContinueWith( task => { _gbQueryMicrophoneBox.Enabled = true; WinQueryResults winQueryResults = new WinQueryResults( secondsToRecord, 0, (int)_nudHashtables.Value, (int)_nudKeys.Value, (int)_nudThreshold.Value, WinUtils.GetStride((StrideType)_cmbStrideType.SelectedIndex, (int)_nudQueryStrideMax.Value, (int)_nudQueryStrideMin.Value, configuration.SamplesPerFingerprint), tagService, modelService, queryBuilder); winQueryResults.Show(); winQueryResults.Refresh(); winQueryResults.ExtractCandidatesUsingSamples(task.Result); }, TaskScheduler.FromCurrentSynchronizationContext()); }