Windows 11 で pyコマンド（Python Launcher for Windows）による仮想環境構築 ＋ OSS版の Whisper【Python-3】 

この記事は 12/29 に書いたのですが、後から「[Python Advent Calendar 2024](https://qiita.com/advent-calendar/2024/python)」の 2日目の記事としても後から登録してみました。

ちなみに、今年の Python のアドベントカレンダーに登録した記事としては 3つ目で、1つ目・2つ目は以下を書いて登録していました。

- [Microsoft の「MarkItDown」で Officeファイルを Markdownファイルに変換【Python】 - Qiita](https://qiita.com/youtoy/items/e0495701f03c1875e032)
- [Windows 11 で pyコマンド（Python Launcher for Windows）を使った仮想環境構築【Python-2】 - Qiita](https://qiita.com/youtoy/items/b60017afb7a87b8001cc)

## はじめに
今回の記事で扱う内容は、OpenAI が 2022年9月に GitHub に公開した OSS版の Whisper の話です。
（以前試していた時があったのに、記事を書いてなかった...）

https://x.com/youtoy/status/1572927664301961219

それを、以下の記事でも書いた環境・方法で使います。

●Windows 11 で pyコマンド（Python Launcher for Windows）を使った仮想環境構築【Python-2】 - Qiita
 https://qiita.com/youtoy/items/b60017afb7a87b8001cc

### 余談： OSS版以外の Whisper について
OSS版の Whisper以外のものは、以下のように記事で書いてみたり、お声がけいただいたイベントで扱ったりしました。

#### Azure経由での API利用
●curlコマンドで Azure OpenAI Service の tts-1 を使って音声合成して whisper による音声認識も行う - Qiita
 https://qiita.com/youtoy/items/ab77d552d8d18afb14e7

#### OpenAI の API版

https://x.com/youtoy/status/1639653790617063424

https://x.com/youtoy/status/1653646238162771971

## 今回のお試し
実際に今回の内容を試していきます。

### 当初はエラーになった件の対応
自分の環境でのインストールで当初はエラーが出た話があり、それがセットアップの最初の段階に影響するのでここで触れておきます。

具体的には Python 3.13系は非対応のようなので（※ 以下が情報源）、Python 3.12系を使うようにしたという話です。

●[BUG] Windows install Whisper not working · Issue #123 · quic/ai-hub-models
 https://github.com/quic/ai-hub-models/issues/123

https://x.com/youtoy/status/1873188830628761799

お試し用の環境に Python の 3.13系だけ入れていたので、[Python.org の Python Releases for Windows](https://www.python.org/downloads/windows/) から 3.12系をダウンロードして追加します。

### 仮想環境の構築
pyコマンドによる環境構築は、前に書いた記事と同じやり方で myenv という名称で作ってみます。

ただし今回の自分の環境では、上で書いていたバージョン関連の話があったため、3.12系の Python を仮想環境で使うための指定を入れています（※ `py` の後の `-3.12` の部分）。

```
py -3.12 -m venv myenv
.\myenv\Scripts\activate
```

念のため `python -V` を実行してみて、`Python 3.12.8` と出力されたのを確認しました。


### Whisper を使うための準備
そして以下にある手順で、仮想環境内で Whisper を使える環境を作ります。

●openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
 https://github.com/openai/whisper

pip を使ったインストールは、GitHub のリポジトリで書かれている中の以下のコマンドを使いました。

```
pip install -U openai-whisper
```

さらに公式の記載にあるとおり [ffmpeg](https://www.ffmpeg.org/) も使える状態にしておいてください。

### まずはコマンドで試す
まずは whisper をコマンドで試します。

処理対象となるオーディオファイルを[「リポジトリにある whisper/tests/jfk.flac」](https://github.com/openai/whisper/blob/90db0de1896c23cbfaf0c58bc2d30665f709f170/tests/jfk.flac) として、以下を実行しました。

```
whisper jfk.flac --model turbo
```

そうして得られた結果は以下のとおりです。

> Detected language: English
[00:00.000 --> 00:10.380]  And so, my fellow Americans, ask not what your country can do for you, ask what you can do for your country.

問題なく結果を得られました。

### Python での処理を試す
公式で書かれているサンプルコードを活用して、Python を使った処理を試します。

対象となる音声ファイルだけ修正した、以下のコードとしました。

```python
import whisper

model = whisper.load_model("turbo")
result = model.transcribe("jfk.flac")
print(result["text"])
```

上記を実行した結果として、以下が得られました。

>  And so, my fellow Americans, ask not what your country can do for you, ask what you can do for your country.

こちらも問題なく結果を得ることができました。

#### モデルについて
上記の処理の際、モデルで「turbo」を指定しています。しかし、そのファイルは取得していませんでした。

その場合、処理の実行時にモデルのダウンロードが行われ、それが完了してから whisper の処理が始まる流れになります。