はじめに
ChatGPTに、OpenAI Whisper(Pythonライブラリ)を使用するサンプルプログラムを作ってもらい、実際にそれをGoogle Colab Notebooks上で実行させて、うまく動作するかを試してみました。
まとめ
ChatGPTが作成したサンプルプログラムと回答内容に従って、実際にうまく動作するかを試してみたところ:
- 今回は、ChatGPTの回答だけでは、サンプルプログラムの実行が成功せず。
- ChatGPTが作成したサンプルプログラムの手順冒頭にあった「pip install whisper」は、同名の全く違うwhisperライブラリをインストールするので、本来のwhisperを呼び出せなかった模様。
- ChatGPTが作成したサンプルプログラムにあった「whisper.transcribe(audio_file, model='large', lang='ja-JP')」の引数は、色々間違っている模様。model引数はなし、lang引数はlanguageの間違い。
- ChatGPTが作成したサンプルプログラムは、他の色々なライブラリの使用方法が混ざっていて混同している模様。
- 手動でWeb検索を用いて調べる(確かめる)必要がある。
ChatGPTに質問した時の回答内容については:
- 細かい部分に関する質問では、ChatGPTの回答内容が二転三転することがある。
- 他に似たような話がある場合は、ChatGPTの回答内容が色々な話と混同することがある。
- ChatGPT自身が、よく分からないことでも、ペラペラと流暢にそれっぽい事を回答する所がある。
- この辺りの動作を見ていると、ChatGPTは質問に正しく答えるというよりは、文章の生成器であって、大量の文章を学習して高い頻度で現れる似たような文を並べて文章を生成している感が感じられる。
ChatGPTにサンプルプログラムを聞いてみる
まずはざっくりとした内容で
まずは、ざっくりとした内容で、聞いてみることにしました。
▼私(人間)
お願い: Pythonで音声ファイル(.wav)から文字起こしをするサンプルプログラム
▼ChatGPT(自動応答)
Pythonで音声ファイルから文字起こしをするためには、いくつかのライブラリがあります。ここでは、Google Cloud Speech-to-Text APIを使用して音声ファイルを文字起こしする方法を紹介します。以下は、サンプルコードです。
import io
import os
# pip install google-cloud-speech
from google.cloud import speech_v1p1beta1 as speech
# Google Cloudの認証情報を設定する
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/path/to/credential.json"
# 音声ファイルを読み込む
with io.open('/path/to/audio.wav', 'rb') as audio_file:
content = audio_file.read()
# 音声ファイルをGoogle Cloud Speech-to-Text APIで処理する
client = speech.SpeechClient()
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
language_code='ja-JP',
audio_channel_count=2,
enable_word_time_offsets=True,
)
response = client.recognize(config=config, audio=audio)
# 認識されたテキストを表示する
for result in response.results:
alternative = result.alternatives[0]
print(u'Transcript: {}'.format(alternative.transcript))
上記のコードでは、Google Cloudの認証情報を credential.json ファイルに保存し、音声ファイルを audio.wav として指定しています。また、ja-JP を言語コードとして設定していますが、必要に応じて適切な言語コードに変更してください。
もっと簡単なものを
(あまりに長いサンプルコードだったので)
▼私(人間)
もっと簡単なものはありますか
▼ChatGPT(自動応答)
はい、簡単な音声認識のライブラリとしては、Google Speech Recognitionがあります。これは、GoogleのWeb Speech APIを使用して、音声ファイルからテキストを抽出するPythonライブラリです。
以下は、Google Speech Recognitionを使用して音声ファイルからテキストを抽出するサンプルコードです。
# pip install SpeechRecognition
import speech_recognition as sr
# 音声ファイルを読み込む
r = sr.Recognizer()
with sr.AudioFile('/path/to/audio.wav') as source:
audio = r.record(source)
# 音声ファイルをGoogle Speech Recognitionで処理する
text = r.recognize_google(audio, language='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(text))
上記のコードでは、音声ファイルを audio.wav として指定しています。また、日本語を指定しているため、language='ja-JP' を設定していますが、必要に応じて適切な言語コードに変更してください。
ライブラリWhisperを指定して
前回の回答で、サンプルコードが短くなり、非常に優秀です。
ここで、ライブラリWhisperを指定してみます。
▼私(人間)
お願い: Pythonで音声ファイル(.wav)から文字起こしをするサンプルプログラム
ライブラリwhisperを使用
▼ChatGPT(自動応答)
Whisperというライブラリは、Pythonで音声ファイルを文字起こしするためのオープンソースのライブラリです。以下は、Whisperを使用して音声ファイルを文字起こしするサンプルコードです。
まずは、Whisperをインストールします。
pip install whisper
次に、以下のコードを実行します。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file)
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
上記のコードでは、音声ファイルを audio.wav として指定しています。また、Whisperを使用して音声ファイルを文字起こしし、認識されたテキストを表示しています。
注意点として、Whisperは、Google Speech Recognitionを使用しているため、GoogleのWeb Speech APIの制限に影響を受ける可能性があります。制限に達すると、エラーが発生するか、認識率が低下する可能性があるため、注意して使用してください。
ん? WhisperはGoogle?
WhisperはGoogle?? 改めて聞いてみます。
▼私(人間)
本当に、Whisperは、Google Speech Recognitionを使用しているのですか?
▼ChatGPT(自動応答)
ご指摘いただきありがとうございます。お詫び申し上げますが、WhisperはGoogle Speech Recognitionを使用しているのではなく、別のオープンソースの音声認識エンジンであるCMU Sphinxを使用しています。WhisperのREADMEには、このことが記載されています。
以下は、Whisperを使用して音声ファイルを文字起こしするサンプルコードです。
まずは、Whisperをインストールします。
pip install whisper
次に、以下のコードを実行します。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file)
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
上記のコードでは、音声ファイルを audio.wav として指定しています。また、Whisperを使用して音声ファイルを文字起こしし、認識されたテキストを表示しています。
お詫び申し上げます。
条件の注文を増やしてみる
なるほど、お詫びが来たところで、
条件の注文を増やしてみます。
▼私(人間)
お願い: Pythonで音声ファイル(.wav)から文字起こしをするサンプルプログラム
ライブラリwhisperを使用、"large"モデル使用、日本語指定
▼ChatGPT(自動応答)
以下は、Whisperライブラリを使用して、日本語の音声ファイルを文字起こしするサンプルコードです。"large"モデルを使用することで、より高い認識精度が期待できます。
まずは、Whisperをインストールします。
pip install whisper
次に、以下のコードを実行します。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
上記のコードでは、音声ファイルを audio.wav として指定しています。また、Whisperを使用して音声ファイルを文字起こしし、認識されたテキストを表示しています。model パラメータには、Whisperが提供するモデルのうち、精度が高いとされる "large" モデルを指定しています。lang パラメータには、日本語を指定しています。
なお、Whisperには課金制限があり、一定量のAPIリクエストを超えると課金が必要になります。詳細はWhisperの公式ウェブサイトを確認してください。
ChatGPTが作成したサンプルプログラムを実行
ありがたいことに、課金制限等の有用情報についても追記して貰えました。気になるので、後で改めて聞いてみようと思います。(後述)
ここでは、ひとまず、ChatGPTの回答に従って、ChatGPTが作成したサンプルプログラムを実行してみます。テスト用の入力音声ファイルは、自前で朗読したものを録音したものtest-data1.wavを使用します。(本稿末尾に詳細を記載)
試行時のファイル:
https://github.com/DL-from-Scratch/dl_from_scratch/blob/master/2303_OpenAI_whisper%E8%A9%A6%E7%94%A8%E3%83%86%E3%82%B9%E3%83%88.ipynb
Google Colab Notebooks上で実行:
!pip install whisper
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting whisper
Downloading whisper-1.1.10.tar.gz (42 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.8/42.8 KB 1.8 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Requirement already satisfied: six in /usr/local/lib/python3.9/dist-packages (from whisper) (1.15.0)
Building wheels for collected packages: whisper
Building wheel for whisper (setup.py) ... done
Created wheel for whisper: filename=whisper-1.1.10-py3-none-any.whl size=41134 sha256=7996660022e7543385437e1b028e194044071291f78f5810133b5b8a3b25194f
Stored in directory: /root/.cache/pip/wheels/f1/01/8c/1b449563518aa0f8813d044f7a910884e3b8313711becb66d6
Successfully built whisper
Installing collected packages: whisper
Successfully installed whisper-1.1.10
import whisper
# 音声ファイルを読み込む
audio_file = 'test-data1.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-12-4dbebbc1a288> in <module>
5
6 # Whisperを使用して音声ファイルを文字起こしする
----> 7 transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
8
9 # 認識されたテキストを表示する
AttributeError: module 'whisper' has no attribute 'transcribe'
エラーが発生、ChatGPTに聞いてみる
エラーが発生しました。ChatGPTに聞いてみます。
▼私(人間)
前述のコードを実行した所、エラーが発生しました。コードの修正をお願いします。
AttributeError: module 'whisper' has no attribute 'transcribe'
前述のコード:
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
▼ChatGPT(自動応答)
エラーが発生している原因は、Pythonライブラリwhisperには、transcribe()関数が存在しないためです。
正しい関数名は、recognize_google()です。以下が修正後のコードになります。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.recognize_google(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
修正後のコードでは、recognize_google()関数を使用して、音声ファイルをGoogle Speech Recognition APIを通じて文字起こししています。
回答通りに修正して再度実行
whisperにtranscribe()関数が存在しないのか疑問が残りますが、ChatGPTの回答通りに修正。
Google Colab Notebooks上で実行:
import whisper
# 音声ファイルを読み込む
audio_file = 'test-data1.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.recognize_google(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-a01f8cc51d21> in <module>
5
6 # Whisperを使用して音声ファイルを文字起こしする
----> 7 transcript = whisper.recognize_google(audio_file, model='large', lang='ja-JP')
8
9 # 認識されたテキストを表示する
AttributeError: module 'whisper' has no attribute 'recognize_google'
再度エラーが発生、ChatGPTに聞いてみる
すると、再度エラーが発生しました。ChatGPTに聞いてみます。
▼私(人間)
上記のコードを実行した所、エラーが発生しました。コードの修正をお願いします。
AttributeError: module 'whisper' has no attribute 'recognize_google'
▼ChatGPT(自動応答)
おっしゃる通りです。whisperにはrecognize_googleという属性がないため、エラーが発生しています。
正しい呼び出し方は以下のようになります。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.recognize(audio_file, model='google', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
こちらの修正後のコードでは、recognize_google()ではなくrecognize()を使用しています。model引数にはgoogleを指定して、Google Speech Recognition APIを使用して文字起こしを行っています。また、lang引数にはja-JPを指定して、日本語の音声を認識するように指定しています。
再度エラーが発生、ChatGPTに聞いてみる
ChatGPTの回答通りに修正して、Google Colab Notebooks上で実行しても、これ以降毎回エラーとなるので、Colab Notebooks上の実行結果は省略して、ChatGPTの回答だけを記載していきます。
▼私(人間)
上記のコードを実行した所、エラーが発生しました。コードの修正をお願いします。
AttributeError: module 'whisper' has no attribute 'recognize'
▼ChatGPT(自動応答)
申し訳ありません。whisperモジュールにrecognize関数があるかどうか再度確認しましたが、実際には存在しませんでした。
正しい呼び出し方は以下のようになります。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='google', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
こちらの修正後のコードでは、transcribe()関数を使用してGoogle Speech Recognition APIを使用して音声ファイルの文字起こしを行います。model引数にはgoogleを指定して、Google Speech Recognition APIを使用しています。また、lang引数にはja-JPを指定して、日本語の音声を認識するように指定しています。
再度エラーが発生、ChatGPTに聞いてみる
▼私(人間)
上記のコードを実行した所、エラーが発生しました。コードの修正をお願いします。
AttributeError: module 'whisper' has no attribute 'transcribe'
▼ChatGPT(自動応答)
申し訳ありません、Whisperライブラリにtranscribe関数が存在することを確認した上で先に回答したため、誤った情報を提供してしまいました。
正しいコードは以下のようになります。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.recognize_google(audio_file, language='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
こちらの修正後のコードでは、recognize_google()関数を使用してGoogle Speech Recognition APIを使用して音声ファイルの文字起こしを行います。language引数にはja-JPを指定して、日本語の音声を認識するように指定しています。
再度エラーが発生、ChatGPTに聞いてみる
▼私(人間)
上記のコードは既に前述でエラーになったものです
▼ChatGPT(自動応答)
申し訳ありません、以前の回答と混同していました。正しいコードは以下のようになります。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.recognize(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
こちらの修正後のコードでは、Whisperライブラリのrecognize()関数を使用して音声ファイルの文字起こしを行います。model引数にはlargeを指定して、より高度な音声認識を行うように指定しています。また、lang引数にはja-JPを指定して、日本語の音声を認識するように指定しています。
再度エラーが発生、ChatGPTに聞いてみる
▼私(人間)
上記のコードも既に前述でエラーになったものです
▼ChatGPT(自動応答)
おっしゃる通りでした、大変失礼しました。
以下の修正版をお試しください。
import whisper
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
こちらでは、whisperライブラリのtranscribeメソッドを使用しています。エラーが発生しないようになっていることを願っています。
修正されず、諦めます
ループに入りましたので、この聞き方は諦めます。
後段で、手動でWeb検索を用いて調べて分かったことになりますが:
- そもそも、ChatGPTの回答にあった「pip install whisper」は、同名の全く違うwhisperライブラリをインストールするので、本来のwhisperを呼び出せなかった模様。
- ChatGPTの回答にあった「whisper.transcribe(audio_file, model='large', lang='ja-JP')」の引数も、色々間違っている模様。
Whisperを使用する方法が無いとのことで、SpeechRecognitionの使用へ変更することに
ループに入らないよう「これら以外の方法で」と聞いてみます。
▼私(人間)
whisper.transcribe、whisper.recognize_google、whisper.recognizeの全ての呼出しは、既に前述でエラーになります。これら以外の方法で、コードの修正をお願いします。
▼ChatGPT(自動応答)
申し訳ありませんが、現時点で公式ドキュメントに基づいた方法でWhisperを使用する方法がありません。そのため、別のライブラリを使用することをお勧めします。例えば、SpeechRecognitionライブラリを使用して音声認識を行うことができます。以下は、SpeechRecognitionを使用した音声認識の例です。
import speech_recognition as sr
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# 音声認識器を初期化する
r = sr.Recognizer()
# 音声ファイルからオーディオを読み込む
with sr.AudioFile(audio_file) as source:
audio = r.record(source) # 全部読み取る
# 音声を文字列に変換する
text = r.recognize_google(audio, language='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(text))
SpeechRecognitionライブラリを使用する場合、Google Speech Recognition APIを使用するためには、APIキーが必要になる場合があります。また、無料版のAPIキーには制限があることにも注意してください。
ChatGPTが作成したSpeechRecognitionを使用するサンプルプログラムを実行
ChatGPTの回答が、Whisperを使用する方法が無いとのことで、仕方ないので、SpeechRecognitionの使用へ変更することにします。
(インストール方法は特に回答がありませんでしたが、始めにインストールから)
Google Colab Notebooks上で実行:
!pip install SpeechRecognition
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting SpeechRecognition
Downloading SpeechRecognition-3.10.0-py2.py3-none-any.whl (32.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 32.8/32.8 MB 25.8 MB/s eta 0:00:00
Requirement already satisfied: requests>=2.26.0 in /usr/local/lib/python3.9/dist-packages (from SpeechRecognition) (2.27.1)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->SpeechRecognition) (2.0.12)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->SpeechRecognition) (1.26.15)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->SpeechRecognition) (3.4)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->SpeechRecognition) (2022.12.7)
Installing collected packages: SpeechRecognition
Successfully installed SpeechRecognition-3.10.0
import speech_recognition as sr
# 音声ファイルを読み込む
audio_file = 'test-data1.wav'
# 音声認識器を初期化する
r = sr.Recognizer()
# 音声ファイルからオーディオを読み込む
with sr.AudioFile(audio_file) as source:
audio = r.record(source) # 全部読み取る
# 音声を文字列に変換する
text = r.recognize_google(audio, language='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(text))
Transcript: これは蒸しパン ライバルのテストです 昨日 豊富なもの 複数の欠点もある ovi はちゃんと GPT が時によってはもっともらしく見えると謝っている 解答作成することを認めているチャット GPT の報酬も電波人間による短所 中心としているため 最適化 再設定 パフォーマンスに影響を及ぼしてしまうグッド ハートの法則 それに加えチャット GPT は 2011年以降に発生したということについては 知識が蓄えられて終わらせする の著名人については 知識が全くないこともある
今回のものは、エラーなく実行可能で、成功しました。
(音声認識結果は、誤りが多い印象)
より高い認識精度を設定できるか
音声認識結果で、誤りが多い印象でしたので、より高い認識精度を設定できるかを聞いてみます。
▼私(人間)
上記のコードは正しく動作しました。ただ、認識精度が悪く、より高い認識精度を設定可能ですか
▼ChatGPT(自動応答)
はい、Whisperライブラリには認識精度を調整するためのパラメータがあります。具体的には、modelパラメータを調整することで、より高精度な認識を行うことができます。
現在、modelパラメータには以下の3つのオプションがあります。
- 'tiny':小さなモデル。高速で軽量ですが、認識精度は低いです。
- 'medium':中規模のモデル。速度と精度のバランスがとれています。
- 'large':大きなモデル。高い認識精度を実現しますが、速度は遅くなります。
modelパラメータを'large'に設定することで、より高精度な認識が可能になりますが、処理時間が長くなることに注意してください。また、認識精度は音声ファイルの品質や話者の発音の明瞭さなどにも依存します。
再度、ChatGPTに聞いてみる
前回のChatGPTの作成したサンプルプログラムには、modelパラメータはありませんので、再度、ChatGPTに聞いてみます。
▼私(人間)
いいえ、SpeechRecognitionライブラリを使用した上記のコードで、より高い認識精度を設定可能ですか
▼ChatGPT(自動応答)
はい、可能です。SpeechRecognitionライブラリを使用する場合は、以下のようにして高い認識精度を設定できます。
import speech_recognition as sr
# 音声ファイルを読み込む
audio_file = '/path/to/audio.wav'
# 音声認識オブジェクトを作成する
r = sr.Recognizer()
# 音声ファイルをオープンして、音声認識にかける
with sr.AudioFile(audio_file) as source:
# 音声ファイルを読み込む
audio = r.record(source)
# Google Speech Recognitionを使用して音声を文字起こしする
text = r.recognize_google(audio, language='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(text))
ここで、recognize_googleの引数としてlanguage='ja-JP'を渡すことで、日本語の音声を認識できます。また、recognize_googleの他にも、recognize_bingやrecognize_sphinxといった音声認識エンジンを使うこともできます。それぞれのエンジンにはそれぞれの特徴があり、認識精度も異なるため、試してみてください。
より高い認識精度は設定できない模様
より高い認識精度は設定できない模様で、ここで終わることにします。
(本来の注文とは違いますが、SpeechRecognitionライブラリを使用して)、一応、音声認識をエラーなく実行でき、成功しました。
参考: SpeechRecognitionの複数の認識エンジンについてWebで調べた結果
引用:
◆SpeechRecognition ライブラリ
SpeechRecognition は、音声認識を実行するための Python ライブラリです。
特徴は、複数の認識エンジンをサポートしていることです。
認識エンジンは、オンラインまたはオフラインで動作するものがあります。
投稿:2022-11-19 、更新:2022-12-28
従来通り手動でWeb検索を用いて調べて試す
ここで、従来通りに、手動でWebを検索して、Whisper(Pythonライブラリ)を使用するサンプルコードを調べて、試してみます。
検索結果(私人間):
Whisperと関連ライブラリのインストール
Whisperと関連ライブラリをpipコマンドでインストールします。足りないライブラリとWhisperをインストールしてくれます。
pip install git+https://github.com/openai/whisper.git
Installing collected packages: more-itertools, ffmpeg-python, whisper
Successfully installed ffmpeg-python-0.2.0 more-itertools-8.14.0 whisper-1.0
これでインストール完了です。
ダウンロードとインストール
python -m pip install -U git+https://github.com/openai/whisper.git
関連ファイルをダウンロード
cd %HOMEPATH%
rmdir /s /q whisper
git clone --recursive https://github.com/openai/whisper.git
Whisperで文字起こし
このようなPythonスクリプトで文字起こししました。こんな短いプログラムでできるなんてすごい!
import whisper
model = whisper.load_model("large")
result = model.transcribe("./1st.mov", verbose=True, language='ja')
text = result['text']
print(text)
まず、Web検索で見つかった方法でインストール。
Google Colab Notebooks上で実行:
!pip install git+https://github.com/openai/whisper.git
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting git+https://github.com/openai/whisper.git
Cloning https://github.com/openai/whisper.git to /tmp/pip-req-build-ne4dafhh
Running command git clone --filter=blob:none --quiet https://github.com/openai/whisper.git /tmp/pip-req-build-ne4dafhh
Resolved https://github.com/openai/whisper.git to commit 6dea21fd7f7253bfe450f1e2512a0fe47ee2d258
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: torch in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (1.13.1+cu116)
Requirement already satisfied: numpy in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (1.22.4)
Requirement already satisfied: numba in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (0.56.4)
Collecting triton==2.0.0
Downloading triton-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (63.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.3/63.3 MB 9.0 MB/s eta 0:00:00
Requirement already satisfied: ffmpeg-python==0.2.0 in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (0.2.0)
Collecting tiktoken==0.3.1
Downloading tiktoken-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 65.4 MB/s eta 0:00:00
Requirement already satisfied: more-itertools in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (9.1.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.9/dist-packages (from openai-whisper==20230314) (4.65.0)
Requirement already satisfied: future in /usr/local/lib/python3.9/dist-packages (from ffmpeg-python==0.2.0->openai-whisper==20230314) (0.18.3)
Requirement already satisfied: requests>=2.26.0 in /usr/local/lib/python3.9/dist-packages (from tiktoken==0.3.1->openai-whisper==20230314) (2.27.1)
Requirement already satisfied: regex>=2022.1.18 in /usr/local/lib/python3.9/dist-packages (from tiktoken==0.3.1->openai-whisper==20230314) (2022.10.31)
Requirement already satisfied: filelock in /usr/local/lib/python3.9/dist-packages (from triton==2.0.0->openai-whisper==20230314) (3.10.0)
Requirement already satisfied: cmake in /usr/local/lib/python3.9/dist-packages (from triton==2.0.0->openai-whisper==20230314) (3.25.2)
Collecting lit
Downloading lit-15.0.7.tar.gz (132 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 132.3/132.3 KB 12.7 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.9/dist-packages (from numba->openai-whisper==20230314) (0.39.1)
Requirement already satisfied: setuptools in /usr/local/lib/python3.9/dist-packages (from numba->openai-whisper==20230314) (63.4.3)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.9/dist-packages (from torch->openai-whisper==20230314) (4.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->tiktoken==0.3.1->openai-whisper==20230314) (2022.12.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->tiktoken==0.3.1->openai-whisper==20230314) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->tiktoken==0.3.1->openai-whisper==20230314) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests>=2.26.0->tiktoken==0.3.1->openai-whisper==20230314) (1.26.15)
Building wheels for collected packages: openai-whisper, lit
Building wheel for openai-whisper (pyproject.toml) ... done
Created wheel for openai-whisper: filename=openai_whisper-20230314-py3-none-any.whl size=796926 sha256=41c5cdc72edb540a10272a03e838fe6e914b4c0c9d02d4894dc1cca091348af5
Stored in directory: /tmp/pip-ephem-wheel-cache-9bsv5zvb/wheels/fe/03/29/e7919208d11b4ab32972cb448bb84a9a675d92cd52c9a48341
Building wheel for lit (setup.py) ... done
Created wheel for lit: filename=lit-15.0.7-py3-none-any.whl size=90003 sha256=0538e883a4dc0fb2e8268687e1a7b8b5dd0c3e804f20fb661f9e1325ffb4c380
Stored in directory: /root/.cache/pip/wheels/b7/68/18/2ad49b416abb9139c8217c349fd9df0674da8f0d1952db2ea5
Successfully built openai-whisper lit
Installing collected packages: lit, triton, tiktoken, openai-whisper
Successfully installed lit-15.0.7 openai-whisper-20230314 tiktoken-0.3.1 triton-2.0.0
WARNING: The following packages were previously imported in this runtime:
[whisper]
You must restart the runtime in order to use newly installed versions.
Web検索で見つかったサンプルコードを実行。
import whisper
model = whisper.load_model("large")
result = model.transcribe("test-data1.wav", verbose=True, language='ja')
text = result['text']
print(text)
100%|██████████████████████████████████████| 2.87G/2.87G [00:29<00:00, 104MiB/s]
/usr/local/lib/python3.9/dist-packages/whisper/transcribe.py:114: UserWarning: FP16 is not supported on CPU; using FP32 instead
warnings.warn("FP16 is not supported on CPU; using FP32 instead")
[00:00.000 --> 00:08.040] これはWhisper Libraryのテストです 機能は豊富なものの 複数の欠点
[00:08.040 --> 00:12.960] もある OpenAIはChatGPTが時によって は最もらしく見えるが誤っている
[00:12.960 --> 00:17.400] 回答を作成することを認めている ChatGPTの方針モデルは人間による
[00:17.400 --> 00:22.600] 監視を中心としているため 最低 化されすぎてパフォーマンスに影響を及ぼしてしまう
[00:22.600 --> 00:27.200] グッドハートの法則 それに加え ChatGPTは2011年以降に発生した
[00:27.200 --> 00:31.320] 出来事については知識が蓄えられて 終わらず 一部の著名人については
[00:31.320 --> 00:32.880] 知識が全くないこともある
これはWhisper Libraryのテストです 機能は豊富なものの 複数の欠点もある OpenAIはChatGPTが時によって は最もらしく見えるが誤っている回答を作成することを認めている ChatGPTの方針モデルは人間による監視を中心としているため 最低 化されすぎてパフォーマンスに影響を及ぼしてしまうグッドハートの法則 それに加え ChatGPTは2011年以降に発生した出来事については知識が蓄えられて 終わらず 一部の著名人については知識が全くないこともある
(当然のことかもしれませんが)、エラーなく実行可能でした。
(音声認識結果はかなり良好)
まとめ
手動でWeb検索を用いて調べて分かったこと:
- そもそも、ChatGPTが作成したサンプルプログラムの手順冒頭にあった「pip install whisper」は、同名の全く違うwhisperライブラリをインストールするので、本来のwhisperを呼び出せなかった模様。
- ChatGPTが作成したサンプルプログラムにあった「whisper.transcribe(audio_file, model='large', lang='ja-JP')」の引数は、色々間違っている模様。model引数はなし、lang引数はlanguageの間違い。
- ChatGPTが作成したサンプルプログラムは、他の色々なライブラリの使用方法が混ざっていて混同している模様。
- 手動でWeb検索を用いて調べる(確かめる)必要がある。
始めの、ChatGPTが作成したOpenAI Whisper(Pythonライブラリ)を使用するサンプルプログラム: (再掲)
import whisper
# 音声ファイルを読み込む
audio_file = 'test-data1.wav'
# Whisperを使用して音声ファイルを文字起こしする
transcript = whisper.transcribe(audio_file, model='large', lang='ja-JP')
# 認識されたテキストを表示する
print('Transcript: {}'.format(transcript))
手動でWeb検索を用いて調べて得られたOpenAI Whisper(Pythonライブラリ)を使用するサンプルプログラム: (再掲)
import whisper
model = whisper.load_model("large")
result = model.transcribe("test-data1.wav", verbose=True, language='ja')
text = result['text']
print(text)
使用したテスト用の入力音声ファイル
テスト用の入力音声ファイルは、自前で朗読したものを録音したものtest-data1.wavを使用しました。
朗読した入力音声の元文
元文:
機能は豊富なものの、複数の欠点も有る。OpenAIはChatGPTが「時によっては、もっともらしく見えるが誤っている回答を作成する」ことを認めている。ChatGPTの報酬モデルは人間による監視を中心としているため、最適化されすぎてパフォーマンスに影響を及ばしてしまう(グッドハートの法則)。それに加え、ChatGPTは2021年以降に発生した出来事については知識が備えられておらず、一部の著名人については知識が全く無いことも有る。
(Wikipedia記載のChatGPTのページの機能の章の1段落を朗読したもの)
SpeechRecognition(recognize_google)の認識結果
比較用に前述の結果を再掲します。結果は、誤りが多い印象。
結果:
これは蒸しパン ライバルのテストです 昨日 豊富なもの 複数の欠点もある ovi はちゃんと GPT が時によってはもっともらしく見えると謝っている 解答作成することを認めているチャット GPT の報酬も電波人間による短所 中心としているため 最適化 再設定 パフォーマンスに影響を及ぼしてしまうグッド ハートの法則 それに加えチャット GPT は 2011年以降に発生したということについては 知識が蓄えられて終わらせする の著名人については 知識が全くないこともある
OpenAI Whisper(Large設定)の認識結果
比較用に前述の結果を再掲します。結果は、かなり良好。
結果:
これはWhisper Libraryのテストです 機能は豊富なものの 複数の欠点もある OpenAIはChatGPTが時によって は最もらしく見えるが誤っている回答を作成することを認めている ChatGPTの方針モデルは人間による監視を中心としているため 最低 化されすぎてパフォーマンスに影響を及ぼしてしまうグッドハートの法則 それに加え ChatGPTは2011年以降に発生した出来事については知識が蓄えられて 終わらず 一部の著名人については知識が全くないこともある
音声認識結果の文章をChatGPTに更に直してもらう
前述で得られた、少し間違いを含んだ音声認識結果の文章を、ChatGPTに更に直してもらうとどうなるのか、試しにやってみると、
SpeechRecognition(recognize_google)の認識結果
▼私(人間)
お願い: 下記の少し間違いを含んだ音声認識結果の文章を修正
これは蒸しパン ライバルのテストです 昨日 豊富なもの 複数の欠点もある ovi はちゃんと GPT が時によってはもっともらしく見えると謝っている 解答作成することを認めているチャット GPT の報酬も電波人間による短所 中心としているため 最適化 再設定 パフォーマンスに影響を及ぼしてしまうグッド ハートの法則 それに加えチャット GPT は 2011年以降に発生したということについては 知識が蓄えられて終わらせする の著名人については 知識が全くないこともある
▼ChatGPT(自動応答)
以下は修正した文章です。
これは蒸しパンのライバルのテストです。昨日、豊富な情報がありましたが、複数の欠点もあることが判明しました。また、oviはGPTが時によってはもっともらしく見えると謝罪しており、解答作成することを認めているチャットです。報酬も電波人間による短所を中心としているため、最適化や再設定がパフォーマンスに影響を及ぼすことがあります。グッド・ハートの法則に加え、チャットGPTは2011年以降に発生した出来事については知識が蓄えられているものの、著名人については知識が全くないこともあります。
修正依頼結果
- 句読点が付いて読みやすい形にはなる。流れのある文章にはなる。
- その他は、そもそも復元できない程、認識結果が悪いので、仕方がない。
OpenAI Whisper(Large設定)の認識結果
▼私(人間)
お願い: 下記の少し間違いを含んだ音声認識結果の文章を修正
これはWhisper Libraryのテストです 機能は豊富なものの 複数の欠点もある OpenAIはChatGPTが時によって は最もらしく見えるが誤っている回答を作成することを認めている ChatGPTの方針モデルは人間による監視を中心としているため 最低 化されすぎてパフォーマンスに影響を及ぼしてしまうグッドハートの法則 それに加え ChatGPTは2011年以降に発生した出来事については知識が蓄えられて 終わらず 一部の著名人については知識が全くないこともある
▼ChatGPT(自動応答)
以下は修正版の文章です:
これはWhisper Libraryのテストです。機能は豊富なものの、複数の欠点もあります。OpenAIは、ChatGPTが時には最もらしく見えるが誤っている回答を作成することを認めています。ChatGPTの方針モデルは、人間による監視を中心としているため、グッドハートの法則によって最適化が過剰になり、パフォーマンスに影響を与えてしまうことがあります。さらに、ChatGPTは2011年以降に発生した出来事については知識が蓄えられており、一方で一部の著名人については知識が全くないこともあります。
修正依頼結果
- 句読点が付いて読みやすい形になる。流れのある文章になる。
- 誤り:最低化→最適化 の正解に修正される。
- 誤り:蓄えられて 終わらず→蓄えられており の誤りに変換される。
Whisperライブラリの利用制限について聞いてみる
前述のサンプルプログラムの会話の中で、ありがたいことに、課金制限等の有用情報についても追記して貰えました。気になるので、ここで改めて聞いてみます。
前述のサンプルプログラムの会話の直後に引き続き(文脈を引き継いで)、ChatGPTに質問。
▼私(人間)
Whisperの利用制限等はありますか
▼ChatGPT(自動応答)
Whisperの利用には、いくつかの制限があります。
-
音声ファイルの長さに制限があります。
Whisperは、デフォルトで60秒までの音声ファイルにしか対応していません。これは、CMU Sphinxがデフォルトで60秒までの音声ファイルにしか対応していないためです。ただし、Whisperのソースコードを変更することで、この制限を変更できます。 -
音声認識の精度には限界があります。
Whisperは、オープンソースの音声認識エンジンであるCMU Sphinxを使用しています。CMU Sphinxは、Googleの音声認識エンジンよりも精度が低いとされています。また、音声ファイルの品質や話者のアクセントなどによって、認識精度が大きく変わることがあります。 -
Whisperのライセンスには制限があります。
Whisperは、MITライセンスの下で提供されていますが、Whisperを使用する場合は、CMU Sphinxのライセンスにも従う必要があります。CMU Sphinxのライセンスには、商用利用の場合には別途ライセンス料が必要な場合があります。
以上の制限に留意した上で、Whisperを利用することができます。
▼私(人間)
Whisperの課金制限をもっと知りたい
▼ChatGPT(自動応答)
Whisperには、以下のような課金制限があります。
-
APIリクエスト制限
Whisperは、APIリクエストの数に応じて課金されます。無料プランでは、月間5,000リクエストまで無料で利用できます。それ以上の場合は、月額10ドルからの課金が必要になります。 -
認識時間制限
Whisperは、1回のリクエストで認識できる音声ファイルの長さに制限があります。無料プランでは、最大60秒までの音声ファイルしか認識できません。より長い音声ファイルを認識する場合は、有料プランにアップグレードする必要があります。 -
品質制限
Whisperは、音声ファイルの品質によって認識精度が大きく変わるため、品質の高い音声ファイルを使用することが推奨されています。 -
使用目的制限
Whisperの利用目的によっては、別途ライセンス料が必要になる場合があります。例えば、商用目的での利用や、Whisperを改変して独自のサービスを開発する場合などです。
以上のような制限に留意した上で、Whisperを利用することができます。詳細はWhisperの公式ウェブサイトを確認してください。
▼私(人間)
Whisperの利用には、何か登録や、手続き、アカウント作成等が必要になりますか
▼ChatGPT(自動応答)
Whisperを使用するには、Whisperの公式ウェブサイトでアカウント登録を行う必要があります。以下は、Whisperのアカウント登録手順の概要です。
- Whisperの公式ウェブサイトにアクセスし、"Sign up" ボタンをクリックします。
- 必要な情報を入力し、アカウントを作成します。
- アカウント作成後、APIキーを取得します。APIキーは、Whisperを使用する際に必要な認証情報です。
- APIキーを使用して、WhisperをPythonで使用するためのライブラリをインストールし、開発を開始します。
Whisperを使用するためには、アカウント登録とAPIキーの取得が必要ですが、無料プランを利用する場合は、クレジットカード情報の入力などは必要ありません。ただし、利用制限には留意する必要があります。
▼私(人間)
本当にアカウント登録が必要ですか?
▼ChatGPT(自動応答)
誤解を招くような回答をしてしまい、申し訳ありませんでした。実際には、WhisperはAPIキーがあれば誰でも利用可能で、アカウント登録は必要ありません。WhisperのAPIキーは、Whisperの公式ウェブサイトから取得することができます。
WhisperのAPIキーを取得するには、以下の手順を実行します。
- Whisperの公式ウェブサイトにアクセスし、"Get API Key" ボタンをクリックします。
- WhisperのAPIキーの利用規約に同意し、必要な情報を入力してAPIキーを取得します。
WhisperをPythonで使用するためには、APIキーを使用してライブラリをインストールする必要があります。具体的な手順については、Whisperの公式ドキュメントを参照してください。
▼私(人間)
Pythonライブラリwhisperを使用するのに、本当にAPIキーが必要ですか?
▼ChatGPT(自動応答)
申し訳ありませんが、前回の回答に誤りがありました。WhisperはGoogle Speech Recognitionを使用しているわけではなく、Whisperの公式ウェブサイト上にもAPIキーの取得方法などの情報が記載されていませんでした。
調査した限りでは、Pythonライブラリwhisperを使用するためにはAPIキーの取得は必要ないようです。whisperライブラリは、Pythonの標準ライブラリの一部であるSpeechRecognitionモジュールを使用しており、このモジュールはGoogle Speech Recognition APIを使用しています。したがって、Whisperを使用する場合でも、GoogleのAPIキーを取得する必要はありません。
ただし、Google Speech Recognition APIの使用には制限があります。Google Speech Recognition APIを無料で使用する場合、1か月あたりの制限は1時間までであり、有料プランを利用しなければなりません。詳細については、Googleのドキュメントを参照してください。
まとめ
- 細かい部分に関する質問では、ChatGPTの回答内容が二転三転することがある。
- 他に似たような話がある場合は、ChatGPTの回答内容が色々な話と混同することがある。
- ChatGPT自身が、よく分からないことでも、ペラペラと流暢にそれっぽい事を回答する所がある。
- この辺りの動作を見ていると、ChatGPTは質問に正しく答えるというよりは、文章の生成器であって、大量の文章を学習して高い頻度で現れる似たような文を並べて文章を生成している感が感じられる。
ChatGPTが本当にOpenAI Whisper(Pythonライブラリ)を知っているか聞いてみる
音声認識ライブラリのWhisperは、ごく最近になって情報が充実してきたので、ChatGPTの知識に無い可能性がある、ということで、ChatGPTが本当にOpenAI Whisper(Pythonライブラリ)を知っているか聞いて確認してみました。
前述のサンプルプログラムの会話の直後に引き続き(文脈を引き継いで)、ChatGPTに質問。
▼私(人間)
Pythonライブラリwhisperは、いつ公開になりましたか?
▼ChatGPT(自動応答)
PythonライブラリWhisperは、2021年に公開されました。Whisperは、Pythonの標準ライブラリの一部であるSpeechRecognitionモジュールを使用しています。SpeechRecognitionモジュールは、Google Speech Recognition APIを使用しており、WhisperはこのAPIを使用しています。
Whisperの開発者は、Whisperがより簡単にGoogle Speech Recognitionを使用できるようにすることを目的としています。Whisperを使用すると、Google Speech Recognition APIを直接呼び出す必要がなく、コードをより簡潔に記述できます。
Whisperの公式ドキュメントには、Whisperのインストール方法や使用方法についての情報が掲載されています。WhisperのGitHubリポジトリには、Whisperのソースコードが公開されています。
▼私(人間)
ChatGPTは、いつまでの知識を保有しているのでしょうか?
▼ChatGPT(自動応答)
ChatGPTは、2021年9月までの情報をベースに学習したモデルです。ただし、その後も継続的に更新され、最新の情報に基づく応答ができるように努めています。また、OpenAIはChatGPTの更新を継続して行っており、常に最新の技術や情報を反映するようにしています。
▼私(人間)
ChatGPTは、Pythonライブラリwhisperに関する知識を保有していますか?
▼ChatGPT(自動応答)
はい、ChatGPTはPythonライブラリWhisperについての基本的な知識を保有しています。Whisperは、Pythonの標準ライブラリの一部であるSpeechRecognitionモジュールを使用しており、Google Speech Recognition APIを使用して音声認識を行います。Whisperを使用することで、Google Speech Recognition APIをより簡単に利用できるようになります。Whisperの基本的な使い方や制限についても、ChatGPTは回答することができます。ただし、Whisperの詳細な使い方やAPIキーの取得方法などについては、Whisperの公式ドキュメントを参照することをお勧めします。
▼私(人間)
Pythonライブラリwhisperを無料で使用するのに、本当にAPIキーが必要ですか?
▼ChatGPT(自動応答)
PythonライブラリWhisperを使用するには、Google Speech Recognition APIを利用する必要があります。Google Speech Recognition APIは有料のサービスであり、APIキーを取得して認証する必要があります。APIキーを取得しなければ、Whisperを使用して音声認識を行うことはできません。
ただし、GoogleはSpeech Recognition APIについて、一定の無料クォータを提供しています。この無料クォータを利用することで、一定量の音声認識を行うことが可能です。ただし、無料クォータを超える場合や、より高度な機能を使用する場合には、有料プランへの移行が必要となります。
したがって、Whisperを使用する場合には、Google Speech Recognition APIの利用制限や料金プランについて理解することが重要です。
まとめ
- 音声認識ライブラリのWhisperは、ごく最近になって情報が充実してきたので、ChatGPTの知識に無い可能性がある。
- 音声認識ライブラリのWhisperを使用するのに、実際はアカウントもAPIキーも取得の必要なし。(前述の実行で確認済み) しかし、ChatGPTの回答は「APIキーを取得しなければ、Whisperを使用して音声認識を行うことはできません。」となることが多く、他のサービスのことと混同している模様。
- ChatGPT自身が、よく分からないことでも、ペラペラと流暢にそれっぽい事を回答する所がある。
- この辺りの動作を見ていると、ChatGPTは質問に正しく答えるというよりは、文章の生成器であって、大量の文章を学習して高い頻度で現れる似たような文を並べて文章を生成している感が感じられる。
参考
ChatGPTの始め方
記事: 【無料】チャットGPTの始め方を解説!
ChatGPTバージョン
ChatGPT Mar 14 Version. Free Research Preview.