Open1
youtube音声文字起こし

試したこと
- google colabでpython動かす
- youtube_transaction_apiだと精度高くなく、それを要約しても関係ない内容になる
- youtube_transaction_apiの仕組み:動画ページから字幕のメタデータ(トラック一覧と取得用URL)を取得し、そのURLへアクセスして字幕本文を取得する
-
__iter__
:イテレータを返すメソッド- https://qiita.com/Tadataka_Takahashi/items/c576cffb2f0e9d2a2baa
- 大量のデータを扱う際、全てのデータをメモリに読み込むのではなく、イテレータを使用することで効率的に処理できる
-
with
:ファイル操作や通信などの開始時の前処理と終了時の後処理など必須となる処理を自動で実行してくれる -
def __init__(self, name)
:selfとはクラス内のプロパティやメソッドにアクセスするためのもの、self.name = name
でクラスプロパティのnameにnameを代入できる
- 精度を上げるために試したいこと
- whisperが精度高い:youtubeから音声ダウンロード要、計算リソース要、OSSなら無料
- youtubeからのダウンロードが手間、cookieが必要だったりやりすぎるとipやアカウント凍結の可能性あり
- VOSK:オフラインで動作、大きいモデルなら精度上がる可能性、句読点や文体は付加されないため、後処理要
- GPTベースの文章整形APIで書き言葉にする
- whisperが精度高い:youtubeから音声ダウンロード要、計算リソース要、OSSなら無料
pip install youtube_transcript_api
pip install transformers[sentencepiece]
from youtube_transcript_api import YouTubeTranscriptApi
# 対象のYouTube動画のIDを指定
video_id = 'lG33fdHNRys'
# 日本語の字幕を取得
transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['ja'])
# 字幕データを表示
print(transcript)
# 字幕テキストを結合して一つの文字列にする
transcript_text = ' '.join([item['text'] for item in transcript])
# 加工後のテキストを表示
print(transcript_text)
from transformers import pipeline
# 日本語要約モデルのパイプラインをロード(例:tsmatz/mt5_summarize_japanese)
summarizer = pipeline("summarization", model="tsmatz/mt5_summarize_japanese")
summary = summarizer(transcript_text, max_length=100, min_length=30, do_sample=False)
print(summary[0]['summary_text'])