I am seeking to build an API that will tell me how strong one, or more, audio tones are inside an audio file. The API should support adding more audio format 'handlers'. It should be able to handle several types of audio encoding, but the code should be written that it is easy to (in the future) add other types of audio format handlers. The format handlers to be included in the API from the beginning are a few that are commonly used relevant to wav files for the encoding of typical music files. The developer to decides what these should be so long as above criteria is met.
e.g.: if [login to view URL] has a louder 1khz tone at the 1 minute mark than the [login to view URL] does the API needs to be able to provide those two numbers back to prove this.
***Given a 2 minute file, the API should answer these questions:***
1) At 1 minute mark in [login to view URL] file, was a 1khz tone present?
2) At 1 minute mark of [login to view URL] file, out of the 1khz and 2khz tones, which one was stronger?
In above examples the moment in time, the name of the file, and tones to be concerned with, should all be arguments that the API deals with.
The term 'strong' above can be defined in any meaningful way that is relevant to this type of data.
**It is extremely important to note that audio files will contain complex audio. **
It might be required that a single frequency tone must first be 'filtered out' of the signal before it can be measured for amplitude.
**Some Specs:**
*frequency range to be concerned with:* 100hz - 8khz
*max length of wav file to be to process:* 4 minutes.
*Shortest time to evaluate for a tone (frequency):* 1/10 second
*Longest time to evaluate for a tone (frequency):* 1 second
*Max number of tones to look for a specific time window:* 6
Work must include unit tests that prove the API can do the above tasks.