SRT в речь: как превратить субтитры в звуковую дорожку
В файле субтитров уже есть всё, что нужно для озвучки: слова и момент, когда каждая реплика должна прозвучать. Превратив их в речь, вы получите для урока, шортса или переведённого видео звуковую дорожку, совпадающую с картинкой, не записав ни одной фразы.
Бесплатный движок SuperClonica озвучивает каждую реплику офлайн естественным голосом, а короткий скрипт на Python ставит её на своё время. В этом руководстве — скрипт, как уложить длинные реплики в их отрезки и как подложить дорожку под видео.
Что понадобится
Сам движок файлы SRT не читает: с этим справляются около двадцати строк на Python.
- Файл SRT: из видеоредактора, из автоматических субтитров или перевода.
- Бесплатный движок SuperClonica и Python 3.10 или новее: python -m pip install superclonica-cpu. numpy ставится вместе с ним.
- Голос: один из десяти стандартных, голос из каталога или ваш обученный голос.
- Видеокарта не нужна: хватит обычного процессора.
Послушайте реплику бесплатно онлайн
На странице любого голоса вставьте одну реплику из субтитров, от 30 до 100 символов, выберите язык и нажмите «Озвучить». Через несколько секунд вы услышите, как будет звучать видео, без регистрации.
От реплик к одной дорожке
Создайте движок один раз до цикла: загрузка занимает несколько секунд, а каждая фраза — доли секунды.
- Прочитайте файл: каждая реплика — это номер, строка со временем начала и конца и текст.
- Озвучьте каждую реплику: audio, sample_rate = tts.synthesize(text, voice="F2", lang="ru", seed=7).
- Создайте тихий массив numpy длиной в видео и прибавьте каждую фразу с того отсчёта, где начинается её реплика: время начала в секундах, умноженное на частоту дискретизации.
- Сохраните результат: tts.save("track.wav", track).
Реплики, которые не помещаются
Выведите длительность каждой озвученной фразы рядом с длительностью её реплики. Если речь длиннее отрезка, она наложится на следующую фразу. Сначала сократите текст; объедините две короткие реплики в одну; или создайте движок чуть быстрее, например Superclonica(speed=1.15), в допустимых пределах от 0,7 до 2,0. Одинаковые текст, голос и seed всегда дают одинаковый звук, поэтому можно исправить одну фразу и пересобрать дорожку.
Подложите голос под видео
Импортируйте track.wav в видеоредактор как звуковую дорожку или соедините его с видео одной командой: ffmpeg -i video.mp4 -i track.wav -map 0:v -map 1:a -c:v copy -c:a aac voiced.mp4. Оставьте исходный звук на второй дорожке, если под голосом нужны музыка или эффекты. Озвучивайте только свои видео или те, на которые у вас есть разрешение, и не используйте голос, имитирующий реального человека, без его согласия.