こんにちは、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情報の取得手順」については、こちらの記事で詳しく解説しています。
【参考】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)
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら