Pythonを使った動画の文字起こし自動化|サクッと始める字幕作成術
Pythonで動画から文字起こしを始めよう
Pythonを利用して、動画の音声から自動的に文字起こしを行い、字幕を作成する方法を紹介します。
これにより、手間を省きながら効率的に動画を活用することが可能です。
必要なツールとAPI
動画から文字起こしを行うためには、以下のツールとAPIを準備します。
Python:プログラミング言語です。音声処理やAPIの操作に使います。
Google Cloud Speech-to-Text API:音声を文字に変換するクラウドサービスです。
Pythonで音声ファイルを準備する
まずは動画ファイルから音声を抽出する必要があります。
音声ファイルを用意できたら、Google Cloud Speech-to-Text APIで文字起こしを実行します。
ffmpegで音声を抽出する
動画ファイルから音声を抽出するために、ffmpegを使用します。
import subprocess
video_path = "video.mp4"
audio_path = "audio.wav"
command = [
"ffmpeg",
"-i", video_path,
"-q:a", "0",
"-map", "a",
audio_path
]
subprocess.run(command)
このコードを実行すると、video.mp4からaudio.wavという音声ファイルが作成されます。
コードの解説
ffmpegは、動画や音声の変換に使われるツールです。-i video.mp4で入力する動画ファイルを指定します。
-q:a 0は、音声の品質を保持するための指定です。
-map aで、音声ストリームのみを選択します。
audio.wavが出力されるファイル名です。
Google Speech-to-Text APIで文字起こし
音声ファイルをGoogle Speech-to-Text APIに送り、文字起こしを実行する方法です。
APIの利用準備
音声ファイルを文字に変換するために、まずGoogle Cloud PlatformでAPIキーを取得します。
次に、PythonからAPIを呼び出すために、google-cloud-speechモジュールをインストールします。
pip install google-cloud-speech
インストール完了後、APIキーを設定します。
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your-service-account-file.json"
Pythonコードで文字起こしを実行する
from google.cloud import speech
client = speech.SpeechClient()
with open("audio.wav", "rb") as audio_file:
content = audio_file.read()
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=44100,
language_code="ja-JP"
)
response = client.recognize(config=config, audio=audio)
for result in response.results:
print("Transcript: {}".format(result.alternatives[0].transcript))
このコードを実行すると、音声の文字起こし結果が表示されます。
コードの解説
speech.SpeechClient()は、Google Cloud Speech-to-Textサービスとの通信に使用します。
audio = speech.RecognitionAudio(content=content)で、音声データをAPI用に準備します。
configオブジェクトでは、音声ファイルの特性を指定します。language_codeは入力言語を指定します。
client.recognize()で文字起こしを実行します。
字幕ファイルを作成する
取得した文字起こし結果を使って、字幕ファイルを作成します。
字幕ファイルを生成するPythonコード
transcripts = [
{"start": "00:00:01,000", "end": "00:00:05,000", "text": "こんにちは。"},
{"start": "00:00:06,000", "end": "00:00:10,000", "text": "Pythonで字幕を作成しています。"}
]
with open("subtitles.srt", "w") as subtitle_file:
for i, transcript in enumerate(transcripts, start=1):
subtitle_file.write(f"{i}\n")
subtitle_file.write(f"{transcript['start']} --> {transcript['end']}\n")
subtitle_file.write(f"{transcript['text']}\n\n")
このコードを実行すると、subtitles.srtという字幕ファイルが作成されます。
コードの解説
各文字起こし部分は辞書形式で保持され、開始時間、終了時間、テキストを持たせます。
字幕ファイルには、各字幕エントリーの順序、タイムスタンプ範囲、字幕テキストを記述します。
まとめ
PythonとGoogle Speech-to-Text APIを活用することで、動画からの文字起こしと字幕作成が非常に効率化されます。
まとめると以下のステップで進めます:
- ffmpegで動画から音声を抽出する
- Google Speech-to-Text APIで音声から文字起こしを行う
- Pythonで文字起こし結果を字幕ファイルに変換する
これにより、動画コンテンツの利便性が向上し、字幕付きの動画を手軽に作成できるようになります。
ぜひ、この方法を使って動画操作の自動化に挑戦してみてください。