Whisperで文字化したものをChatGPTで自動校正する方法 その①

IT

はじめに

以前Whisperで、音声の文字起こしの方法について取り上げました。

今回から2回に分けて、文字起こしした文章の誤字の修正、句読点の追加をChatGPTにさせようという企画です。
ChatGPTにはトークンがあり、1回で出来ないことがあるので、今回は、まず文章を適切な範囲で分割するプログラムをPythonで作りたいと思います。
次回、それを使って、ChatGPTに自動的にリクエストを投げて、校正してもらいましょう。

文章を分割するプログラム。

今回は約1000トークン程度で分割するようにしています。本来もっと多くても大丈夫なのですが、次回のChatGPTを自動で呼ぶ際に、多いと途中で止まることがあるため、わざと少なくしています。

プログラムはこんな感じです。

import os
import sys
import chardet

# テキストの文字コード判定関数
def detect_encoding(filepath):
    with open(filepath, 'rb') as f:
        rawdata = f.read()

    result = chardet.detect(rawdata)
    return result['encoding']

# メイン関数
def chatgpt_text_split(attach):

    for file in attach:

        # 結果ファイル名
        file_name, file_extension = os.path.splitext(file)
        result_file = file_name + "_result" + file_extension

        # 文字分割スクリプト
        def split_text(text, length):
            return [text[i:i+length] for i in range(0, len(text), length)]

        # テキストファイルの読み込み
        enc = detect_encoding(file)
        print('文字コード:',enc)
        with open(file, "r", encoding=enc ) as file:
            text = file.read().replace('\n', '')

        splitted_texts = split_text(text, 1000)

        with open(result_file, "w") as file:
            for i, txt in enumerate(splitted_texts):
                if i != 0:
                    file.write("\n" + "```" + "\n")
                file.write(txt)

if __name__ == '__main__':
    chatgpt_text_split(sys.argv[1:])
    print('ChatGPT用に内容を分割しました。細かいところは確認してください。')

使い方

このプログラムに、引数としてファイルパスを送ると、内容を分割してくれます。
ここだけ人間の目のチェックが必要になるのですが、分割される部分が、必ずしも文章の切れ目ではないため、切れ目を人目検して、微調整してください。

まとめ

次回は、この結果データを順番に読ませて、ChatGPTに文章の修正、校正をしてもらいましょう。

タイトルとURLをコピーしました