ChatGPTのAPIと一緒に公開されたWhisper、いろんな方が3Dモデルとの会話に使っていたりするのを見て、なるほどさすがみんなが欲しいタイミングで出してきてるんだなと思いました。
せっかくなので勉強してみたいということでYou Tubeの音声をテキスト情報にしてみようと思います。
モデルによって出力や所要時間がどう違うのかも含めて試したことを共有したいと思います!
試したこと
Youtubeの音声をWhisperでテキスト化、pandasでデータフレームに格納
その際
- 所要時間
- 出来上がりの文章
についても比較しました。
使用したもの
Google Colab GPU T4
YouTube動画 ヨビノリさんの線形代数1 15分(約6000文字)
whisperモデル tiny, base, medium
音声抽出 pytube
それぞれ下記でインストールしてください。
$ pip install openai-whisper
$ pip install pytube
# コード全体像
from pytube import YouTube
video_url ='https://youtu.be/svm8hlhF8PA'
file = YouTube(video_url).streams.filter(only_audio=True).first().download(filename="audio.mp4")
import whisper
whisper_model = whisper.load_model("tiny")# change the model accordingly
transcription = whisper_model.transcribe(file)
import pandas as pd
# print as DataFrame
df = pd.DataFrame(transcription['segments'], columns=['start', 'end', 'text'])
print(df)
# or, print as String
print(transcription['text'])
先に結論。時間はかかるがミディアムが無難!
まずは所要時間です。
tiny 1分
base 1分
medium 4分
意外にもtinyとbaseはそこまで変わりませんでした。
mediumは4倍かかっていますが15分の動画で4分なら待てるかな、と思います。用途にもよりますね。
では文章の仕上がりを見てみましょう。
tiny
ちょっとまんと、終了くるよこう。おはよう。めたらかいだ。めてねえや。おはようさ、好きな数とかあるの?4906か。完成すね。はいということで今回から、先程は、新駅ライスを入門って連続を行き始めてくるんだけども、先程をするって、リケーのガツセイが出らくに入って、まず最初にやらされる数学の2つであるし、さらに、経済学部などから必須感覚にやつたいするんだね。これがどうして、文言を当たらず、オールジャンがあらわれすがくになってるか、っていうのは、今から話す。
うん、、控えめに言ってぶっ壊れてますね。笑
かなり考えながら読んでも元文章が見えてきません。
次に行ってみましょう!
base
ショートマンと収穫力をおいネタのかいネテネイヤお前さ、好きな数とかあるの496か完全すはい、ということで今回から先経来数リューモンって連続をおき始めてくんだけども先経来数って理計の学生が大学に入ってまず最初にやらされる数学の2つってなるしさらに今経済学分中の必要頑張くにやすいですよねこれがどうしてそれと文字はとはオールジャンが現れ数学になっているかというのは今から話す先経来数とは何かという話をで聞いてくれればその外観が使めるかなと思いますじゃあさっそ話していきましょう
だいぶ話が見えてきましたね!最初のコント部分はちょっと難しいですが、文脈が読める内容であればなんとかいけるかな。。GPTにむしろこれぶっ込んで意訳してもらうのもありかもしれないですね。
では最後、mediumいきましょう!
medium
ショートコント 修学旅行おい寝たのかよ寝てねぇやお前さ好きな数とかあんの496完全数はいということで今回から線形代数 流門って連続講義始めてくるんだけども線形代数って理系の学生が大学に入ってまず最初にやらされる数学の1つであるしさらには経済学部の中にある数学の1つであるしさらには経済学部の必修科目にあったりするとねこれがどうして分野とはずオールジャンルで現れる数学になっているかっていうのは今から話す線形代数とは何かっていう話を聞いてくれればその外観がつかめるかなと思いますじゃあ早速話していきましょう
おお。。!一気に完璧に近づきました!間違いあります?あ、流門っていうのがありますね。個人的にはこの程度なら全然問題ないかなと思いました。
まとめ
いかがでしたか?ちょっとtinyの使い道が分からないですが、おそらく短い文章の、しかも英語(別途tiny.enというモデルもあります)であれば精度もっと出るんでしょうね。
baseに関しては実装する内容によっては使えるんじゃないかなと。今考えてるのはこれをembeddingしたいので、無理くり突っ込んでもある程度宜しく解釈してくれるのであればいいのですが、ちょっと別で試したいと思います。
いまのところそのまま実用に耐えるクオリティなのはmediumですね。