Python経験10時間の者がkotoba-whisper-v2.2も試してみる

この記事は約6分で読めます。

Python経験10時間程度のプログラマー?にバージョンアップした。
とりあえず基本的な記述方法は大体理解できて、簡単なプログラムなら書けるようになった。習得コストが低いと聞いていたが、確かにその通りだ。
ただPython界隈や特にAI関連のお作法については、まるで分からない状況である。

「kotoba-whisper-v2.1」が意外と面白かったので、もともとのOpenAIのwhisperの記事をいろいろと検索していた。
すると

Nouno
Nouno

えっ「kotoba-whisper-v2.2」も、もうあるのかよ。。。

そういえば、全くと言って良いほどドキュメントを読んでいなかった。
要約すると以下のようである。

  • kotoba-whisper-v2.0 whisper-large-v3のモデルから日本語専用に最適化したもの
  • kotoba-whisper-v2.1 2.0をさらに句読点対応にしたもの
  • kotoba-whisper-v2.2 2.1に加えて複数話者を認識するもの

だそうだ。全くもって理解が間違っていた。
単純にバージョンアップしたから高速化や認識率のアップをしたとかでは無く、自分にあってるモデルを使用するのが正解らしい。
2.0から2.1にバージョンアップしたので認識率とか上がっているのだと勝手に思っていたら失敗した。。。
折角なので見つけてしまった「kotoba-whisper-v2.2」もなんだか試してみたくなった。

v.2.2はv2.1よりも設定情報が少なく、テスト環境を整えるにも一苦労だった。この程度が理解できないと全く話にならないのだろう。

まずはこれの実行が問題になった。

pip install git+https://github.com/huggingface/diarizers.git

標準のままではエラーになってインストールができない。「git」とは何ぞや?というところから理解が必要だ。
色々方法はあるらしいが、git-scm.comから「64-bit Git for Windows Setup」をダウンロードしてインストールしてしまうのが最も手っ取り早い。

そして「Hugging Face」への入会が必須でである。「Hugging Face」とは何ぞや?と思っていたら、自分が見ている「kotoba-whisper」が紹介されている場所そのものだった。。。AI関連の総本山のようなものらしい。そんな理解レベルでも何とかなるものだ。
ここで
pyannote/segmentation-3.0
pyannote/speaker-diarization-3.1
のそれぞれに対して「You need to agree to share your contact information to access this model」に対して同意する必要がある。
説明には無かったが、同意してもどうもうまく動かなかった。
旧バージョンの
pyannote/speaker-diarization-3.0
も同意する必要があるっぽい。
これまた中々ハードルが高い。

そして「Hugging Face」よりアクセストークンの発行が必要なのだが、これも注意が必要だ。
必ず「Write」を選択する必要がある。

デフォルトのままだと実行時に
huggingface_hub.errors.LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.
とかいうエラーを吐く。これで1時間は悩んだ。罠だらけである。

「Hugging Face」のアクセストークンをインストールするため
huggingface-cli login
を実行しろとあるが、これまた動かずコマンドプロンプトから

pip install -U "huggingface_hub[cli]"

を実行して、事前インストールする必要がある。
インストールが終わったらpythonを起動して

from huggingface_hub import login
login()

と入力して次の行でアクセストークンを入れるらしいのだが、何度やっても全くダメだった。
代わりに以下のようにログインの引数に入れてやるとやっと認識した。

login(token="hf_????????")

ここまでの設定と調査に5時間ほど費やしてしまった。プログラム以前にめちゃくちゃハードルが高い!

やっとの事で試しに実行してみる。
ソースファイルはやっぱりデフォルトのままだ。

import torch
from transformers import pipeline

# config
model_id = "kotoba-tech/kotoba-whisper-v2.2"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model_kwargs = {"attn_implementation": "sdpa"} if torch.cuda.is_available() else {}


# load model
pipe = pipeline(
    model=model_id,
    torch_dtype=torch_dtype,
    device=device,
    model_kwargs=model_kwargs,
    batch_size=8,
    trust_remote_code=True,
)

# run inference
result = pipe("voice.wav", chunk_length_s=15)
print(result)

最初に音声認識モデルをキャッシュへダウンロードするのだが、なぜかこの速度だった。

貧乏人回線とはいえ一応は光回線だ。v2.1は数分程度だったのに謎である。
仕方がないので1時間くらい買い物にでかけたのだが、戻ってきてもまだダウンロードしている。。。
諦めてしばらく放置していると、突然CPUファンが回り始めた。文字起こしを開始したらしい。最初は10秒くらいの音声でテストしてみたのだが、1分以上かかったが問題ないようだ。
吐き出されたデータには、SPEAKER_00というのが追加されていた。話者1人の認識なのだろう。文字起こしも全く問題ない。

ということで本番の18分25秒あるデータを文字起こししてみた。
やはり唸るRyzen。全く終わる気配が無い。CPUはやっぱり60%以上使っている状態だ。
40%位は余っているので、その間にPythonのお勉強をすること1時間。やっと終わった。
話者は2人だったのだが、SPEAKER_03まであったので4人と認識されてしまったらしい。
正確な時間は1時間04分26秒というところだった。
試しにkotoba-whisper-v2.1でも同じ音声を文字起こしをしてみたら、13分16秒で終わったので速度が全然違う。

やっぱり必要な文字起こしに合わせてバージョンを選ぶのが正解みたい。
今更だけどkotoba-whisper-v2.0も試してみる必要がありそうだ。
そして説明はきちんと読もうと反省をしたのだった。

コメント