Мне не известна библиотека, которая будет обнаруживать тишину непосредственно в данных, закодированных в формате MP3, поскольку ее нетривиальная задача - обнаружить тишину без предварительной распаковки. К счастью, это легко найти библиотеки, которые декодируют файлы MP3 и получают к ним доступ как данные PCM, и это тривиально для обнаружения молчания в данных PCM. Вот одна такая библиотека для C #, которую я нашел, но я уверен, что есть тонны: http://www.robburke.net/mle/mp3sharp/
Как только вы расшифруете данные, у вас будет список образцов PCM. В самой простой форме алгоритм, который вам необходим для обнаружения молчания, заключается в простом анализе небольших фрагментов (может быть от 0,25 до нескольких секунд) и убедитесь, что абсолютное значение каждого сэмпла в блоке равно ниже порога. Используемое вами пороговое значение определяет, насколько «тихий» звук должен считаться тишиной, а размер порции определяет, как долго громкость должна быть ниже этого порога, чтобы считаться тишиной (Если вы используете очень короткие порции, вы будете получить много ложных срабатываний из-за выборок около пересечения нуля, но должно быть в порядке .25 с или выше. У базового подхода есть улучшения, такие как использование гистореза (который в основном использует два порога, один для перехода в тишину и один для перехода из тишины) и фильтрации.
К сожалению, я не знаю библиотеки для C ++ или C #, которая реализует обнаружение уровня из рук в руки, и в Google ничего не возникает, но по крайней мере для простой версии ее довольно легко кодировать.
Редактировать: Кроме того, эта библиотека кажется интересной: http://naudio.codeplex.com/
Также, хотя этот вопрос и не является дублирующим вопросом, ответы здесь будут вам полезны:
Обнаружение звука тишины в файлах WAV с использованием C #