Davinci Resolveの[字幕]にインポートしてテロップ作成を半自動化するためのファイルを音声ファイルから作成するPythonで制作する手順です。
[Davinci Resolve]字幕機能
Davinci Resolve で動画を編集する際に、タイムラインに[ビデオ]や[オーディオ]の他に[字幕]があります。
[エフェクト]機能の[テキスト]のように動画に文字を表示が追加できます。
また、テキスト形式でフォーマットに沿って作成するとタイムラインの時間に合わせて字幕(テロップ)を自動で挿入してくれます。
例えば、次のテキストファイルを拡張子(.srt)として保存します。
1
00:00:00,000 --> 00:00:01,000
ハロー
2
00:00:01,000 --> 00:00:02,000
ワールド
このファイルを[Davinci Resolve]で編集中のタイムラインにインポートすると、0~1秒の場所にに[ハロー]、1~2秒の場所に[ワールド]のテロップが挿入されます。
表示されるテキストのスタイルやフォントも[インスペクター]画面で変更が可能です。
音声ファイルからテキスト作成
今回は、テロップを作成する際に、面倒な[文字起こし]作業をPythonで自動化してみました。
Pythonで利用可能な[whisper]ライブラリで音声ファイルから読み取った会話などからテキストを作成します。
ライブラリ[whisper]は pip からインストールします。
pip install -U openai-whisper ffmpeg-python
タイムスタンプと音声ファイルからのテキストを組み合わせて “.srt” の形式に出力していきます。
import whisper
# モデルサイズ: tiny / base / small / medium / large
model = whisper.load_model("small")
# 音声ファイル
audio_path = "input.mp3"
text_path = "output.srt"
# 文字起こし + タイムスタンプ
result = model.transcribe(
audio_path,
language="ja",
verbose=False
)
# SRTファイルとして保存
with open(text_path, "w", encoding="utf-8") as f:
for i, segment in enumerate(result["segments"], start=1):
start = segment["start"]
end = segment["end"]
text = segment["text"].strip()
def format_time(t):
h = int(t // 3600)
m = int((t % 3600) // 60)
s = int(t % 60)
ms = int((t - int(t)) * 1000)
return f"{h:02}:{m:02}:{s:02},{ms:03}"
f.write(f"{i}\n")
f.write(f"{format_time(start)} --> {format_time(end)}\n")
f.write(f"{text}\n\n")
print("完了")
出力後に、タイムラインに[output.srt]をドラッグしてインポートすると所定のタイミングにテキストが字幕として表示されます。
多少の表示タイミングの”ズレ”や、テキストの間違いもありますが、タイムラインを眺めながらの打ち込み作業を考えると、かなり省力化ができました。
また[インスペクター]画面で文字のスタイルや書体を一括で変更できるのも地味に便利な点です。
まとめ
今回は短い記事ですが、Davinci Resolveの[字幕]機能にインポートできる形式のファイルをPythonで制作する手順について書きました。
動画の編集でテロップを入れる作業は、文字起こしや、表示タイミングなどタイムラインを見ながら行う面倒な作業です。
[字幕]機能は、動画の音声からテキストを作成してインポートできるのでテロップの入力作業をかなり効率化できます。
Davinci Resolveでインポートできる字幕用のファイルを作成したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
