😸

生成AIをGoogle Colaboratoryで簡単に 【Part4 音声認識AI Whisper API編】

2024/07/11に公開

はじめに

今回は、初心者向けにGoogle Colaboratoryで、簡単に生成AIを使えるようにする環境を作ります。

Part4の今回は、音声認識AIを使えるようにします。
今回利用する音声認識AIはWhisper APIになります。
ちなみにPart1はこちらです

なお、今回Part4ですが、Part1,Part2,Part3の内容を読まなくても、わかるように記載しています。

Part4では音声認識AIとしてOpen AIのAPIであるWhisper APIを利用して、音声認識を試します。
その後、Part5以降で、Whisper、faster-whisperなどのローカル環境で高速に動作するモデルなども試していきます。

また、音声認識AIを利用した音声対話システムに関しても、下記で記事を書いています。
もし興味があれば一読いただけますと幸いです。
https://zenn.dev/asap/articles/5b1b7553fcaa76

Whisper API とは

Whisper APIとはOpenAIが開発した音声認識AIであるWhisperをAPIとして呼び出し、実行することができるサービスです。

公式の解説は下記になります。
https://platform.openai.com/docs/guides/speech-to-text
また、大元のWhisperの実装は下記のGithubにて公開されています。
https://github.com/openai/whisper

そもそも音声認識AIというのは、音声の中に含まれる人間の発話内容をテキストに文字起こしするAIになります。
音声対話システムを構築する際には、音声から文字起こしをする技術は必須の技術になります。
音声対話システムでは、この文字起こし内容からChatGPTなどの大規模LLMにより、返答内容を生成し、その後、合成音声AIにより返答内容をAIに発話させることで、音声対話を実現しています。

ちなみに、合成音声AIに関してはPart1で、大規模言語モデルに関してはPart2,Part3で解説していますので、興味がある方はそちらもご覧いただけますと幸いです。

成果物

下記のリポジトリをご覧ください。
https://github.com/personabb/colab_AI_sample/tree/main/colab_WhisperAPI_sample

解説

下記の通り、解説を行います。
まずは上記のリポジトリをcloneしてください。

./
git clone https://github.com/personabb/colab_AI_sample.git

その後、cloneしたフォルダ「colab_AI_sample」をマイドライブの適当な場所においてください。

ディレクトリ構造

Google Driveのディレクトリ構造は下記を想定します。

MyDrive/
    └ colab_AI_sample/
          └ colab_WhisperAPI_sample/
                  ├ inputs/
                  |    └ audio_recognition/
                  |             └ xxxxx.wav
                  └ WhisperAPI_sample.ipynb

  • colab_AI_sampleフォルダは適当です。なんでも良いです。1階層である必要はなく下記のように複数階層になっていても良いです。
    • MyDrive/hogehoge/spamspam/hogespam/colab_AI_sample
  • audio_recognitionフォルダには、文字起こしを行う音声を格納します。
    • 下記のフォーマットであればよさそうです
      • mp3, mp4, mpeg, mpga, m4a, wav, webm

事前準備

WhisperのAPIを利用するためには、Open AIのAPIキーを取得する必要があります。
APIキーの取得方法は下記をご覧ください。
https://qiita.com/shimmy-notat/items/1e22dcdaa06ea54208ac

また、取得したAPIキーをGoogle Colabに登録する必要があります。
下記の記事を参考に登録してください。
https://note.com/npaka/n/n79bb63e17685

使い方解説

WhisperAPI_sample.ipynbをGoogle Colabratoryアプリで開いてください。
ファイルを右クリックすると「アプリで開く」という項目が表示されるため、そこからGoogle Colabratoryアプリを選択してください。

もし、ない場合は、「アプリを追加」からアプリストアに行き、「Google Colabratory」で検索してインストールをしてください。

Google Colabratoryアプリで開いたら、WhisperAPI_sample.ipynbのメモを参考にして、一番上のセルから順番に実行していけば、問題なく最後まで動作して、音声文字起こしをすることができると思います。

コード解説

主に、重要なWhisperAPI_sample.ipynbについて解説します。

WhisperAPI_sample.ipynb

該当のコードは下記になります。
https://github.com/personabb/colab_AI_sample/blob/main/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb

下記に1セルずつ解説します。

1セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
#Whisper APIで必要なモジュールのインストール
!pip install openai

