Подтвердить что ты не робот

Как я могу удалить молчание из MP3 программно?

У меня есть файлы MP3, которые иногда имеют тишину в конце. Я хотел бы удалить эту тишину автоматически. Из того, что я могу сказать, это "идеальная" тишина (амплитуда 0), а не фоновый шум. Длина содержимого и тишина варьируются.

Я нашел несколько других вопросов об обрезке до первых 30 секунд или обрезке до X и X + N секунд используя ffmpeg. Я бы подумал, что я мог бы использовать подобный подход, если у меня есть способ найти, когда начинается тишина. Как я буду делать это программно?

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

end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3

Решение не должно использовать ffmpeg, но оно должно быть доступно на Ubuntu.

4b9b3361

Ответ 1

sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse

Это позволит обрезать любое молчание дольше чем 0,1 секунды из вашего файла. Если вас беспокоит только обрезка конца, это можно упростить, чтобы:

sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse

Подробный анализ того, как sox silence работает, можно найти здесь.

Ответ 2

Вероятно, вы ищете решение без потерь, то есть такое, которое не требует повторного кодирования (что снижает качество).

Я верю, что mp3splt - это то, что вы ищете. Его можно использовать из командной строки и графического интерфейса.

sudo aptitude install mp3splt mp3splt-gtk

должен работать на Debian и Ubuntu.

На странице man:

Вы также можете попытаться разделить файлы автоматически с обнаружением тишины (см. опцию -s), обрезать файлы, используя обнаружение молчания (см. параметр -r), или на фиксированную длину времени (см. -t опция)

Ответ 3

Посмотрите silencedetect FFmpeg аудио фильтр:

Обнаружение тишины в аудиопотоке.

Этот фильтр регистрирует сообщение, когда он обнаруживает, что входной аудиовыход меньше или равен значению допуска шума в течение продолжительности, большей или равной минимальной длительности обнаруженного шума.

Время и продолжительность печати выражаются в секундах.

У него есть параметры для настройки того, как тихо нужно что-то считать молчанием, и как долго должно быть отмечено молчание.