この記事を作った動機

 Intel Arc で音声からの文字起こしができる Whisper を動かせることが分かったので記録したい。Whisper は PyTorch を使っているが、それを XPU に対応したものに差し替えることで動作が確認できたことに関して、具体的に作業内容を記録したい。

 Whisper を使った文字起こしでは、Vibe を使うことでもできるが、Nvidia の CUDA 環境で無い限り、Intel Arc 環境においては、Vulkan を使ってしまう。PyTorch 環境においては XPU を使わなければ、Intel Arc の GPU 性能をフルに使い切れていない様相が見受けられたことも背景にある。

環境の前提

  • Intel Arc を使っている
  • Conda 環境を導入済み
  • Linux 環境

記事の作業内容のまとめ

conda create -n whisper
conda activate whisper
conda install pip
pip install -U openai-whisper
pip uninstall torch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu

Whisper のインストール

conda 環境を専用に作る

conda create -n whisper
conda activate whisper
conda install pip

whisper を pip でインストール

 一旦 Nvidia 環境用の pytorch などがインストールされてしまうが、一旦はインストールを終わらせる。

pip install -U openai-whisper

この時点でXPUを動かそうとすると?

 以下のようなエラーを吐いて動作しない。要約すれば、“インストールされている PyTorch が xpu に対応していない"と怒られているだけである。

whisper edited3.mp3 --language Japanese --device xpu  --model large
100%|█████████████████████████████████████| 2.88G/2.88G [05:03<00:00, 10.2MiB/s]
Traceback (most recent call last):
  File "/home/userName/.conda/envs/whisper/bin/whisper", line 6, in <module>
    sys.exit(cli())
             ~~~^^
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/whisper/transcribe.py", line 595, in cli
    model = load_model(model_name, device=device, download_root=model_dir)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/whisper/__init__.py", line 151, in load_model
    checkpoint = torch.load(fp, map_location=device, **kwargs)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 1570, in load
    return _load(
        opened_zipfile,
    ...<3 lines>...
        **pickle_load_args,
    )
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 2190, in _load
    result = unpickler.load()
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/_weights_only_unpickler.py", line 541, in load
    self.append(self.persistent_load(pid))
                ~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 2154, in persistent_load
    typed_storage = load_tensor(
        dtype, nbytes, key, _maybe_decode_ascii(location)
    )
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 2116, in load_tensor
    wrap_storage = restore_location(storage, location)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 1915, in restore_location
    return default_restore_location(storage, map_location)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 734, in default_restore_location
    result = fn(storage, location)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 667, in _deserialize
    device = _validate_device(location, backend_name)
  File "/home/userName/.conda/envs/whisper/lib/python3.14/site-packages/torch/serialization.py", line 634, in _validate_device
    raise RuntimeError(
    ...<5 lines>...
    )
RuntimeError: Attempting to deserialize object on a XPU device but torch.xpu.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

XPU に対応した PyTorch を入れる

既にインストールされた Nvidia 向け PyTorch を排除

 この時点で Nvidia 向けの PyTorch 環境を消さないと既に PyTorch がインストールされているとして XPU 向けの PyTorch が入らない。

pip uninstall torch

XPU 向けの PyTorch をインストール

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu

Whisper を動かしてみる

conda activate whisper
whisper edited3.mp3 --language Japanese --device xpu  --model large
# ...
# [00:21.000 --> 00:28.000] Test Test ...
# ...

使った画像とか

参考にしたサイトとか