🐦

PyautoguiでYoutube動画をGoogle Documentに文字起こしする

2021/09/19に公開

Youtube の動画を Google document に文字起こしするスクリプトを作りました。VB-Audio Virtual Cable で音声を入力に出力し、Google documentsに文字起こしします。
これで情報量の多い動画でも活字でインプットできます。

環境

  • Windows10 or Mac
  • VB-Audio Virtual Cable
  • python

VB-Audio Virtual Cableのインストール

VB-Audio Virtual Cableでソフトをインストールします。再生デバイスをVB-Audio Virtual Cableにすれば入力と出力がつながります。

スクリプト作成

Google documentの音声認識は5分経過すると、エラーが出てとまってしまいます。このエラーは避けられないので、GUIで作業しなければなりません。
そこでpyautoguiを用いてエラー画面が発生したときに所定の位置をクリックするようにしておきます。

以下のスクリプトでは290秒間待機し、音声認識のエラーが発生したときに出現するリロードボタンが出たときに自動でクリックし再び音声認識を開始するスクリプトです。

autotext.py
import pyautogui
import cv2
import time

# Google documentのurl
DOC_URL = "https://docs.google.com/document/d/your_document/edit"
# リロードボタンの画像
IMAGE_PATH = "path/to/reload_button.png"

pyautogui.FAILSAFE = True
# 5min error
num_reload = 0
while True:
    print(f"Reload num = {num_reload}")
    # 290秒待機
    time.sleep(290)
    button_object = None
    # ボタンを検出
    while button_object==None:
        button_object = pyautogui.locateOnScreen(IMAGE_PATH)
    print(button_object.left)
    # ボタンの中央に移動
    pyautogui.moveTo(button_object.left/2+50, button_object.top/2+20)
    # エラー解除
    pyautogui.click()
    # リロード時間
    time.sleep(2)
    # カーソルを文末に移動
    pyautogui.hotkey("command", "down")
    # リロードしたことを追記
    pyautogui.typewrite(f"\n[Reload{num_reload + 1}]\n")
    # 音声認識開始
    pyautogui.hotkey("command", "shift", "s")
    num_reload += 1

reload_button.png
リロードボタン

実行

  1. 出力先をVB-Audio Virtual Cableにする。
  2. Google documentを開く。
  3. スクリプトを実行する。
python autotext.py
  1. Youtube動画を再生する。
  2. Google document の音声認識を始める。Ctrl+Shift+s

著作権の都合上文字起こしの結果は載せられませんが、非常に高い精度で翻訳できます。

ひろゆきさんの動画を文字起こししてみる

ひろゆきさんの動画を1時間文字起こししたところ、10ページにわたりびっしりと文字が起こされていました。文字数にすると19,600字です。配信で1時間の間これだけ話すのですから人が集まりますね。
ちなみにほかのYoutuberの方の動画も文字起こしして、1秒間の文字数(wps)を比較しましたがひろゆきさんがトップでした。これだけ早口で話題に尽きないのですから、おそるべし。

注意

文字起こしした文章を転載することは著作権法に違反する恐れがありますのでお気を付けください。

Discussion