<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<link rel="self" type="application/atom+xml" href="https://mytts.info/app.php/feed/topic/90" />

	<title>MyTTS</title>
	<subtitle>Форум о преобразовании текста в речь</subtitle>
	<link href="https://mytts.info/index.php" />
	<updated>2018-12-01T15:01:57+03:00</updated>

	<author><name><![CDATA[MyTTS]]></name></author>
	<id>https://mytts.info/app.php/feed/topic/90</id>

		<entry>
		<author><name><![CDATA[Lecron]]></name></author>
		<updated>2018-12-01T15:01:57+03:00</updated>

		<published>2018-12-01T15:01:57+03:00</published>
		<id>https://mytts.info/viewtopic.php?t=90&amp;p=1129#p1129</id>
		<link href="https://mytts.info/viewtopic.php?t=90&amp;p=1129#p1129"/>
		<title type="html"><![CDATA[[FAQ] Можно ли в &quot;Балаболке&quot; создать видеофайл?]]></title>

		
		<content type="html" xml:base="https://mytts.info/viewtopic.php?t=90&amp;p=1129#p1129"><![CDATA[
Кстати, а не хотите внести опцию в программу, подпирающую костылем глюк ffmpeg-a? Я правда немного неверное его описал. ffmpeg не игнорирует последнюю позицию субтитров, а берет продолжительность ролика не из тайминга завершения показа, что логично, а из тайминга начала. Т.е. просто нужно добавить фейковую запись а-ля<div class="spoilwrapper" style="margin:1em 0;font-weight:normal;padding:4px 10px;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;color:#333"><div class="spoiltitle" style="margin:0;padding:0;width:100%"><span class="spoilbtn" style="margin:2px 5px;text-transform:uppercase;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;display:block;cursor:pointer;color:#333" data-show="► Показать" data-hide="▼ Скрыть">► Показать</span></div><div class="spoilcontent" style="color:#333;display:none;padding:5px;border-top:1px solid #ccc">2<br>00:00:06,663 --&gt; 00:00:11,302<br>Последний озвучиваемый текст.<br><br>3<br>00:00:11,302 --&gt; 00:00:00,000<br>Запись для указания продолжительности ролика. <br>Которая берется из первого значения времени. <br>Втрое может быть любым. Как и текст субтитра.</div></div><p>Статистика: Добавлено  <a href="https://mytts.info/memberlist.php?mode=viewprofile&amp;u=57">Lecron</a> — 01 дек 2018 15:01</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[balabolka]]></name></author>
		<updated>2018-12-01T12:33:40+03:00</updated>

		<published>2018-12-01T12:33:40+03:00</published>
		<id>https://mytts.info/viewtopic.php?t=90&amp;p=1125#p1125</id>
		<link href="https://mytts.info/viewtopic.php?t=90&amp;p=1125#p1125"/>
		<title type="html"><![CDATA[[FAQ] Можно ли в &quot;Балаболке&quot; создать видеофайл?]]></title>

		
		<content type="html" xml:base="https://mytts.info/viewtopic.php?t=90&amp;p=1125#p1125"><![CDATA[
Спасибо за примеры команд, это упрощает процесс создания видеофайла.<blockquote class="uncited"><div>Чтобы кодирование выполнялось быстро, практически на скорости кодирования аудио, можно указать параметр fps</div></blockquote>Да, в этом и заключается загвоздка: если кодируем видео с одним кадром в секунду, то, например, смена текста "вшитых" субтитров может происходить только один раз в секунду. А в файле субтитров указаны доли секунды, для более точного перехода от одной строки субтитров к другой.<br><br>Поэтому надо искать баланс: частота кадров в секунду должна быть такой, чтобы кодирование шло быстро, но и чтобы строки субтитров сменяли друг друга синхронно с речью. FPS=1, скорее всего, мало, FPS=25 много; надо искать середину (если нужны "вшитые" субтитры, "хардсаб").<p>Статистика: Добавлено  <a href="https://mytts.info/memberlist.php?mode=viewprofile&amp;u=52">balabolka</a> — 01 дек 2018 12:33</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Lecron]]></name></author>
		<updated>2018-11-30T14:57:18+03:00</updated>

		<published>2018-11-30T14:57:18+03:00</published>
		<id>https://mytts.info/viewtopic.php?t=90&amp;p=1115#p1115</id>
		<link href="https://mytts.info/viewtopic.php?t=90&amp;p=1115#p1115"/>
		<title type="html"><![CDATA[[FAQ] Можно ли в &quot;Балаболке&quot; создать видеофайл?]]></title>

		
		<content type="html" xml:base="https://mytts.info/viewtopic.php?t=90&amp;p=1115#p1115"><![CDATA[
Все было бы куда проще, если бы не глюк ffmpeg, с пропуском последней позиции субтитров, при указании параметра -shortest. Тогда можно было бы все сделать в одну строку, без предварительного создания пустых файлов.<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -f lavfi -i color=c=black:s=640x480 -i input.wav -i input.srt -c:v libx264 -tune stillimage -pix_fmt yuv420p -shortest  -c:a aac -b:a 128k out.mkv</code></pre></div>Впрочем, если из команды выкинуть -i test.srt, то слияние видео с аудио произойдет корректно. А субтитры прилепить потом.<br>Кстати, кодек лучше указывать явно. Тогда сразу можно будет указать профиль stillimage, который в случае слайдшоу самый значимый.<hr><br><br><span style="font-size:85%;line-height:116%"><span style="color:green">Отправлено спустя     18 минут 41 секунду:</span></span><br>Чтобы кодирование выполнялось быстро, практически на скорости кодирования аудио, можно указать параметр fps<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -f lavfi -i color=c=black:s=640x480 -i test.wav -vf fps=1 -c:v libx264 -tune stillimage -pix_fmt yuv420p -shortest  -c:a aac -b:a 128k out.mkv</code></pre></div>На стареньком i5 скорость достигла 90x (в 90 раз быстрее продолжительности аудио-трека)<p>Статистика: Добавлено  <a href="https://mytts.info/memberlist.php?mode=viewprofile&amp;u=57">Lecron</a> — 30 ноя 2018 14:57</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[balabolka]]></name></author>
		<updated>2018-11-29T17:08:41+03:00</updated>

		<published>2018-11-29T17:08:41+03:00</published>
		<id>https://mytts.info/viewtopic.php?t=90&amp;p=1102#p1102</id>
		<link href="https://mytts.info/viewtopic.php?t=90&amp;p=1102#p1102"/>
		<title type="html"><![CDATA[[FAQ] Можно ли в &quot;Балаболке&quot; создать видеофайл?]]></title>

		
		<content type="html" xml:base="https://mytts.info/viewtopic.php?t=90&amp;p=1102#p1102"><![CDATA[
Так как посетители форума заинтересовались возможностями библиотеки <a href="https://www.ffmpeg.org" class="postlink" target="_blank" rel="noopener noreferrer">FFmpeg</a>, то самое время вернуться к этому часто задаваемому вопросу. Программа "Балаболка" по-прежнему не может сама создать видеофайл с речью и текстом, но она способна генерировать главное - звуковой файл и файл субтитров; всё остальное сделает утилита ffmpeg.exe.<br><br><br><span style="font-size:150%;line-height:116%"><strong class="text-strong">Как создать видеофайл с речью</strong></span><br>Чтобы создать файл со звуковой дорожкой, достаточно подготовить заранее один кадр. Например, это будет черный прямоугольник, рисунок в формате PNG. Для тестов я использовал файл INPUT.PNG размером 800x450. Также, создал в "Балаболке" звуковой файл INPUT.WAV с речью и файл субтитров INPUT.SRT. Для того, чтобы "Балаболка" создавала субтитры для звукового файла, надо активировать настройку "<strong class="text-strong"><em class="text-italics">Создавать файл формата SRT</em></strong>" <em class="text-italics">(пункт главного меню "Настройки | Аудиофайлы", вкладка "LRC, SRT")</em>. Рекомендуется сохранять файл субтитров в кодировке UTF-8.<br><br>С помощью FFmpeg создал видеофайл со встроенными субтитрами, и тут меня ждал неприятный сюрприз: медиапроигрыватели отказывались показывать субтитры для этого видеофайла. Одни плееры вообще ничего не отрисовывали, другие показывали только первую строчку субтитров. Выглядело это так, как будто плееры выводили на экран один исходный кадр и больше не собирались ничего показывать (хотя при создании видеофайла была указана частота 25 кадров в секунду). <br><br>Не стал разбираться, что не так с указанными мной параметрами, а решил проблему по-другому: раз одного уникального видеокадра мало, надо подавать на вход FFmpeg два видеокадра. Создал <strong class="text-strong">анимированный GIF-файл с двумя одинаковыми кадрами</strong> - черные прямоугольники сменяют друг друга через короткие промежутки времени в бесконечном цикле. И уже именно файл INPUT.GIF стал основой для создания видеодорожки.<br><br>Команда на создание видеофайла выглядит так:<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -ignore_loop 0 -i input.gif -i input.wav -shortest -y input.mp4</code></pre></div><div class="spoilwrapper" style="margin:1em 0;font-weight:normal;padding:4px 10px;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;color:#333"><div class="spoiltitle" style="margin:0;padding:0;width:100%"><span class="spoilbtn" style="margin:2px 5px;text-transform:uppercase;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;display:block;cursor:pointer;color:#333" data-show="► Показать" data-hide="▼ Скрыть">► Показать</span></div><div class="spoilcontent" style="color:#333;display:none;padding:5px;border-top:1px solid #ccc"><strong class="text-strong">-ignore_loop 0</strong> - анимированный GIF будет воспроизводиться снова и снова (визуально это никак не проявит себя, два черных прямоугольника будут сменять друг друга - но зато видеоплееры будут корректно показывать субтитры);<br><strong class="text-strong">-shortest</strong> - видеофайл будет равен по продолжительности звуковому файлу;<br><strong class="text-strong">-y</strong> - перезаписывать видеофайл без подтверждения;</div></div>В качестве звуковой дорожки можно использовать файл формата WAV, так как FFmpeg сама выполнит перекодирование аудиоданных с помощью встроенного кодека.<br><br>Если нет необходимости просматривать сообщения, выдаваемые утилитой FFmpeg, можно отключить показ служебной информации с помощью параметров <strong class="text-strong">-v quiet</strong> или <strong class="text-strong">-loglevel panic</strong>:<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -ignore_loop 0 -i input.gif -i input.wav -shortest -y -v quiet input.mp4</code></pre></div>На этом можно было и остановиться: создан видеофайл с речью и пустым черным прямоугольником в качестве видео. Достаточно положить файл субтитров рядом с видеофайлом на диске, и любой современный видеоплеер сможет показать текст при воспроизведении видео. А можно "упаковать" субтитры внутрь видеофайла.<br><br>Есть два способа хранить текстовые субтитры внутри видеофайла:<ol style="list-style-type:decimal"><li>"Вшить" субтитры внутрь видеокадров (это называется "вшитые" или "жёсткие" субтитры,  "хардсаб"); субтитры станут частью рисунка видеокадра.</li><li>Вставить субтитры внутрь файла MKV, и они станут отдельной "дорожкой" (это называется "программные" или "мягкие" субтитры).</li></ol>Утилита FFmpeg позволяет создать оба вида субтитров в видеофайле.<br><br><br><span style="font-size:150%;line-height:116%"><strong class="text-strong">Как создать видеофайл с "вшитыми" субтитрами</strong></span><br>Можно использовать BAT-файл со следующими командами:<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -ignore_loop 0 -i input.gif -i input.wav -shortest -y input.mp4ffmpeg -i input.mp4 -vf subtitles=input.srt:force_style='Alignment=10,FontName=Tahoma,FontSize=30' -y output.mp4del input.mp4</code></pre></div><div class="spoilwrapper" style="margin:1em 0;font-weight:normal;padding:4px 10px;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;color:#333"><div class="spoiltitle" style="margin:0;padding:0;width:100%"><span class="spoilbtn" style="margin:2px 5px;text-transform:uppercase;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;display:block;cursor:pointer;color:#333" data-show="► Показать" data-hide="▼ Скрыть">► Показать</span></div><div class="spoilcontent" style="color:#333;display:none;padding:5px;border-top:1px solid #ccc"><strong class="text-strong">-vf subtitles</strong> - параметр для добавления субтитров;<br><strong class="text-strong">force_style</strong> - дополнительные настройки для субтитров: применяются те же параметры, что и для формата субтитров ASS. Например, значение параметра 'Alignment=10' означает, что текст будет отрисовываться в центре видеокадра по горизонтали и вертикали.</div></div>Такие субтитры хороши тем, что не требуют от видеоплеера никаких дополнительных усилий для показа. Но и качество изображения будет не идеальным, так как при кодировании видео могут возникнуть "артефакты".<br><br><br><span style="font-size:150%;line-height:116%"><strong class="text-strong">Как создать видеофайл с дорожкой субтитров</strong></span><br>Пример BAT-файла:<div class="codebox"><p>CODE: </p><pre><code>ffmpeg -ignore_loop 0 -i input.gif -i input.wav -shortest -y input.mp4ffmpeg -i input.srt input.assffmpeg -i input.mp4 -f ass -i input.ass -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy -c:s copy -disposition:s:0 default -y output.mkvdel input.mp4del input.ass</code></pre></div><div class="spoilwrapper" style="margin:1em 0;font-weight:normal;padding:4px 10px;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;color:#333"><div class="spoiltitle" style="margin:0;padding:0;width:100%"><span class="spoilbtn" style="margin:2px 5px;text-transform:uppercase;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;display:block;cursor:pointer;color:#333" data-show="► Показать" data-hide="▼ Скрыть">► Показать</span></div><div class="spoilcontent" style="color:#333;display:none;padding:5px;border-top:1px solid #ccc"><strong class="text-strong">-disposition:s:0 default</strong> - дорожка субтитров будет использоваться по умолчанию</div></div>Как можно заметить, будет выполнено преобразование субтитров из формата SRT в формат ASS. Это необязательная процедура, но я рекомендую ее осуществлять. Формат SRT - очень простой, он содержит лишь текст и метки времени. Формат ASS обладает значительно большими возможностями; подробнее о нем можно прочитать, например, <a href="http://subs.com.ru/page.php?al=ssa_description" class="postlink" target="_blank" rel="noopener noreferrer">здесь</a>. Получив файл субтитров в формате ASS, можно изменить оформление субтитров так, как Вам захочется, перед вставкой в видеофайл.<br><hr>Обращаю Ваше внимание, что я привел лишь <strong class="text-strong"><em class="text-italics">самые общие примеры</em></strong> команд для создания видеофайлов. Можно значительно расширить их: использовать различные кодеки или изменять настройки для того, чтобы добиться лучшего качества или меньшего размера видеофайла. Кодирование файла выполняется достаточно медленно, так что можно экспериментировать с многочисленными параметрами, чтобы ускорить этот процесс (с описанием параметров можно ознакомиться в <a href="https://www.ffmpeg.org/ffmpeg.html" class="postlink" target="_blank" rel="noopener noreferrer">документации</a> FFmpeg). Также, можно бесконечно заниматься изменением оформления субтитров (черные буквы на белом фоне, белые буквы на черном фоне, логотип в углу экрана, размер букв, шрифт и т.д.). Удачи в поисках наилучшего варианта.<p>Статистика: Добавлено  <a href="https://mytts.info/memberlist.php?mode=viewprofile&amp;u=52">balabolka</a> — 29 ноя 2018 17:08</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[balabolka]]></name></author>
		<updated>2018-06-27T15:29:38+03:00</updated>

		<published>2018-06-27T15:29:38+03:00</published>
		<id>https://mytts.info/viewtopic.php?t=90&amp;p=106#p106</id>
		<link href="https://mytts.info/viewtopic.php?t=90&amp;p=106#p106"/>
		<title type="html"><![CDATA[[FAQ] Можно ли в &quot;Балаболке&quot; создать видеофайл?]]></title>

		
		<content type="html" xml:base="https://mytts.info/viewtopic.php?t=90&amp;p=106#p106"><![CDATA[
<strong class="text-strong">Можно ли в программе "Балаболка" создать видеофайл, в котором аудиофайл с записанной речью стал бы звуковой дорожкой, а видеодорожка представляла собой текст, синхронизированный с речью?</strong><br><br><br>Нет, в программе такая функция отсутствует. Для этого пришлось бы добавить в программу возможности видеоредактора; также, потребуется установка кодека для сжатия видео (Xvid, DivX, x264 или другого). Есть более простой способ получить то, что необходимо.<br><br>Можно для каждого звукового файла создать файл в формате SRT (файл субтитров) или файл в формате LRC (файл текста с метками синхронизации с аудиофайлом). Для этого необходимо изменить настройки создания звуковых файлов при помощи пункта главного меню "<strong class="text-strong">Настройки | Аудиофайлы</strong>" (вкладка "<strong class="text-strong">LRC, SRT</strong>"). Звуковой файл можно воспроизвести несколькими способами:<ul><li>в программе-видеоплеере, используя файл формата SRT (например, <a href="http://www.kmplayer.com/" class="postlink" target="_blank" rel="noopener noreferrer">The KMPlayer</a> или <a href="http://www.videolan.org/vlc/" class="postlink" target="_blank" rel="noopener noreferrer">VLC Media Player</a>);</li><li>в аудиоплеере, используя файл формата LRC (например, <a href="https://www.foobar2000.org/" class="postlink" target="_blank" rel="noopener noreferrer">Foobar2000</a> с плагином <a href="http://www.foobar2000.org/components/view/foo_uie_lyrics3" class="postlink" target="_blank" rel="noopener noreferrer">Lyric Show Panel 3</a>);</li><li>в программе для караоке, используя файл формата LRC (например, <a href="http://www.karafun.com/karaokeplayer/" class="postlink" target="_blank" rel="noopener noreferrer">KaraFun Player</a>).</li></ul><p>Статистика: Добавлено  <a href="https://mytts.info/memberlist.php?mode=viewprofile&amp;u=52">balabolka</a> — 27 июн 2018 15:29</p><hr />
]]></content>
	</entry>
	</feed>
