YouTube動画は自動的に字幕を生成してくれますが、音声認識の問題もあってか、そのまま利用するには、日本語の品質に問題があります。長い動画字幕をChatGPTのOpenAI APIをつかって正しい日本語に直すPythonプログラムがつくれないか試してみました。
- サンプルプログラムが動かず作業は難航
- Google Colaboratoryとは
- Google Colaboratoryを活用した初心者でもできるPythonプログラミング
- ChatGPT Modelの選択は要注意
サンプルプログラムが動かず作業は難航
「2023年3月にChatGPT APIが公開されてから1年以上が経過し、ネット上にもAPIの使い方についての記事が多数公開されているので それほど苦労しないだろう」と正直たかをくくっていました。しかし、公開されているPythonのサンプルプログラムを Jupiter Notebook上で 動かそうとしてもエラー多発でまったく動きません。MATLABだったらできないか、以下の記事を参考にしながらやってみましたが、おなじくエラー多発し、しかもエラーの原因がわかりません。
MatGPT – MATLAB® app to access ChatGPT API from OpenAI™
私自身は、本業のプログラマーではなく、プログラミングに多少経験があるくらいです。そのため、記事を読んだり、ネットで検索したり、ChatGPTに聞いたりして、それでも解決できなければお手上げです。そんな中、以下の記事にある「Google Colaboratory」を使うことで、なんとかサンプルプログラムを動かすところまでたどり着けました。
Pythonで生成AIアプリを作ろう、APIの利用で画像生成に挑戦(出典:日経クロステック)
この記事に書かれているサンプルコードは、16行ほどの簡単なものでしたが、そのまま実行しても以下のようなエラーメッセージがでて動きませんでした。
NameError: name 'OpenAI' is not defined
ちなみに赤枠グレーで塗りつぶされているところには、ChatGPTのAPI Keyが書かれています。
さて、この状態から初心者がどのように直していったらプログラムは動くのでしょうか?次の章からは、Google Colabratoryを活用したプログラムの修正手順について説明します。
Google Colaboratoryとは
そもそも「Google Colaboratory」とはなんでしょうか?
Google Colabratoryは、ブラウザ上で直接Pythonを記述・実行できるプログラミング環境です。Pythonプログラミングをこれから学ぼうとする人は、開発環境としてAnacondaをインストールする人も多いようです。しかし、以下のようなサイトをみてインストールしようとしても、初心者は環境構築を終えるまでに相当苦労します。
私などは、結局、本を買い、読みながらセットアップしました。
Python3 入門ノート
|
Google Colabratoryは、そのようなプログラミング環境設定の煩わしい苦労が必要なく、Googleアカウントを持っている人ならば、だれでもすぐにPythonプログラミングを試すことができます。Colabに関する解説記事も多数公開されていますが、例えば以下のような記事を読むと、メリットや使い方を知ることができます。
Google Colaboratoryとは?メリットや使い方を解説!
さて、あらためて以下の記事に書かれていたサンプルコードをGoogle Colaboratoryで動かそうとしましたが、そのままでは動きませんでした。理由は、ChatGPT APIの仕様が頻繁に更新されているためかもしれませんが、初心者には最新情報は追いきれません。Google Colaboratoryはそのあたりの苦労も解消してくれます。
Pythonで生成AIアプリを作ろう、APIの利用で画像生成に挑戦(出典:日経クロステック)
実際にどのような点が便利なのか、エラーが出たサンプルコードの修正過程をみていきましょう。
Google Colaboratoryを活用した初心者でもできるPythonプログラミング
さて、今回は、冒頭でエラーがでたサンプルコードをもとにGoogle Colaboratoryで作業してみます。Colabのすごいところは、
- 表示されたエラーに対して、原因分析と修正案を提示してくれる
- やりたいことを言葉で表現するとプログラムを書いてくれる
という点です。これなら、Pythonの初心者でも簡単なプログラムが書けそうです。
実際のプログラムでみてみましょう。
以下のコマンドで Google Colaboratoryにopenaiをインストールしておきます。
!pip install openai -q
Colabによるエラーコードの修正
まず初めに、Colabのエラーコードの修正機能についてみていきます。まず修正したいのは、冒頭で示した16行のコードをコードセルにいれて、実行したときに表示される以下のエラーメッセージです。
NameError: name 'OpenAI' is not defined
まったくのPythonプログラミング初心者であれば、おそらくここでギブアップです。しかし、Google Colabratoryのすごいところは、コードの修正案を提示してくれる点です。エラー修正には、一番下の行で「次のステップ」と書かれている右側の「エラーの説明」というボタンをクリックします。
すると右側にGoogleの生成AI「gemini」によるエラーの原因分析と、コードの修正方法が表示されます。
修正前のコード | 修正後のコード(Google geminiのアドバイス) |
geminiの分析によると「openaiのライブラリをインポートする前に、OpenAIクラスを使おうとしていることが問題(It seems like you might be trying to use the OpenAI
class from the openai
library before it’s properly imported. )」とのことです。修正後のプログラムでは、赤枠で囲われた3行のコードの位置が変わっています。
試しに、geminiの推奨通り、「client = …」以下の3行の位置を入れ替えて、プログラムを実行してみます。
すると今度はエラーがでることなく、ChatGPT API経由での回答が表示されました。
Colabによるコードの生成
今度は、AIによるコード生成機能についてみていきます。
最初のサンプルプログラムを、字幕テキストを扱えるように修正していきます。直したいのは以下の3点です。
- 字幕テキストをファイル(sample.txt)から変数 messageに読み込む
- 字幕テキストの冒頭に、ChatGPTに送るプロンプト「”以下のテキストを正しい日本語に直してください。\n”」を挿入する。(”\n”は改行コード)
- ChatGPTからの回答をテキストファイル(result.txt)に書き込む
sample.txtは、こちらの経済産業省のYouTube動画【ALPS処理水って何?】からダウンロードした字幕テキストです。
まず1番目のタスクからAIでコード生成してみましょう。
コードセルの中に表示されているテキスト「・・・AI で生成します。」の中の「生成」の箇所をクリックします。すると コードを書きたい作業内容を記述するセルが表示されます。
以下の文章を入力します。
「sample.txtを読み込み、配列messageに入力する」
すると、自動的に以下のコードが生成されます。
左の▷ボタンをおして実行すると、以下のエラー ”No such file or directory” が表示されます。まだファイルを置いていないので当然です。
プログラムで利用するファイルはクラウド上にアップロードする必要があります。「フォルダーボタン」と「アップロードボタン」を順番に押し、sample.txt をクラウドにアップロードします。
あらためて実行すると、今度はエラーが表示されませんので、正しく実行されたようです。
さて、今度は、2番目のタスク「読み込んだテキストの先頭に、ChatGPT向けのプロンプトを追加する」プログラムを書いてみます。こちらは簡単にコマンドが表示されます。
ChatGPTにAPI経由で渡すテキストが変数messageに入っていました。もとのプログラムの以下の箇所を、geminiが生成した2種類のコードで置き換えます。
修正前)
message = "あなたは誰ですか?"
修正後)
with open('/content/sample.txt', 'r') as f:
message = f.read()
message = "以下のテキストを正しい日本語に直してください。\n" + message
全体のプログラムを実行すると以下の回答が表示されます。
GPT-4では、生成される日本語の精度がいまひとつ良くないようです。元の字幕テキストと異なる表現が数か所でみられます。最新のGPT-4oに変えて実行してみます。
model="gpt-4o"
原文に忠実な、ほぼ完璧な日本語が生成されました。
ChatGPT Modelの選択は要注意
ChatGPTのAPIを利用するときに注意点があります。ChatGPTのモデル選択には、細心の注意を払ってください。同じ最新モデル(Latest Models)でもgpt-4oは、gpt-3.5-turboより10倍料金が高く設定されています。また、「旧モデルのほうが安い」という思い込んでいると、想定外の料金が課金される可能性があります。ChatGPT APIの料金表によると、実際には 最新モデルが最も安く、旧モデルのほうが従量課金が高く設定されています。以下は、2024/6/9現在の価格です。
種別 | Model | Input | Output |
Latest Models | gpt-4o | $5.00/1M tokens | $15.00/1M tokens |
gpt-3.5-turbo | $0.50/1M tokens | $1.50/1M tokens | |
Older Models (一例) |
gpt-4-turbo | $10.00/1M tokens | $30.00/1M tokens |
gpt-4 | $30.00/1M tokens | $60.00/1M tokens |
Modelの種類については、こちらのページに詳細がかかれています。プログラムで指定するModel名はすべて小文字です。最新情報は、OpenAIのModelsのページを参照ください。
また、自分がAPIを利用した料金は、OpenAIのUsageページ で確認できます。
ちなみに、先程の字幕テキストを “gpt-3.5-turbo”で処理してみたところ、”gpt-4o”と同じ精度の日本語テキストが生成されました。”gpt-4″ (2023年6月13日公開)よりも、”gpt-3.5-turbo” (2024年1月25日公開)のほうが、半年あとにリリースされているため、精度が高いようです。
過去の古いモデルで試したサンプルコードをそのまま実行してしまうと、精度の悪くて料金の高いモデルを選択してしまうリスクがあります。(実際、gpt-3.5-turboよりgpt-4のほうが、精度が悪いのに料金は何十倍も高い。)
生成AIの進歩はめざましく、2,3ヶ月経つと新しいモデルが発表されていることもしばしばあります。API経由でChatGPTを利用する場合には、ChatGPT APIの料金表 と Modelsのページ を必ず確認し、もっともコスパがよいモデルをプログラムで指定してください。