实例介绍
soundfingerprinting是一个专为数字信号处理、数据挖掘和音频/视频识别领域的公司、爱好者和研究人员设计的C#框架。它实现了一种高效的算法,可以提供高精度和召回率的声音和视频指纹的快速插入和检索。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public async Task<TrackData> GetBestMatchForSong( string file) { int secondsToAnalyze = 10; // number of seconds to analyze from query file int startAtSecond = 0; // start at the begining // query the underlying database for similar audio sub-fingerprints var queryResult = await QueryCommandBuilder.Instance.BuildQueryCommand() .From(file, secondsToAnalyze, startAtSecond) .UsingServices(modelService, audioService) .Query(); return queryResult.BestMatch.Track; } |
【实例截图】
【核心代码】
文件清单
└── soundfingerprinting-96331c0093695bb472573965d4bf22432a7f2af7
├── build
│ └── Build.proj
├── build.cmd
├── build-naudio.cmd
├── build.sh
├── license.txt
├── README.md
├── soundfingerprinting.png
└── src
├── Emy.ruleset
├── Settings.StyleCop
├── SoundFingerprinting
│ ├── Audio
│ │ ├── AudioSamples.cs
│ │ ├── AudioSamplesNormalizer.cs
│ │ ├── AudioService.cs
│ │ ├── AudioServiceException.cs
│ │ ├── IAudioSamplesNormalizer.cs
│ │ ├── IAudioService.cs
│ │ ├── ILowPassFilter.cs
│ │ ├── IPlayAudioFileService.cs
│ │ ├── IRealtimeAudioSamplesAggregator.cs
│ │ ├── ISamplesAggregator.cs
│ │ ├── ISamplesProvider.cs
│ │ ├── ISoundCaptureService.cs
│ │ ├── IStreamingUrlReader.cs
│ │ ├── ITagService.cs
│ │ ├── IWaveFileUtility.cs
│ │ ├── LowPassFilter.cs
│ │ ├── RealtimeAudioSamplesAggregator.cs
│ │ ├── SamplesAggregator.cs
│ │ ├── SamplesConverter.cs
│ │ ├── SoundFingerprintingAudioService.cs
│ │ ├── TagInfo.cs
│ │ └── WaveFormat.cs
│ ├── Builder
│ │ ├── FingerprintCommandBuilder.cs
│ │ ├── IFingerprintCommandBuilder.cs
│ │ ├── IQueryCommandBuilder.cs
│ │ └── QueryCommandBuilder.cs
│ ├── Command
│ │ ├── BlockingRealtimeCollection.cs
│ │ ├── CompletedRealtimeMatchResultEntryFilter.cs
│ │ ├── ExecutedFingerprintCommand.cs
│ │ ├── ExecutedQueryCommand.cs
│ │ ├── FingerprintCommand.cs
│ │ ├── IBackoffPolicy.cs
│ │ ├── IFingerprintCommand.cs
│ │ ├── IInterceptHashes.cs
│ │ ├── IInterceptRealtimeSource.cs
│ │ ├── IQueryCommand.cs
│ │ ├── IQuerySource.cs
│ │ ├── IRealtimeQueryCommand.cs
│ │ ├── IRealtimeResultEntryFilter.cs
│ │ ├── IRealtimeSource.cs
│ │ ├── ISourceFrom.cs
│ │ ├── IUsingFingerprintServices.cs
│ │ ├── IUsingQueryServices.cs
│ │ ├── IUsingRealtimeQueryServices.cs
│ │ ├── IWithFingerprintConfiguration.cs
│ │ ├── IWithQueryConfiguration.cs
│ │ ├── IWithRealtimeQueryConfiguration.cs
│ │ ├── NoOpQueryHashesConcatenator.cs
│ │ ├── NoPassRealtimeResultEntryFilter.cs
│ │ ├── OngoingRealtimeResultEntryFilter.cs
│ │ ├── PassThroughRealtimeResultEntryFilter.cs
│ │ ├── QueryCommand.cs
│ │ ├── RandomExponentialBackoffPolicy.cs
│ │ ├── RealtimeQueryCommand.cs
│ │ ├── TrackMatchLengthEntryFilter.cs
│ │ └── TrackRelativeCoverageLengthEntryFilter.cs
│ ├── Configuration
│ │ ├── AVFingerprintConfiguration.cs
│ │ ├── AVQueryConfiguration.cs
│ │ ├── Configs.cs
│ │ ├── DefaultAVFingerprintConfiguration.cs
│ │ ├── DefaultAVQueryConfiguration.cs
│ │ ├── DefaultFingerprintConfiguration.cs
│ │ ├── DefaultHashingConfig.cs
│ │ ├── DefaultQueryConfiguration.cs
│ │ ├── DefaultRealtimeQueryConfiguration.cs
│ │ ├── DefaultSpectrogramConfig.cs
│ │ ├── EmptyOfflineStorage.cs
│ │ ├── FingerprintConfiguration.cs
│ │ ├── Frames
│ │ │ ├── BlackFramesFilterConfiguration.cs
│ │ │ ├── CropDetector.cs
│ │ │ ├── CroppingConfiguration.cs
│ │ │ ├── DefaultVideoFingerprintConfiguration.cs
│ │ │ ├── DefaultVideoQueryConfiguration.cs
│ │ │ ├── FrameNormalizationChain.cs
│ │ │ ├── GaussianBlurConfiguration.cs
│ │ │ ├── GaussianBlurFrameNormalization.cs
│ │ │ ├── IFrameNormalization.cs
│ │ │ ├── LogSpectrumNormalization.cs
│ │ │ ├── MeanFrameNormalization.cs
│ │ │ ├── NoFrameNormalization.cs
│ │ │ ├── SsimImplementation.cs
│ │ │ ├── StructuralSimilarityFilterConfiguration.cs
│ │ │ ├── VideoFingerprintConfiguration.cs
│ │ │ └── VideoQueryConfiguration.cs
│ │ ├── FrequencyRange.cs
│ │ ├── HashingConfig.cs
│ │ ├── IDelayStrategy.cs
│ │ ├── IMetaFieldsFilter.cs
│ │ ├── IOfflineStorage.cs
│ │ ├── MetaFieldsFilter.cs
│ │ ├── NoDelayStrategy.cs
│ │ ├── QueryConfiguration.cs
│ │ ├── RandomDelayStrategy.cs
│ │ ├── RealtimeQueryConfiguration.cs
│ │ └── SpectrogramConfig.cs
│ ├── Content
│ │ ├── AudioTrack.cs
│ │ ├── AVTrack.cs
│ │ ├── StreamingFile.cs
│ │ └── VideoTrack.cs
│ ├── DAO
│ │ ├── CompoundModelReference.cs
│ │ ├── CompoundModelReferenceProvider.cs
│ │ ├── Data
│ │ │ ├── FingerprintData.cs
│ │ │ ├── IgnoreBindingAttribute.cs
│ │ │ ├── SpectralImageData.cs
│ │ │ ├── SubFingerprintData.cs
│ │ │ └── TrackData.cs
│ │ ├── IModelReference.cs
│ │ ├── IModelReferenceProvider.cs
│ │ ├── IModelReferenceTracker.cs
│ │ ├── IntModelReferenceProvider.cs
│ │ ├── LinkedDataModels.cs
│ │ ├── LongModelReferenceProvider.cs
│ │ ├── ModelReference.cs
│ │ ├── ModelReferenceMaxAllowedValueExceededException.cs
│ │ ├── TracksUtility.cs
│ │ ├── UIntModelReferenceProvider.cs
│ │ └── UIntModelReferenceTracker.cs
│ ├── Data
│ │ ├── AVFingerprintingTime.cs
│ │ ├── AVFingerprints.cs
│ │ ├── AVHashes.cs
│ │ ├── Fingerprint.cs
│ │ ├── FingerprintsAndHashes.cs
│ │ ├── Frame.cs
│ │ ├── Frames.cs
│ │ ├── HashedFingerprint.cs
│ │ ├── Hashes.cs
│ │ ├── MediaType.cs
│ │ ├── QueryMatch.cs
│ │ └── TrackInfo.cs
│ ├── FFT
│ │ ├── IFFTService.cs
│ │ ├── ILogUtility.cs
│ │ ├── ISimpleSpectrumService.cs
│ │ ├── ISpectrumService.cs
│ │ ├── LogUtility.cs
│ │ ├── LomontFFT.cs
│ │ ├── SimpleSpectrumService.cs
│ │ └── SpectrumService.cs
│ ├── FingerprintService.cs
│ ├── IAdvancedModelService.cs
│ ├── IFingerprintService.cs
│ ├── Image
│ │ ├── Contour.cs
│ │ ├── Coord.cs
│ │ ├── GaussianBlurKernel.cs
│ │ ├── GrayImage.cs
│ │ ├── ImageService.cs
│ │ ├── SSIM.cs
│ │ ├── StructuralSimilarityAlgorithm.cs
│ │ └── WeightedUnionFind.cs
│ ├── IModelService.cs
│ ├── InMemory
│ │ ├── AVRAMStorage.cs
│ │ ├── InMemoryModelService.cs
│ │ ├── IRAMStorage.cs
│ │ └── RAMStorage.cs
│ ├── IQueryFingerprintService.cs
│ ├── IQueryMatchRegistry.cs
│ ├── IQueryService.cs
│ ├── LCS
│ │ ├── Candidates.cs
│ │ ├── Coverage.cs
│ │ ├── EnumerableRegion.cs
│ │ ├── IQueryPathReconstructionStrategy.cs
│ │ ├── IQueryResultCoverageCalculator.cs
│ │ ├── LegacyQueryPathReconstructionStrategy.cs
│ │ ├── MaxAt.cs
│ │ ├── OverlappingRegionFilter.cs
│ │ ├── QueryPathReconstructionStrategy.cs
│ │ ├── QueryPathReconstructionStrategyType.cs
│ │ ├── QueryResultCoverageCalculator.cs
│ │ ├── StackExtensions.cs
│ │ └── TimeSegment.cs
│ ├── LSH
│ │ ├── ILocalitySensitiveHashingAlgorithm.cs
│ │ └── LocalitySensitiveHashingAlgorithm.cs
│ ├── Math
│ │ ├── FScore.cs
│ │ ├── HammingDistanceResultStatistics.cs
│ │ ├── HashConverter.cs
│ │ ├── IGroupingCounter.cs
│ │ ├── IHashConverter.cs
│ │ ├── ISimilarityUtility.cs
│ │ ├── SimilarityUtility.cs
│ │ └── StandardGroupingCounter.cs
│ ├── Media
│ │ ├── AudioTrackReadConfiguration.cs
│ │ ├── AVTrackReadConfiguration.cs
│ │ ├── IMediaService.cs
│ │ └── IRealtimeMediaService.cs
│ ├── MinHash
│ │ ├── AdaptivePermutations.cs
│ │ ├── DefaultPermutations.cs
│ │ ├── ExtendedMinHashService.cs
│ │ ├── IMinHashService.cs
│ │ ├── IPermutations.cs
│ │ ├── MaxEntropyPermutations.cs
│ │ └── MinHashService.cs
│ ├── ModelServiceInfo.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Query
│ │ ├── AVQueryCommandStats.cs
│ │ ├── AVQueryMatch.cs
│ │ ├── AVQueryResult.cs
│ │ ├── AVResultEntryCompletionStrategy.cs
│ │ ├── AVResultEntry.cs
│ │ ├── ConfidenceCalculator.cs
│ │ ├── Gap.cs
│ │ ├── GroupedQueryResults.cs
│ │ ├── HammingSimilarityScoreAlgorithm.cs
│ │ ├── ICompletionStrategy.cs
│ │ ├── IConcatenator.cs
│ │ ├── IOngoingAvResultEntryTracker.cs
│ │ ├── IQueryHashesConcatenator.cs
│ │ ├── IQueryMath.cs
│ │ ├── IRealtimeResultEntryAggregator.cs
│ │ ├── IScoreAlgorithm.cs
│ │ ├── MatchedWith.cs
│ │ ├── MatchedWithExtensions.cs
│ │ ├── QueryCommandStats.cs
│ │ ├── QueryMath.cs
│ │ ├── QueryResult.cs
│ │ ├── RealtimeQueryResult.cs
│ │ ├── ResultEntryCompletionStrategy.cs
│ │ ├── ResultEntryConcatenator.cs
│ │ ├── ResultEntry.cs
│ │ ├── ReviewStatus.cs
│ │ ├── StatefulOngoingAvResultEntryTracker.cs
│ │ ├── StatefulQueryHashesConcatenator.cs
│ │ ├── StatefulRealtimeResultEntryAggregator.cs
│ │ ├── SubFingerprintCountScoreAlgorithm.cs
│ │ └── SubFingerprintsToSeconds.cs
│ ├── QueryFingerprintService.cs
│ ├── SoundFingerprinting.csproj
│ ├── Strides
│ │ ├── IncrementalRandomStride.cs
│ │ ├── IncrementalStaticStride.cs
│ │ ├── IStride.cs
│ │ ├── StrideType.cs
│ │ └── StrideUtils.cs
│ ├── Utils
│ │ ├── AbsComparator.cs
│ │ ├── AvQueryMatchSplitStrategy.cs
│ │ ├── FastFingerprintDescriptor.cs
│ │ ├── FingerprintDescriptor.cs
│ │ ├── FingerprintEncoder.cs
│ │ ├── IEncodedFingerprintSchema.cs
│ │ ├── IFingerprintDescriptor.cs
│ │ ├── IFingerprintEncoder.cs
│ │ ├── ITestRunnerUtils.cs
│ │ ├── QuickSelectAlgorithm.cs
│ │ ├── RangeUtils.cs
│ │ ├── SubFingerprintGroupingCounter.cs
│ │ ├── TestRunnerConfig.cs
│ │ ├── TestRunner.cs
│ │ ├── TestRunnerEventArgs.cs
│ │ ├── TestRunnerOngoingEventArgs.cs
│ │ ├── TestRunnerScenarioValidator.cs
│ │ ├── TestRunnerUtils.cs
│ │ ├── TestRunnerWriter.cs
│ │ ├── TestScenariousValidationResult.cs
│ │ └── TinyFingerprintSchema.cs
│ ├── Video
│ │ ├── IVideoService.cs
│ │ └── VideoTrackReadConfiguration.cs
│ ├── Wavelets
│ │ ├── IWaveletDecomposition.cs
│ │ └── StandardHaarWaveletDecomposition.cs
│ └── Windows
│ ├── HanningWindow.cs
│ └── IWindowFunction.cs
├── SoundFingerprinting.Audio.NAudio
│ ├── BlockingQueueSamplesProvider.cs
│ ├── INAudioFactory.cs
│ ├── INAudioSourceReader.cs
│ ├── NAudioFactory.cs
│ ├── NAudioSamplesProviderAdapter.cs
│ ├── NAudioService.cs
│ ├── NAudioSoundCaptureService.cs
│ ├── NAudioSourceReader.cs
│ ├── NAudioStreamingUrlReader.cs
│ ├── NAudioTagService.cs
│ ├── NAudioWaveFileUtility.cs
│ ├── Play
│ │ ├── INAudioPlayAudioFactory.cs
│ │ ├── NAudioPlayAudioFactory.cs
│ │ └── NAudioPlayAudioFileService.cs
│ ├── PlayFileAttributes.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── SoundFingerprinting.Audio.NAudio.csproj
├── SoundFingerprinting.Audio.NAudio.Test
│ ├── BlockingQueueSamplesProviderTest.cs
│ ├── NAudioSamplesProviderAdapterTest.cs
│ ├── NAudioServiceTest.cs
│ ├── NAudioSoundCaptureServiceTest.cs
│ ├── NAudioStreamUrlReaderTest.cs
│ ├── NAudioWaveFileUtilityTest.cs
│ ├── Play
│ │ ├── NAudioPlayAudioFileServiceTest.cs
│ │ └── TestWaveStream.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── SoundFingerprinting.Audio.NAudio.Test.csproj
├── SoundFingerprinting.sln
├── SoundFingerprinting.Tests
│ ├── AbstractTest.cs
│ ├── Integration
│ │ ├── FingerprintCommandBuilderIntTest.cs
│ │ ├── InMemoryModelServiceSerializationTest.cs
│ │ ├── InMemoryModelServiceTest.cs
│ │ ├── IntegrationWithSampleFilesTest.cs
│ │ ├── SoundFingerprintingAudioServiceIntTest.cs
│ │ ├── TestRunnerTest.cs
│ │ └── WaveFormatTest.cs
│ ├── NLog.config
│ ├── NLog.xsd
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SoundFingerprinting.Tests.csproj
│ ├── TestEnvironment
│ │ ├── chopinsamples.bin
│ │ └── chopin_short.wav
│ ├── TestUtilities.cs
│ └── Unit
│ ├── Audio
│ │ ├── QueueSamplesProvider.cs
│ │ ├── RealtimeAudioSamplesAggregatorTest.cs
│ │ ├── SamplesAggregatorTest.cs
│ │ ├── StrideTest.cs
│ │ └── TagInfoTest.cs
│ ├── Builder
│ │ ├── FingerprintCommandBuilderTest.cs
│ │ ├── QueryCommandBenchmark.cs
│ │ └── QueryCommandBuilderTest.cs
│ ├── Configuration
│ │ ├── MetaFieldsFilterTest.cs
│ │ ├── QueryConfigurationTest.cs
│ │ └── SpectrogramConfigTest.cs
│ ├── Content
│ │ ├── AudioTrackTest.cs
│ │ └── VideoTrackTest.cs
│ ├── DAO
│ │ ├── CompoundModelReferenceTest.cs
│ │ ├── Data
│ │ │ ├── FingerprintDataTest.cs
│ │ │ ├── SpectralImageDataTest.cs
│ │ │ ├── SubFingerprintDataTest.cs
│ │ │ └── TrackDataTest.cs
│ │ └── UIntModelReferenceTrackerTest.cs
│ ├── Data
│ │ └── HashesTest.cs
│ ├── FFT
│ │ ├── LogUtilityTest.cs
│ │ ├── LomontFFTTest.cs
│ │ ├── SpectrumServiceOctaveTest.cs
│ │ └── SpectrumServiceTest.cs
│ ├── FingerprintServiceTest.cs
│ ├── Image
│ │ └── ImageServiceTest.cs
│ ├── InMemory
│ │ ├── ProtoSerializerTest.cs
│ │ └── RAMStorageTest.cs
│ ├── LCS
│ │ ├── CoverageEstimatorTest.cs
│ │ ├── CoverageTest.cs
│ │ ├── MatchedWithExtensionsTest.cs
│ │ ├── QueryCoverageCalculatorTest.cs
│ │ └── QueryPathReconstructionStrategyTest.cs
│ ├── LSH
│ │ └── LocalitySensitiveHashingAlgorithmTest.cs
│ ├── Math
│ │ ├── FScoreTest.cs
│ │ ├── HammingDistanceResultStatisticsTest.cs
│ │ ├── HashConverterTest.cs
│ │ └── SimilarityUtilityTest.cs
│ ├── MinHash
│ │ ├── MinHashAlgorithmTest.cs
│ │ └── MinHashServiceTest.cs
│ ├── ModelServiceInfoTest.cs
│ ├── Query
│ │ ├── AVResultEntryCompletionStrategyTest.cs
│ │ ├── ConfidenceCalculatorTest.cs
│ │ ├── GapTest.cs
│ │ ├── OfflineStorage.cs
│ │ ├── QueryCommandTest.cs
│ │ ├── QueryMathTest.cs
│ │ ├── RealtimeQueryCommandTest.cs
│ │ ├── ResultEntryCompletionStrategyTest.cs
│ │ ├── ResultEntryConcatenatorTest.cs
│ │ └── StatefulRealtimeResultEntryAggregatorTest.cs
│ ├── Utils
│ │ ├── AbsComparatorTest.cs
│ │ ├── ArrayUtilsTest.cs
│ │ ├── AvQueryMatchSplitStrategyTest.cs
│ │ ├── FastFingerprintDescriptorTest.cs
│ │ ├── FingerprintDescriptorBenchmark.cs
│ │ ├── FingerprintDescriptorTest.cs
│ │ ├── QuickSelectAlgorithmTest.cs
│ │ ├── SubFingerprintGroupingCounterTest.cs
│ │ ├── TestRunnerScenarioValidatorTest.cs
│ │ └── TestRunnerUtilsTest.cs
│ ├── Wavelets
│ │ └── StandardHaarWaveletDecompositionTest.cs
│ └── Windows
│ └── HanningWindowTest.cs
└── stylecop.json
57 directories, 373 files
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论