Comparing Two Audio Streams for Percent Match


Can Audacity be used to determine a percent match when comparing two audio streams? More specifically, can Audacity be used to compare stream B to stream A, and then stream C to stream A, such that one could determine whether B or C was the better match of a pronounced word “A”?

I found CompareAudio in the manual, and here’s the description:

CompareAudio - With two tracks selected, running this command compares the tracks sample by sample, and counts the number of samples whose absolute difference exceeds the given threshold. The total count is returned, as well as the number of seconds of audio that these samples represent.

From the description,it seems like each sample comparison is a True/False type comparison rather than a percentage.

One could certainly determine a percentage match across many samples, but ideally, there’d be a percentage comparison within each actual sample. Is there a way to achieve this with Audacity, and if so, how?

Thanks very much,


The short answer is no. Once you have one data point off, the difference is 100%.

You can really mess up the tools by having two copies of one song (for example). One might be a very tiny fraction of a second longer than the other. To your ear, they would be exactly the same song, but they would be 100% different to the analyzer tools. MP3 files are always different, even on exactly the same song.

What’s the actual job or goal?


Thanks Koz,

The actual job is this:

A word (“A”) is played back from a web app. A listener then tries to exactly pronounce the spoken word, i.e. exactly as he or she heard it played back. We’ll call this attempt at pronouncing the word, “B”. A second listener also tries to exactly pronounce the same word “A” and we’ll call this word “C”. The application would then calculate which user’s word, “B” or “C”, was the closest match to “A”.

Of course, this functionality could then be extended to promote competitions between two people trying to sing a played back song, etc.

Are you aware of any open source software that could be used to perform such a task?


The task you are describing is EXTREMELY complex.
See here for some relevant tools:
(this may also provide an idea of just how complex the task is).

Thanks for the pointer. I’ll check out the tools… Regards, -Bill