Intereting Posts
Аутентификация X11 не работает в `sudo sux / sudo su`, но работает в` sux / su.` Почему? Восстановление переписанных метаданных LVM privoxy не может выполнять никаких дополнительных подключений Fedora25: SD cauing OS Freeze: dmesg mmc0 error 110 Почему большинство дистрибутивов сети UEFI и grub? Изменение значения systemd.service TimeoutSec на «бесконечность» не влияет присвоение переменной environement, за которой следует команда Как вы отслеживаете использование памяти в сценарии ksh93 Bash globs как аргументы без файла. Пример: apt-get remove pkg- * solaris + fit egrep для solaris Как поменять местами два поля, разделенные обратной косой чертой, и вывести их, разделенные знаком? Что означает «func 08 lookup от nouveau», «-2» означает? Как заставить WM (metacity) Gnome открыть окно программы на определенном мониторе? Ядро Linux IPv6 поиск маршрута – как он работает? Каковы все возможные значения для параметра «Тип =» в файле службы .desktop в KDE / Dolphin?

sox: Разделить звук на тишине, но молчать

У меня есть несколько аудиокниг, которые хранятся в больших mp3-файлах. И я пытаюсь разбить эти большие mp3-файлы на несколько небольших файлов.

Я нашел инструмент, который может обнаруживать тишину в аудиофайлах и разделять аудиофайлы на основе этого «разделителя».

Вот пример:

sox -V3 audiobook.mp3 audiobook_part_.mp3 \ silence 1 0.5 0.1% 1 0.5 0.1% : newfile : restart 

Это будет в основном разделять audiobook.mp3 на audiobook_part_001.mp3 , audiobook_part_002.mp3 , … где тишина> = 0,5 секунды.

Теперь проблема состоит в том, что эта команда не только разбивает файл, но и снимает тишину.

Поэтому, когда вы воспроизводите новые файлы в списке воспроизведения, звук треков / абзацев сжимается вместе.

Итак, как вы можете сообщать sox только разделить файл, но сохранить тишину (в конце каждого трека)?

Вы можете сохранить все паузы в разделенных частях с небольшими изменениями. Начиная с вашей исходной команды:

 silence 1 0.5 0.1% 1 0.5 0.1% 

Первый триплет значений означает удаление тишины, если таковая имеется, в начале до 0,5 секунд звука выше 0,1%. Второе триплетное средство останавливается, когда есть минимум 5 секунд молчания ниже .1%. Остальная часть вашей команды : newfile : restart , затем запускает новый выходной файл и снова начинает искать звук в начале. Таким образом, первый файл заканчивается, когда начинается тишина, и второй файл начинается, когда тишина заканчивается.

Простейшим вариантом для улучшения этого является silence -l . Он сохранит 5 секунд молчания, вызвавшего конец файла. К сожалению, любое молчание будет удалено, потому что это начало следующего файла. Легкий способ сохранить больший зазор – объединить -l с более длительным временем обнаружения, например, 2 секунды:

 silence -l 1 0.5 0.1% 1 2.0 0.1% 

Теперь вы будете расколоты, если будет хотя бы 2 секунды молчания, но вы сохраните первые 2 секунды пробела. Чтобы избежать потери тишины, просто удалите обнаружение молчания в начале. Вам нужно заменить триплет на один 0 :

 silence -l 0 1 2.0 0.1% 

Если вы хотите играть с простыми звуковыми файлами, чтобы увидеть, как справляется с ситуациями sox , вы можете легко создать 2 звуковых файла, один из которых состоит из 1 секунды тона, а один из которых состоит из 1 секунды молчания, а затем объедините их вместе, как вы пожелаете раньше представляя результат в качестве вклада в эффект silence . Например, создайте:

 sox -n gap.wav trim 0 1 sox -n tone.wav synth 1.001t sine C5 

затем присоедините тональный тон-тон-зазор и создайте out.wav используя свой эффект, и прислушайтесь к результату:

 sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1% play out.wav