さまざまなSpeech-to-Text
音声をテキストに文字起こしするSpeech-to-Textサービスとしては、下記のようなものがあります。
- Google CloudのSpeech-to-Text
- Microsoft AzureのSpeech-to-Text
- IBMのWatson Speech to Text
- YouTubeの自動字幕起こし機能
ここでは、ChatGPTのAPIを使用して、音声の文字起こしを行なってみます。
ChatGPT WhisperAPIを用いたSpeech-to-Text
全体の流れは次のようになります。
- ChatGPT APIを使用できるようにする
- ChatGPTのAPIを呼ぶPythonプログラムを作成する
- 作成したプログラムを実行して、文字起こしする
ChatGPT APIの始め方
ChatGPTの公式サイトにアクセスし、右上の[Sign up]からアカウントを作成します。
アカウント作成後、ログインした画面で、「API」を選択します。
右上のアカウント部分をクリックし、[Manage account] – [Billing] – [Preferences]を開いて請求書の住所などを登録します。
その後、画面上部の「Upgrade」をクリックして、クレジットカードを登録します。
以上で登録作業は完了です。
次にAPIキーを作成します。
まず、[Settings] – [Organization settings]の「Organization name」と「Organization ID」を確認しておきます。
次に、[API keys]を開き、[Create new secret key]をクリックして、APIキーを作成します。
Default organizationは、先ほど確認した「Organization name」になっていることを確認します。
ChatGPTのWhisper APIでSpeech-to-Textするプログラムを作成する
OpenAIの公式のガイドが用意されています。これを参照すると簡単にWhisper APIを使うことができます。
まずは、PythonからOpenAIのライブラリを利用するために、ライブラリをインストールします。
% pip install openai
次にPythonプログラムを作成します。ここで、事前に確認した「Organization ID」と、作成したAPIキーを使用します。
import os
import openai
# ============================================================
# API情報
# ============================================================
openai.organization = "ORGANIZATION_ID"
openai.api_key = "OPENAI_API_KEY"
# ============================================================
# 音声ファイルの文字起こし関数
# ============================================================
def speech_to_text(filepath):
audio_file= open(filepath, "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
txt = transcript['text']
f = open(filepath + ".txt", "w")
f.write(txt)
f.close()
# ============================================================
# 関数実行
# ============================================================
# 音声ファイルのパスを指定
filepath = "/path/to/file/audio.mp3"
# 関数実行
speech_to_text(filepath)
ChatGPTのWhisper APIでSpeech-to-Textする
上のPythonコードを実行すると、指定したmp3ファイルの末尾に.txtをつけたテキストが作成されます。
対応する音声ファイルの形式は、mp3
, mp4
, mpeg
, mpga
, m4a
, wav
, webm
です。
一度に処理できるファイルサイズは25MBまでです。音声ファイルがこれより大きい場合は、事前に分割しておきます。
分割には、PyDub open source Python packageを使用します。
% pip install pydub
from pydub import AudioSegment
song = AudioSegment.from_mp3("good_morning.mp3")
# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.mp3", format="mp3")
まとめ
この記事では、ChatGPT Whisper APIで音声を文字起こしする方法を解説しました。
実際に試したところ、かなり精度の高い文字起こしが可能で、若干の後処理・修正が必要ですが、十分実用できる性能でした。
会議の文字起こしなどに便利に使えます。ぜひお試しください。