Вопрос или проблема
Смотря на обнаружение звука до тех пор, пока не наступит тишина, я пришёл к команде rec recording.flac rate 32k silence -l 1 0.1 3% 1 3.0 3%
.
Я понимаю, что мое конкретное использование будет несколько иным: я действительно хочу записывать, пока не будет обнаружена тишина, но я также хочу верхний предел, скажем, 10-15 секунд, того, как долго будет продолжаться запись, прежде чем перейти к следующему. Я могу просто добавить команду timeout 15s
, что даст мне максимальное время речи в (15 секунд – ведущая тишина, которая будет варьироваться), но есть ли способ сказать sox, что мне нужны только первые x секунд записи, что дало бы мне максимальное время речи в 15 секунд независимо от ведущей тишины?
Вы можете использовать эффект trim
; например, trim 0 15
передаст только первые 15 секунд аудио. Вы можете поставить его перед или после silence
:
- Если перед
silence
, этот эффект будет «слышать» только 15 секунд и, возможно, выдаст меньше, если была тишина, которую нужно удалить из этих 15 секунд. - Если после
silence
,trim
будет «слышать» аудио с уже удалённой тишиной и остановится после 15 секунд не-тихого звука.
Ответ или решение
Да, вы можете организовать запись звука с использованием утилиты Sox, чтобы она останавливалась либо при обнаружении тишины, либо по достижении максимальной длительности записи. Для достижения этой цели вы можете воспользоваться командой, которая сочетает в себе возможности обнаружения тишины с ограничением по времени.
Пример команды, которую вы можете использовать, выглядит следующим образом:
timeout 15s rec recording.flac rate 32k silence -l 1 0.1 3% 1 3.0 3%
Подробное объяснение
-
Использование команды
timeout
:- Этот компонент команды ограничивает общее время выполнения записи, в данном случае — 15 секунд. Это означает, что после истечения 15 секунд программа автоматически завершится, даже если звук все еще записывается.
-
Команда
rec
:rec
— это основная команда для записи, которая будет сохранять звук в файлrecording.flac
. Вы можете изменить название файла и его формат в соответствии с вашими предпочтениями.
-
Параметр
rate 32k
:- Этот параметр устанавливает частоту дискретизации записи на 32 кГц, что является стандартом для многих аудиозаписей и обеспечивает хорошее качество звука.
-
Обнаружение тишины с помощью
silence
:- Параметры
silence -l 1 0.1 3% 1 3.0 3%
позволяют включить функции обнаружения тишины, чтобы завершить запись, как только будет обнаружено определенное количество тишины. В данном случае:-l 1
указывает, что будет использовано 1 уровень тишины.0.1
— это порог длительности звучания до определения тишины (0.1 секунды).3%
— порог уровня звука (звучание должно быть тише 3% от максимума).1 3.0 3%
— эти параметры указывают на информацию о тишине (3 секунды тишины на втором уровне для завершения записи).
- Параметры
Важные моменты
-
Порядок выполнения эффектов:
- Если вы хотите записывать звук, не превышая 15 секунд с учетом тишины, убедитесь, что
timeout
стоит в начале команды, чтобы избежать случайной перезаписи заданного времени. - Если вы хотите записывать те первые 15 секунд, даже если они тихие, используйте
trim 0 15
перед обработкой на предмет тишины:rec recording.flac rate 32k trim 0 15 silence -l 1 0.1 3% 1 3.0 3%
- Если вы хотите записывать звук, не превышая 15 секунд с учетом тишины, убедитесь, что
-
Эффективное использование:
- Вы можете использовать различные варианты, накладывая дополнительные эффекты и условия в зависимости от ваших предпочтений и требований к записи, такие как изменение формата или качества аудиофайла.
Таким образом, с помощью вышеописанной конфигурации команды вы можете эффективно записывать аудио, фиксируя его либо до наступления тишины, либо до достижения 15-секундного порога, что позволяет наилучшим образом управлять данными звуковыми записями.