У меня есть прямая радиопередача, которую я пытаюсь захватить, используя rtl_fm и SoX. Источник приходит случайными всплесками по несколько часов с промежутками в днях или неделях между событиями. Я хотел бы записать каждое из событий в свой собственный аудиофайл, игнорируя многие часы молчания между событиями.
Из проведенного мною исследования должно работать следующее:
‘rtl_fm -f _____0000 -M fm -s 24k -l 45 -p 0 -g 38 | sox -r 24k -e signed -b 16 -c 1 -V1 -t raw - ~/___/___/____Radio_Recording_$(date+%Y-%m-%d_%H:%M:%S).mp3 silence 1 0.1 0.1% 1 00:02:00 0.1% : newfile : restart ‘
Запись должна начинаться после обнаружения 1/10-й секунды звука, остановка записи через 2 часа без перерыва тишина, сохраните файл, создайте новый файл, а затем снова начните прослушивать аудио.
Проблема в том, что он не перезапустится после сохранения первого файла. Он ожидает звука, записывает и отлично сохраняет первый файл, но не создает второй файл и не перезапускает запись. Единственное исключение - если период ожидания перед его сбросом составляет ровно 1 секунду, и в этот момент он будет циклически повторяться, как и ожидалось: ожидание звука, запись, сохранение и перезапуск.
Если у вас есть идеи о том, почему работает 1 секунда, а не какой-либо другой период молчания, или идеи о том, как ее исправить, мы будем благодарны за помощь.
Или если вы знаете совершенно другой способ автоматизации этот процесс, который требует очень мало вычислительной мощности, я открыт для предложений. В тесте концепции я использовал установку GQRX-PulseAudio-Audacity, но она использовала больше системных ресурсов, чем мне хотелось, и не была очень автоматизированной c или удобной для использования.