РУКОВОДСТВО

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. Оставьте исходный звук на второй дорожке, если под голосом нужны музыка или эффекты. Озвучивайте только свои видео или те, на которые у вас есть разрешение, и не используйте голос, имитирующий реального человека, без его согласия.