2023年3月1日、OpenAI社からChatGPTのAPIが公開されました。
▽ Introducing ChatGPT and Whisper APIs
https://openai.com/blog/introducing-chatgpt-and-whisper-apis
APIというのは、例えばChatGPT APIならChatGPTをプログラムに組み込んでその機能を使うためのツールのようなものです。質問文などを送信することで、ChatGPTが返してくれる返答が取得できます。
ChatGPTは「チャットボットAI」ですが、Whisperは「文字起こしAI」です。人がしゃべった音声を文字に変換してくれます。数十種類の言語に対応しており、テキストは英語のみですが翻訳機能もあります。
OpenAIのAPIキーを取得する
WhisperのAPIを使用するためには、APIキーというものが必要です。
OpenAIのアカウントを作成する
OpenAIのアカウントを持っていない人は作成しましょう。OpenAIの公式サイトにアクセスし、SignUpを押します。メールアドレス、パスワードを入力するとメールが届くのでそれをクリック。名前と誕生日、電話番号を入力して、届いたSMSの番号を入力したらアカウントが作成できます。
OpenAIのAPIキーを取得する
OpenAIのAPIのサイトに行き、Developers > Overviewを押します。(ログインが必要な場合はログインした後、)OpenAI API のプラットフォームに行きます。
右上のPersonal>View API keysを押し、+ Create new secret key を押しましょう。すると英数字の列が出てきます。これがAPIキーです。一度しか表示されませんので、確実にコピーしてどこかにメモしておきましょう。
APIキーは認証情報ですので、他人に教えてはいけません。GitHubなどのクラウドサービスにもアップするのはやめましょう。
Pythonでプログラムを書く
Pythonはすでに持っているという前提で話を進めます。もし持っていない人は各自でPythonのインストール方法を調べるか、Google Colabortaryなどのインストール不要でPythonを実行できるサイトを利用してみてください。
仮想環境の作成(任意)(Google Colabの人は不要)
PythonをPCに直接インストールしている場合やAnacondaでインストールしている場合は仮想環境の作成がオススメです(Google Colabotaroryの人は不要)。ターミナルを開いて、プログラムを作成するフォルダに移動します(cd ファイルパス)。その後、
Python直接インストールの人は
python -m venv .venv
Anacondaの人は
conda create --name .venv python=3.10
で仮想環境を作成できます。(.venvが仮想環境名。python=3.10でpythonを同時にインストール)
作成できたら、Pythonの人は
.venv/Scripts/activate.ps1
Anacondaの人は
conda activate .venv
で仮想環境に入ります。(.venv)というのが行の先頭についたらOKです。ターミナルを閉じたら仮想環境から出てしまいますので、もう一度activateして仮想環境に入りなおしてください。
パッケージのインストール
Whisper の機能を使うためのパッケージ(拡張機能のようなもの)をインストールします。
pip install openai
を実行してください。Anacondaの人は conda install openai が望ましいですが、失敗する場合は pip を使いましょう。また、Google Colaboratoryを使っている人は「!」をつけて
!pip install openai
を実行(セルの左側にある再生ボタンを押します)。
プログラムを書く
import openai
# APIキーをセット
openai.api_key = "YOUR_API_KEY"
audio_file= open("audio.wav", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
audio_file.close()
print(transcript["text"])
YOUR_API_KEYには先ほど取得したAPIキーを書きます。
また、Pythonファイルと同じ階層に、人のしゃべった音声が入ったファイル audio.wav を置いておきましょう。
/
| - whisper.py
| - audio.wav
あとはこれを実行するだけで Whisper を使うことができます!
python whisper.py
で実行します(whisper.pyはファイル名なので、ご自身のファイル名に合わせてください。)GoogleColaboratoryの人は、セルの再生ボタンをクリックで実行します。
応用編
言語を指定する
transcript = openai.Audio.transcribe("whisper-1", audio_file, language="ja")
language="○○" とすると、音声の言語が何かを指定することができます。言語は指定しなくても勝手に判断してくれますが、指定した方が認識の精度が上がるようです。
language="ja"で日本語、"en"で英語になります。
APIキーをファイル外に書く
APIキーは他人に知られてはいけないため、Whisper APIを使用したPythonファイルをネットで公開するときなどは、上のコードのように"YOUR_API_KEY"のように書き換える必要があります。しかし、いちいちAPIキーの部分を書き直すのは面倒ですし、それを忘れる可能性もあります。
そこでAPIキーをpythonファイルとは別のファイルに書いておき、そこからAPIキーを取得するということができます。
python-dotenvをインストール
python-dotenvというパッケージをインストールします。
pip install python-dotenv
// Google Colabの人は !pip install python-dotenv
.envファイル
.envファイルを作成し、
OPENAI_API_KEY = "YOUR_API_KEY"
を記載します(つまり一行だけ書いたファイルになります)。YOUR_API_KEYは同じように自分のAPIキーを入力しましょう。
Pythonプログラム
元のプログラムの上から4行:
import openai
# APIキーをセット
openai.api_key = "YOUR_API_KEY"
を、下のように書き換えます
import openai
import os
from dotenv import load_dotenv
# APIキーをセット
load_dotenv()
openai.api_key = os.environ.get("OPENAI_API_KEY")
あとは同じように python whisper.py などで実行すれば同じような結果が得られます。
この方法であれば、例えばGitHubにプログラムをアップロードする際、.envはコミットされないようにしておけば(レポジトリ作成の際に.gitignoreをPython用にしておけば、デフォルトで.envファイルはコミットされないはずです)、APIキーの情報だけはアップロードされないという状態を作り出すことができます。
関数化
先ほどの whisper.py を関数化して、ほかの Python ファイルから利用できるようにしたものがこちら
import os
import openai
from dotenv import load_dotenv
# APIキー
load_dotenv()
openai.api_key = os.environ.get("OPENAI_API_KEY")
def speechfile_to_text(filename, lang):
audio_file = open(filename, "rb")
# 文字起こし
transcript = openai.Audio.transcribe("whisper-1", audio_file, language=lang)
text = transcript["text"]
audio_file.close()
return text
ファイルパスと言語を引数に取り、文字起こしされたテキストを返します。
言語は日本語なら "ja"、英語なら "en"といった文字列です。
ほかの Python ファイルから使用する場合は
import whisper
text = whisper.speechfile_to_text("audio.wav", "ja")
print(text)
などのように書けばよいでしょう。
コメント