Сегодня я хочу поделиться с вами очень крутым Python инструмент, он называется Audio Слайсер. Основная функция этого гаджета — использование Обнаружения. тишины технология для обрезки аудиофайлов. существуют Последние 2.0 версии, ее скорость значительно улучшена (быстрее, чем в предыдущей версии 400 Времена! ), а также была улучшена логика резки и значительно снижена частота ошибок. если ты прав 1.0 Если вас интересует версия, вы можете перейти на GitHub Найдено наСтарая версия библиотеки кодов。также,Есть еще одинВерсия с графическим интерфейсом пользователя,Сделайте работу более удобной.
Audio Slicer Используйте среднеквадратичное значение (RMS), чтобы измерить, насколько тихий звук, и обнаружить тихие участки. Он считает каждый кадр (длина кадра установлена на hop size
)из RMS ценность и воля RMS значение ниже, чем порог
Все кадры считаются немыми.
Когда (озвученная) часть действительна с момента достижения последней версии минимальная длина min_length
,и обнаружил сегмент длиннее, чем Минимальный интервал min_interval
Звук будет отключен, за исключением тихой области. RMS за пределами кадра с наименьшим значением. Более длинные фрагменты молчания могут быть удалены.
Если вы планируете использовать API Python, вам нужно установить numpy:
pip install numpy
Если вы планируете использовать интерфейс командной строки (CLI), который необходимо установить librosa и soundfile:
pip install librosa
pip install soundfile
Альтернативно, вы можете установить все зависимости одновременно:
pip install -r requirements.txt
import librosa # Необязательный. используйте любую библиотеку, которая вам нравится, для чтения аудиофайлов.
import soundfile # Необязательный. используйте любую библиотеку, которая вам нравится, для записи аудиофайлов.
from slicer2 import Slicer
Аудио, Частота выборки = librosa.load('example.wav', sr=None, mono=False) # использовать librosa загружает аудиофайлы.
slicer = Slicer(
sr=Частота выборки,
threshold=-40,
min_length=5000,
min_interval=300,
hop_size=10,
max_sil_kept=500
)
chunks = slicer.slice(Аудио)
for i, фрагмент in enumerate(chunks):
if фрагмент.shape.length > 1:
фрагмент = фрагмент.T # Если Аудио стерео, поменяйте оси местами.
soundfile.write(f'clips/example_{i}.wav', фрагмент, Частота выборки) # usesoundfile сохраняет вырезанный аудиофайл.
Вы можете запустить скрипт через следующую командную строку:
python slicer2.py Аудио [--out OUT] [--db_thresh DB_THRESH] [--min_length MIN_LENGTH] [--min_interval MIN_INTERVAL] [--hop_size HOP_SIZE] [--max_sil_kept MAX_SIL_KEPT]
в Аудио
значит резатьиз Аудиодокумент,--out
По умолчанию Аудио Местосуществоватьиз Тот же каталог,Другие вариантыиз Значение по умолчанию указано выше.параметрчастьМесто Список。
существовать Intel i7 8750H CPU , этот скрипт работает быстрее, чем в реальном времени 400 Более чем раз. Скорость может варьироваться в зависимости от вашего CPU èДиск различается. хотя Slicer
Потокобезопасен, но многопоточность кажется ненужной из-за узких мест ввода-вывода.