ここでは、必要なモジュールをインストールしています。
Google colabではpytorchなどの基本的な深層学習パッケージなどは、すでにインストール済みなため上記だけインストールすれば問題ありません。

2セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
#Google Driveのフォルダをマウント(認証入る)
from google.colab import drive
drive.mount('/content/drive')

#OpenAIのAPI_keyを設定する
#設定方法は下記を参照
#https://note.com/npaka/n/n79bb63e17685

from google.colab import userdata
api_key = userdata.get('OPENAI_API_KEY')

# カレントディレクトリを本ファイルが存在するディレクトリに変更する。
import glob
import os
pwd = os.path.dirname(glob.glob('/content/drive/MyDrive/**/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb', recursive=True)[0])
print(pwd)

%cd $pwd
!pwd

ここでは、Googleドライブの中身をマウントしています。
マウントすることで、Googleドライブの中に入っているファイルを読み込んだり、書き込んだりすることが可能になります。

マウントをする際は、Colabから、マウントの許可を行う必要があります。
ポップアップが表示されるため、指示に従い、マウントの許可を行なってください。

さらに、先ほど取得して、Google colabに登録したOpenAIのAPIキーを取得して、api_keyに格納します。

また、続けて、カレントディレクトリを/から/content/drive/MyDrive/**/colab_WhisperAPI_sampleに変更しています。
**はワイルドカードです。任意のディレクトリ(複数)が入ります)
カレントディレクトリは必ずしも変更する必要はないですが、カレントディレクトリを変更することで、これ以降のフォルダ指定が楽になります

3セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
#モジュールをimportする
from openai import OpenAI
# OpenAIクライアントの初期化
client = OpenAI(api_key = api_key)

ここではAPIを利用するために、OpenAIのクライアントの初期化を行なっています。

4セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
#文字起こしするファイルを指定する。下記はサンプルファイルです。
#音声自体は下記のサイトよりお借りしております。
#https://amitaro.net/voice/corpus-list/mana-corpus/

wav_path = "./inputs/audio_recognition/MANA_yofukashi_QUESTION_007.wav"

ここでは、文字起こしを行う音声ファイルのパスを設定しています。
このパスで指定している場所に、文字起こしをしたい音声ファイルが格納されていることを確認してください。

ちなみに上記で設定しているサンプルファイルは下記よりお借りしております。
https://amitaro.net/voice/corpus-list/mana-corpus/

5セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
print("transcribe start!")
transcription = client.audio.transcriptions.create(model="whisper-1", 
                        language="ja",
                        file=open(wav_path, "rb"),
                        response_format="verbose_json",
                        #prompt = ""
                        )

print(transcription.text)

ここではWhisper APIを利用して、音声ファイルの文字起こしをおこなっております。
文字起こしした文章transcription.textを表示しています。

6セル目

./colab_AI_sample/colab_WhisperAPI_sample/WhisperAPI_sample.ipynb
print("transcribe start!")
transcription = client.audio.transcriptions.create(model="whisper-1", 
                        language="ja",
                        file=open(wav_path, "rb"),
                        response_format="verbose_json",
                        prompt = "こんにちは!今日は、あんまり、元気じゃないかな・・・君はどう?"
                        )

print(transcription.text)

ここではWhisper APIを利用して、音声ファイルの文字起こしをおこなっております。
前のセルに加えてpromptを追加しています。ここで追加した文章に近い形で文字起こしをしてくれるようになります。
またこのpromptに、専門用語などを追加することで、通常であれば聞き取りにくい専門用語を文字起こししてくれるようになります。
文字起こしした文章transcription.textを表示しています。`

まとめ

今回は、初心者向けにGoogle Colaboratoryで、簡単に生成AIを使えるようにする環境を作りました。

Part4の今回は、生成AIの一つ、音声認識AIのWhisper APIを使えるようにしました。

さらに、音声認識AIを利用した音声対話システムに関しても、下記で記事を書いています。
(ここではfaster-whisperというローカルで動かすAIモデルを利用しています。そちらも記事にする予定です)
もし興味があれば一読いただけますと幸いです。
https://zenn.dev/asap/articles/5b1b7553fcaa76

次回Part5では、ローカルで動く音声認識AI Faster-whisperを使えるようにしたいと思います。

Discussion