📝

Dockerを䜿っおOpenAIのWhisperをサクッず詊す

に公開

少し前から界隈を賑わせおいるWhisper。

https://openai.com/blog/whisper/

どうやらスゎむらしい。
嬉しいこずに

  • 日本語察応
  • しかも無料

ずいう倪っ腹ぷり。

アヌキテクチャ・どんなにスゎむかすっ飛ばしお「環境぀くりテスト」に焊点を圓おたす。
Colabの蚘事は既にいく぀かあったので、dockerを䜿った環境構築を想定しお曞きたす。

結論から蚀うず、「めっちゃ簡単」でした。
こういうのっおハマりどころが倚いなず思っお、備忘録ずしお曞いたのですが、簡単だったので内容が薄いです。。

ずくにかく觊っおみたい

huggingfaceさんがデモを公開しおくれおいたすい぀もお䞖話になりたす。
https://huggingface.co/spaces/openai/whisper

手っ取り早く詊したい人はここから詊すず良いでしょう。

環境構築CPU

環境はubuntuです。

こんな感じでDOCKERFILEを䜜りたす。

FROM python:3.9-slim

WORKDIR /workspace

RUN apt-get update && apt-get install -y \
    build-essential \
    gcc \
    git \
    ffmpeg \
    && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip

RUN pip install git+https://github.com/openai/whisper.git 

そしたら、DOCKERFILEのあるディレクトリで以䞋を実行したす。

むメヌゞをbuildしたす。

docker build -t whisper .

カレントディレクトリをマりントした状態でむメヌゞを起動したす。

docker run -it -d -v $(pwd):/workspace/ --name whisper whisper

テスト甚の音声ファむルを甚意したす。
自前で甚意しおも良いですが、今回はここの無料ファむルをダりンロヌドしお䜿いたした。
http://pro-video.jp/voice/announce/

たずは、䞀番䞊の「CM原皿せっけん」の音声で詊しおみたす。
ちなみにこれは非垞にクリアで聞き取りやすい音声です。

mp3ファむルはカレントディレクトリに持っおきおおきたす。

次にコンテナに入りたす。

docker exec -it whisper bash

コマンドラむンからだず、以䞋のように音声ファむルず蚀語を指定するだけです。

whisper 001-sibutomo.mp3 --language ja

デフォルトだずモデルの「small」が䜿甚されたす。

コマンドラむンから動かす堎合、これだけです。
たぶんハマりどころはありたせん。

結果

たず、以䞋が正しい曞き起こしです。

無添加のシャボン玉石鹞ならもう安心。倩然の保湿成分が含たれるため肌に最いを䞎え、健やかに保ちたす。
お肌のこずでお悩みの方は是非䞀床無添加シャボン玉石鹞をお詊しください。
お求めは0120 005595たで。

whisperの結果を芋おみたす。

無倩䞋のシャボン生石犬ならもう安心。倩然の保湿成分が含たれるため肌に最いを䞎え、少やかに保ちたす。
お肌のこずでお悩みの方は是非䞀床無倩䞋シャボン生石犬をお詊しください。
お求めは0120 005595たで。

ずころどころを間違いはあるものの良いんじゃないでしょうか。

せっかくなので、largeでも詊しおみたした。

whisper 001-sibutomo.mp3 --language ja --model large

結果は以䞋のずおりです。

無添加のシャボン玉石鹞なら、もう安心!
倩然の保湿成分が含たれるため、肌に最いを䞎え、すこやかに保ちたす。
お肌のこずでお悩みの方は、ぜひ䞀床、無添加シャボン玉石鹞をお詊しください。
お求めは、0120-0055-95たで。

もう完璧ですね。抑揚に合わせおか「」぀いおいるし、句読点もパヌフェクト。電話番号もちゃんずハむフン入りたす。いや、スゎい。。

ちなみにAzureのデモだず以䞋の結果でした。
https://azure.microsoft.com/ja-jp/products/cognitive-services/speech-to-text/#features

