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

Хотелось бы шинкануть их на записи по <=20-25 секунд.

В принципе склоняюсь к варианту вручную разбить, но вдруг есть какая-то моделька/алгоритм готовые для подобного?

Как вижу, тут проблемы две:
- Надо бить по паузам, чтобы слово не залетало на границу (видимо, с VAD)
- Надо алайнить разметку с полученными отрезками заново

Отсюда два вопроса:
- Есть что посоветовать для ручной разметки быстренько такой штуки? (с аудио-редакторами особо не работал)
- Есть ли что-то, что автоматически такую задачу решает?

Заранее спасибо!

3 ответов

19 просмотров

Вот пример кода на питоне с помощью библиотеки pydub from pydub import AudioSegment from pydub.silence import split_on_silence from pydub import AudioSegment def split_audio_with_max_duration(input_file, output_directory, min_silence_len=2500, silence_thresh=-60, max_chunk_duration=15000): sound = AudioSegment.from_wav(input_file) # Splitting on silence audio_chunks = split_on_silence(sound, min_silence_len=min_silence_len, silence_thresh=silence_thresh) # split for max_chunk_duration final_audio_chunks = [] for chunk in audio_chunks: if len(chunk) > max_chunk_duration: num_subchunks = len(chunk) // max_chunk_duration + 1 subchunk_size = len(chunk) // num_subchunks for i in range(num_subchunks): start_idx = i * subchunk_size end_idx = (i + 1) * subchunk_size subchunk = chunk[start_idx:end_idx] final_audio_chunks.append(subchunk) else: final_audio_chunks.append(chunk) # Export wav for i, chunk in enumerate(final_audio_chunks): output_file = f"{output_directory}/chunk{i}.wav" print("Exporting file", output_file) chunk.export(output_file, format="wav") input_audio_file = "/content/seamless_communication/audio.wav" output_directory = "/content/seamless_communication/split_segments" split_audio_with_max_duration(input_audio_file, output_directory)

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
9
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Как думаете через какой сервис они верифицируют?
inc.
5
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Карта сайта