Это зависит. Если цифровое аудио было сгенерировано синтетически (например, с помощью другой функции), и вы можете рассчитывать на тот факт, что в одном случае вы получите истинное цифровое молчание (обнуленные сэмплы), тогда решение состоит в том, чтобы просто проверить на обнуленные сэмплы над окном измерений. Все, кроме нуля, не является тишиной.
Я бы предположил, однако, что вы имеете дело с реальным звуком, записанным, скажем, с микрофона. Если это так, то измерение энергии во временном окне и сравнение ее с порогом действительно имеет смысл. Вам нужно будет определить два параметра:
- Пороговый уровень энергии
- Длина временного окна
Если пороговое значение слишком низкое, уровень ложных срабатываний будет слишком высоким; фоновый шум, который не является звуковым сигналом, может интерпретироваться как звуковой сигнал. И наоборот, если ваш порог слишком высок, ваша система может классифицировать звуковой сигнал как шум. К счастью, если вы делаете звук с достаточно низким фоновым шумом, ваша производительность не будет очень чувствительной к этому порогу.
Более длинная длина окна уменьшит эти ложные положительные / отрицательные значения, что сделает вашу систему более надежной, но ее использование может ухудшиться из-за слишком длинных окон. Например, автоматизированные телефонные системы классифицируют нажатия клавиш для помощи в навигации по меню. Если бы ему потребовалось, чтобы пользователь держал каждую клавишу по три секунды за раз, точность улучшалась бы, но за счет почти всего удобства использования.
Я призываю вас НЕ принимать решение, основываясь исключительно на одной максимальной выборке, как предложил Пол. Это полностью подрывает сопротивление ложным срабатываниям, обеспечиваемое длиной окна выборки.