【Python】YouTube動画の文字起こし方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • PythonでYouTube動画の音声を文字起こしする方法が知りたい
目次

【Python】YouTube動画からテキスト情報を抽出する方法

本記事ではPythonを用いてYouTube動画の音声を文字起こしできる方法を2つご紹介します。

1つ目の方法は、youtube-transcript-apiを用いた方法であり、無料で利用できる一方、若干文字起こし精度が低いという特徴があります。ただし、YouTube動画の大枠を掴みたいレベルで良ければ十分に利用可能な方法です。

2つ目の方法は、ChatGPTで有名なOpenAI社が提供するWhisper APIを利用する方法です。こちらはAPI利用が有料である一方、非常に高い精度の文字起こしが期待できます。

方法文字起こしの精度価格
youtube-transcript-api無料
OpenAI Whisper有料

【方法1】youtube-transcript-apiを用いた文字起こし

youtube-transcript-apiを利用した方法についてご紹介します。

ライブラリのインストール

まず、文字起こしに利用するPythonライブラリをインストールします。

pip install langchain langchain-community youtube-transcript-api

文字起こしの実行

youtube-transcript-apiを用いた文字起こしを行うには、次のようなコードを実行しましょう。

YOUTUBE_URLに文字起こししたいYouTubeリンクを指定します。

from langchain_community.document_loaders import YoutubeLoader

# YouTube URL
YOUTUBE_URL = "https://www.youtube.com/watch?v=xxxxx"

# ===========================================
# YouTube文字起こし
# ===========================================

loader = YoutubeLoader.from_youtube_url(
    YOUTUBE_URL,          # YouTube URL
    add_video_info=False, # 動画情報の取得有無
    language=["en"],      # 動画の言語
    translation="ja",     # 翻訳言語
    )

# ===========================================
# テキスト出力
# ===========================================

documents = loader.load()
content   = documents[0].page_content
print(content)

【方法2】OpenAI Whisperモデルを用いた文字起こし

OpenAI社が提供するWhisper APIを利用した方法についてご紹介します。

ライブラリのインストール

まず、文字起こしに利用するPythonライブラリをインストールします。

pip install openai yt_dlp

【参考】OpenAI社のAPI利用方法

本記事ではChatGPTを用いたPythonプログラミングについて解説します。その際、Open AIが提供するAPI情報が必要になります。「ChatGPTの概要」および「API情報の取得手順」については、こちらの記事で詳しく解説しています。

あわせて読みたい
【Python×ChatGPT】チャットボット作成入門|OpenAI APIの利用申請手順も解説 「ChatGPT APIの利用手順」と「PythonでChatGPT APIを呼び出し、チャットボットを作成する方法」についてそれぞれ解説します。

【参考】ChatGPTを詳しく学びたい方向けの学習講座

ChatGPTを詳しく学びたい方向けに安価で学べるオンライン講座も併せてご紹介します。

文字起こしの実行

文字起こしを行うには、次のようなコードを実行しましょう。

youtube_urlに文字起こししたいYouTubeリンクを指定します。API_KeyにはOpenAI社が提供するAPIキーを指定します。

import yt_dlp
from openai import OpenAI
from time  import sleep

# ================================================
# YouTube URL
# ================================================

# YouTube
youtube_url = "https://www.youtube.com/watch?v=ID"
output_path = "my_audio"

# OpenAI API_Key
API_Key    = "....."

# ================================================
# 関数
# ================================================

# YouTube動画をオーディオファイルとして保存
def download_audio_with_ytdlp(url:str, output_file:str):
    ydl_opts = {
        'format': 'bestaudio/best',
        'outtmpl': output_file,
        'postprocessors': [{
                'key': 'FFmpegExtractAudio',
                'preferredcodec': 'mp3',
                'preferredquality': '192',
            }],
        }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

# Speech-to-Text関数
def speech_to_text(filepath:str)->str:
    # オーディオファイルを開く
    extension  = ".mp3"
    audio_file = open(filepath+extension, "rb")
    # GPTクライアント生成
    client     = OpenAI(api_key=API_Key)
    # Speech to Text変換
    response   = client.audio.transcriptions.create(
                                  model  =  "whisper-1", # Speech-to-Textモデル
                                  file   =  audio_file,  # オーディオファイル
                                )
    # テキスト文章
    result = response.text
    return result

# ================================================
# YouTube動画を文字起こし
# ================================================

# オーディオファイル保存
download_audio_with_ytdlp(youtube_url, output_path)

# 関数実行
sleep(3)
result = speech_to_text(output_path)
print(result)

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次