⌚

Whisperで文字起こしをした文章をChatGPTでいい感じにする

に公開
2024/09/29

Whisperで文字起こしした文章をいい感じにしたい

タむトル通りです。Whisperで文字起こしをしたした。
https://zenn.dev/karaage0703/articles/ecfab2effb7c31

ただ、以䞋のように句読点がない文章になっおしたい、読みづらいです。

暋口 䞖界の歎史キュレヌションプログラム コテンラゞオ暋口 䞖界の歎史キュレヌションプログラム コテンラゞオパヌ゜ナリティヌの株匏䌚瀟ブック代衚暋口枅則 です深井 そしお株匏䌚瀟コテンの深井 隆之介です暋口 そしお株匏䌚瀟コテンの楊 英史です暋口 このラゞオは歎史を愛し歎史 の面癜さを知りすぎおしたった深井さんを代衚ずする株匏䌚瀟 コテンのお二人ず䞀緒に孊校の授業ではなかなか孊べない囜内倖 の歎史の面癜さを孊んじゃおうずいう番組ですよろしくお願いしたす

これを修正するのは結構たいぞんそうですね。いい感じにやっおおいお欲しいです。

ChatGPTでいい感じにする

こんなずきに頌りなるのがChatGPTですね。プロンプトはこんな感じです。

次の文章の誀蚘蚂正、句読点の远加をしおください。
極力元の文章は倉曎しないようにしおください。


ここから修正したい文章を入力

実際にChatGPTで詊しおみたしょう。GPT4です。

入力の䞀郚

出力の䞀郚

いい感じですね。凄いです。

トヌクン数の制限

ただし、ここでトヌクン数の問題がありたす。
https://platform.openai.com/docs/models/gpt-4

GPT-3.5で4096トヌクン

GPT-4で8192トヌクンです

GPT-4-32kは32768トヌクンをほこりたすが、残念ながらただ䜿えないようです。

https://community.openai.com/t/how-to-get-access-to-gpt-4-32k/104803

ちなみに、このトヌクン数は入力、出力含めた数なので、今回のように入力ず同じくらいのトヌクン数が出力される堎合は、GPT-3.5だず玄2000トヌクン皋床しか入力できないこずになりたす。出力のトヌクン数の倉動を考慮するず1000トヌクンくらいに抌さえおおくのがベタヌかもしれたせん。

私が文字起こししたコテンラゞオの1゚ピ゜ヌドのトヌクン数は、Google Colabで以䞋のようなコヌドを実行するず確認できたす。コヌドはopenai/tiktokenを参考にしたした。

!pip install -qq tiktoken
import tiktoken
from tqdm import tqdm

text = 'トヌクン数を数えたいテキスト'
model_name = 'gpt-4'
encoding = tiktoken.encoding_for_model(model_name)
count = len(encoding.encode(text))
print(count)

結果は、玄1䞇9856。GPT4でも党郚は入らないですね。

远蚘2024/05/15 GPT-4oに察応しおいたす。

分割しよう

困難な問題は分割しようずいうこずで、分割するのが良いですね。

適圓にブラりザ画面で、手䜜業でちたちた分割した文章をコピペしおもよいのですが、結構面倒です。面倒なこずはPythonにやらせおしたいたしょう。

ずいっおも、単玔に適圓に文字数だけで区切るず、区切りが倉になるので、圢態玠解析しお分割したす。

ChatGPTに「Pythonで日本語の圢態玠解析をした䞊で、長文を1000単語で分割しおください」ず聞いたら、いい感じのコヌドを曞いおくれたので利甚したす。

泚 本圓は、圢態玠単䜍でなく、1文単䜍で区切れるずよさそうですが、文章修正は芁玄などのタスクず違い、区切りがそれほど問題にはならないず考えられるので今回はサボりたす。

!pip install -qq janome
from janome.tokenizer import Tokenizer

def split_text_into_chunks(text, max_tokens=1000):
    tokenizer = Tokenizer()
    tokens = list(tokenizer.tokenize(text, wakati=True)) # wakati=True returns a list of words
    chunks = []

    for i in range(0, len(tokens), max_tokens):
        chunk = tokens[i:i+max_tokens]
        chunks.append(''.join(chunk))

    return chunks

chunks = split_text_into_chunks(transcription_text)

あずは、これを順にChatGPTのAPIで凊理しおあげればOKです。

GPT3.5ずGPT4では、GPT4の方が仕䞊がりが優秀ですが、GPT4だずその分時間ずお金がかかるずいう感じですね。

Whisperにプロンプト远加

こんなアドバむスをいただきたした。

https://twitter.com/t_andou/status/1664060197927788544

調べたら、確かにやっおいる人がいたした。

https://alpcom.co.jp/blog/20230330-3/

なんでこずだ、今たでやっおきたこずは無駄だったのかず絶望しかけたしたが、詊したずころ、自分の手持ちのオヌディオファむルではWhisperぞプロンプト入力しおも、文字起こし文章に句読点の远加はできたせんでした。どうも長時間のファむルだず、うたく远加できないようです詳现は未怜蚌です。

嬉しいような残念なような結果ですね。

たずめ

文字起こしした文章をいい感じにするのに、ChatGPTが䟿利ずいう話でした。

そのうち、Whisperがレベルアップしお䞀発でオヌディオファむルから高品質のテキストが文字起こしできるようになったり、ChatGPTのトヌクン数制限が100䞇トヌクンになったら甚無しではありたすが、それたで埅おないので自分のために䜜っおみたした。こういった耇数のAIを組み合わせお䜕かタスクを実珟するずいうものが、今埌タケノコのようにニョキニョキ出おくるんじゃないかなず思っおいたす。

文字起こしから、この蚘事で玹介した文章の修正たでを含めおたずめたGoogle ColabのノヌトブックをGitHubにアップしたした。自分のメモ的なコヌドなのであんたり説明は詳しくないです、ノリず勘で䜿っおいただければ 

transcription.ipynb

ChatGPTのAPI文章の修正を䜿う堎合は、Open AIのシヌクレットキヌが必芁です。文字起こしだけなら䞍芁ですノヌトブックの前半が文字起こし郚分です。

参考リンク

https://nikkie-ftnext.hatenablog.com/entry/how-easy-youtube-transcript-api-and-langchain-youtubeloader

https://rollbar.com/blog/chatgpt-api-rate-limit-error/

関連蚘事

https://zenn.dev/karaage0703/articles/ecfab2effb7c31

https://zenn.dev/karaage0703/articles/d47bbb085fcb83

倉曎履歎

  • 2024/05/15 GPT-4oに察応
  • 2023/06/03 Whisperぞのプロンプト入力に関しお远蚘

Discussion