We want an audio detection subsystem capable of identifying the appearance of full or parts of previously processed media. Example of use would be detecting parts of songs in a recording of radio broadcast.
## Deliverables
?
Audio Detection Subsystem Specs
This spec document define how an audio detection subsystem should behave.
Performance Profile
Fingerprint creation in x10 or better (1 minute media file analyzed into a fingerprint file in 6 seconds or less)
Fingerprint size is 5% or less of original audio media (1MB audio/video file containing 100KB audio data producing fingerprint file of 5KB or less)
Engine processing of newly added or removed single fingerprint in 5 sec or less
Detection of 60 seconds media for all appearance of fingerprints from a total of 60 minutes of reference content in 60 seconds
Accuracy of content within 5 seconds of start and length of correct content appearance
Fingerprint Creation Utility
Produce fingerprint used for later detection from a specified .wav, .wmv, .wma or .mp4 file.
Syntax: CreateFingerprint <source-media-file-path> <target-fingerprint-file-path>
Example: CreateFingerprint c:\recordings\[login to view URL] d:\fingerprints\[login to view URL]
Audio Detection Engine
Pre-load specified fingerprints from directory and all its nested sub-directories, monitor that directory and add and remove fingerprints as the directory content changes. The engine should be called by some IPC mechanism (pipes, sockets or otherwise) from the detector (see below) and return the detection results in the same manner.
Syntax: DetectionEngine <target-fingerprint-file-path>
Example: DetectionEngine d:\fingerprints\[login to view URL]
Fingerprint Detection Utility
Detect partial fingerprint appearances by scanning a specified media file, calling the detection engine (above), and produce a detection list to the standard output and/or a specified database.
Syntax: DetectMedia <source-media-file-path>
<fingerprint-file><tab><start-position-in-secs><tab><length-in-secs> [-stdout] [-writedb:<host>:<db-name>:<user>:<pwd>]
Example: DetectMedia c:\recordings\[login to view URL] d:\fingerprints\[login to view URL] -stdout
[login to view URL]\t10.6\t26.8\n
[login to view URL]\t3.1\t42.6\n