We have various wave files from live uncontrolled recordings that come in from one of our server side processes and most of them have good clear speech throughout. However, sometimes they are garbled, they have static, or the speech volume isn't loud enough. Is there an efficient method for determining if a recording is deemed "good" quality using C#? 

I thought about taking the spectogram of a known good recording and comparing to the spectogram of a bad recording but the recordings will have different speech each time so this might not work. I've looked into libraries like Bass.Net and NAudio, but audio processing is not my field of expertise. 

I could try comparing [audio fingerprints](http://www.codeproject.com/Articles/206507/Duplicates-detector-via-audio-fingerprinting), but I'm not entirely sure how this works. I saw that someone was attempting to compare two audio files using their audio fingerprint hashes and the Levenshtein Distance algorithm to find the degree of similarity between the two audio files. Unless the hashes produced by audio fingerprinting are similar between similar audio files, this method won't work.

Another thought of mine was to use some sort of speech recognition API for attempting to process speech and write a transcript of the audio to a text file. The problem is that speech recognition isn't extremely accurate and APIs like Microsoft's Speech API may still try to recognize speech even in a garbled recording or one with a bunch of static. I saw that Nuance has an [SDK](http://www.nuance.com/for-developers/dragon/server-sdk/index.htm) version of their speech recognition software, but I haven't had a chance to look at the SDK yet since they don't seem to offer a trial version of the SDK on their website.