
Youtube などで利用可能な字幕ファイルのsbv形式とvtt形式を Linux コマンドで手軽に変換する方法を記載。また、手軽に Excel 上などで編集できるよう、CSV形式に変換する方法についても記載しています。 cygwin を使うことで Windows 上でも実行可能です。
以下のようなコマンドで test-sbv.txt ファイルから test-vtt.txt ファイルを出力(変換)します。
echo WEBVTT > test-vtt.txt
echo Kind: captions >> test-vtt.txt
echo Language: ja >> test-vtt.txt
echo 0d0a | xxd -p -r >> test-vtt.txt
cat test.sbv-sbv.txt | sed -r "s/(^[0-9]+:[0-9]+:[0-9]+.[0-9]+),/\\1\ -->\ /g" >> test-vtt.txt
sbv形式から vtt 形式への変換で、字幕の中に単純な「,」(カンマ)が入っていた場合でも 問題なく変換できるようにしています。
このコマンドで、例えば下のような SBV 形式を VTT 形式に簡単に変換することができます。
変換前の例:
00:00:00.330,00:00:09.260
今日はお姉さんお兄さん
もしお暇でしたら私の怖い、不思議な、奇妙な
00:00:09.260,00:00:14.120
お話を聴いていいただけませんか
00:00:15.490,00:00:24.539
この裏庭への道を進んだ先が静かに話ができる秘密の場所です
:(以下、略)
変換後の例: 下に変換。
WEBVTT
Kind: captions
Language: ja
00:00:00.330 --> 00:00:09.260
今日はお姉さんお兄さん
もしお暇でしたら私の怖い、不思議な、奇妙な
00:00:09.260 --> 00:00:14.120
お話を聴いていいただけませんか
00:00:15.490 --> 00:00:24.539
この裏庭への道を進んだ先が静かに話ができる秘密の場所です
:(以下、略)
SBV形式の字幕データを以下のような CSV 形式に変換します。 エクセルなんかで字幕を処理するときに、CSV 形式だと扱いやすい時があったので備忘といています。
字幕の開始時刻, 字幕の終了時刻, 字幕の内容
以下のコマンドで変換します。
xxd -p -c 1000000 origin.sbv | sed s/0d0a0d0a/40404040/g | sed s/0d0a/2c/g | sed s/40404040/0d0a/g | xxd -p -r > convert.csv
字幕と字幕の切れ目を一時的に「@@@@」に変換することで、うまく一行で変換しています。 変換する対象の字幕テキストに文字列「@@@@」があるとうまく動かないのでご注意ください。
Windows 上で動作するバッチです。バッチに sbvファイルをドラッグ&ドロップすると、 同じファイル名で拡張子が「csv」のファイルがカレントディレクトリに出来上がります。
以下のプログラムをコピペして、適当に bat 拡張子で保存すると使い勝手が良いと思います!
cat %1 | sed -r "s/(^[0-9]+:[0-9]+:[0-9]+.[0-9]+),([0-9]+:[0-9]+:[0-9]+.[0-9]+)/\1\@@@\2@@@/g" | sed -r s/\,/、/g | xxd -p -c 100000000 | sed s/0a0a/40404040/g | sed s/0a//g | sed s/40404040/0d0a/g | sed s/404040/2c/g | xxd -p -r > "%~dpn1.csv"
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: