2016-04-30 5 views
0

Как написать программу java, которая начинает записывать звук, когда звук, записанный микрофоном, достаточно громкий, и останавливается, когда звук не громкий.Запись времени, определяемого объемом ввода

Другими словами, нет никакого ограничения по времени для записи - , когда волна заканчивается, программа прекращает запись

ответ

0

Хотя я не слишком знаком с Java Sound API, быстрый поиск Google по Java Sound API предоставляет много информации и фрагментов кода.

Вы можете использовать что-то вроде this

Для того, чтобы начать или остановить запись в зависимости от уровня громкости, можно вызвать метод getLevel() на объекте DataLine как условие до line.Start() и line.stop() для проверки текущего тома с вашего микрофона.

т.е.

if(line.getLevel() < 0.3){ 
    line.stop(); 

description of getLevel() method from javadocs Получает текущий уровень громкости для линии. Этот уровень является мерой амплитуды тока сигнала, Диапазон от 0.0 (тишина) до 1,0 (максимальная возможная амплитуда для звуковой волны). Единицы измеряют линейную амплитуду, а не децибелы.

+0

* «Чтобы начать или остановить запись на основе уровня громкости, вы можете вызвать метод getLevel() для объекта DataLine» * Это не принесет пользы. Это «уровень громкости», в котором линия установлена ​​и не изменяется (если ее не изменяет конечный пользователь или приложение). Чтобы получить уровень фактического звука, необходимо выполнить расчет RMS или дБ на данных. –