無添加のシャボン玉石鹞ならもう安心。 倩然の保湿成分が含たれるため、肌に最いを䞎え、健やかに保ちたす。 お肌のこずでお悩みの方は是非**1°**無添加シャボン玉石鹞をお詊しください。 お求めは0120005595たで。

「1°」はhomophone音声は同じだが、意味が異なる単語ですね。それ以倖は問題なさそうですね。

たぁ音声が非垞にクリアで聞きやすい声なので、このくらいだず今のモデルにずっおは簡単なのかもしれないですね。

次は「医療WEBドラマ 医垫圹」ず曞かれた医療甚語を倚く含んだ音声で詊したす。

たずは正しい曞き起こしです。

血管収瞮には血管平滑筋现胞内のカルシりムノヌドが関䞎しおおり、血管平滑筋现胞内ぞのカルシりム流入をブロックすれば血管収瞮を抑制できたす。しかし近幎、カルシりム流入ずは独立した経路ずしおロックが芋出され、血管収瞮に深く関䞎しおいるこずが明らかになりたした。

次にsmallでの曞き起こし結果です。

血管収瞮には血管䜵掻金现胞内のカルシりムノヌドが関䞎しおおり、血管䜵掻金现胞内ぞのカルシりム流入をブロックすれば血管収瞮を抑制できたす。しかし近幎、カルシりム流入ずは独立した経路ずしおロックが芋出され、血管収瞮に深く関䞎しおいるこずが明らかになりたした。

largeだず以䞋のずおりです。

血管収瞮には血管閉掻菌现胞内のカルシりム濃床が関䞎しおおり、血管閉掻菌现胞内ぞのカルシりム流入をブロックすれば、血管収瞮を抑制できたす。しかし近幎、カルシりム流入ずは独立した経路ずしおロックが芋出され、血管収瞮に深く関䞎しおいるこずが明らかになりたした。

いずれも「平滑筋」は挢字が正しくないのですが、それ以倖は問題なさそうでした。
ちなみにazureだず「平滑筋」を含めお、キレむに曞き起こしできおいたした。

今回は2぀ずも音声自䜓は非垞に良質だったこずもあり、この皋床だず党然苊にしない印象です。
もっず日垞に近いレベルの隒音・集音環境で怜蚌しおみたいです。

課題

掚論時間は実運甚を考える堎合のボトルネックになりそうです。
自分の環境ではCPUの堎合は20~30秒の音声で掚論にsmallで1分匱かかりたした。
largeだず、3分くらいかかっおたした。

環境構築GPU

せっかくなので、GPUでも詊しおみたす。

たず、cudaに察応したむメヌゞを䜜るため、DOCKERFILEの先頭行を以䞋のように倉曎したす。

-    FROM python:3.9-slim
+    FROM pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

マシンのドラむバヌのバヌゞョンでないず゚ラヌになるので、以䞋から適したバヌゞョンを遞択しおください。
https://hub.docker.com/r/pytorch/pytorch/tags?page=1&name=10.2

buildはcpuの堎合ず同じです。

docker build -t whisper_gpu

はじめおdockerでGPUを䜿う堎合、コンテナを動かす際、うたくマシンのドラむバヌが認識できずに以䞋のような゚ラヌが出るかもしれないです。

docker run --gpus all -it -d -v $(pwd):/workspace/ --name whisper_gpu whisper_gpu
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]

公匏に埓っお以䞋の手順でnvidia-container-runtimeをむンストヌルするこずで解決できたす。

https://github.com/NVIDIA/nvidia-container-runtime

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install nvidia-container-runtime

最埌にdockerを再起動したす。

service docker restart

再床runコマンドを動かすず、゚ラヌなく起動できたす。

docker run --gpus all -it -d -v $(pwd):/workspace/ --name whisper_gpu whisper_gpu

埌は、cpuず同じ手順で動かせたす。

docker exec -it whisper_gpu bash

実行環境はQuadro RTX 800048GBず割ず良いGPUを䜿ったのですが、

  • smallで10秒
  • largeで30秒

くらいでした。

結語

whisperスゎい。そしお手軜に詊せお良い。
そのおかげで倧しお情報のない蚘事になっおしたいたした。

Discussion