Pythonを使った動画の文字起こし自動化|サクッと始める字幕作成術

Pythonで動画の文字起こしを自動化することって可能なのかな…。字幕をつける作業がもっと簡単になったら嬉しいんだけど…。
猫男
猫男
catman
catman
その願い、catmanに任せるんだ。PythonとGoogle Speech-to-Text APIを活用すれば、動画から文字を起こして字幕化する自動化が可能だよう。

 

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が出力されるファイル名です。

 

まずは動画から音声を分離できるんですね!これで文字起こしの準備が進められますね。
猫男
猫男
catman
catman
そうだよう。音声ファイルができたら、次はその音声を文字に変換していこう。

 

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という字幕ファイルが作成されます。

 

コードの解説

各文字起こし部分は辞書形式で保持され、開始時間、終了時間、テキストを持たせます。

字幕ファイルには、各字幕エントリーの順序、タイムスタンプ範囲、字幕テキストを記述します。

 

文字起こし結果から字幕ファイルを簡単に作れるんですね!これは作業がはかどりそうです。
猫男
猫男
catman
catman
そうだよう。Pythonでの自動化で、字幕作成の効率が大幅に上がるんだ。ぜひ試してみてほしい。

 

まとめ

PythonとGoogle Speech-to-Text APIを活用することで、動画からの文字起こしと字幕作成が非常に効率化されます。

まとめると以下のステップで進めます:

  • ffmpegで動画から音声を抽出する
  • Google Speech-to-Text APIで音声から文字起こしを行う
  • Pythonで文字起こし結果を字幕ファイルに変換する

これにより、動画コンテンツの利便性が向上し、字幕付きの動画を手軽に作成できるようになります。

ぜひ、この方法を使って動画操作の自動化に挑戦してみてください。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。