AIを使って寝てる間に文字起こしをしてもらいたい!

AIを使って寝てる間に文字起こしをしてもらいたい!
Photo by Ritupon Baishya / Unsplash

文字起こしをAIにやらせることができたらいいなあと思い立ち、とにかくやってみた。

私のラップトップはLenovoの「ThinkBook 16p G2 ACH Laptop - Type 20YM」。詳細スペックはこんな感じ。

構成

ハードウェア構成

  • CPU: AMD Ryzen 7 5800H (3.20 GHz、8コア16スレッド)
  • GPU: NVIDIA GeForce RTX 3060 Laptop GPU (6GB VRAM)
  • メモリ: 40GB DDR4-3200 ※標準16GBから増設済み
  • ストレージ: 512GB SSD PCIe

ソフトウェア環境

  • OS: Windows 11 Pro (64bit)
  • バージョン: 24H2

パフォーマンス的なお話

このスペックでは、Whisperの中〜大型モデル(medium、large)も快適に動作できた。たぶんRTX 3060にある6GB VRAMがうまいことやってくれてる感じ。正直AIを動かすならVRAMはあればあるだけいいかも。

GPUなしでも動くっぽいけれど、さすがにSurfaceとかだと処理速度的に厳しいかも。わかんない。

音声データの準備

まずは録音から。

スマホでやるのがお手軽かな?

文字起こし

手で文字起こしなんてやってられない!

OpenAI Whisperをローカルで動かせばちょちょいと文字起こしができる!

GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
Robust Speech Recognition via Large-Scale Weak Supervision - openai/whisper

Zennで参考になりそうな記事を探していたら、Webアプリとして作り上げていた人がいたので、とりあえずこの方のプロジェクトを動かせるようにしてみる。

Streamlit+Flask+Whisperで社内オンプレ文字起こしサーバーを構築(同期処理)
Streamlit+FastAPI+Whisperで社内オンプレ文字起こしサーバーを構築(非同期処理)
GitHub - tsuzukia21/st-transcribe
Contribute to tsuzukia21/st-transcribe development by creating an account on GitHub.

Whisperのモデルについて

実はWhisperはいくつかの実装がある。

OpenAI謹製Whisper

まず、OpenAI謹製のWhisper。PythonとPyTorchを使ってる。

安定していていい感じ。

C++実装のWhisper.cpp

それを高速化する目的にC++で書き直したモデルがWhisper.cpp。ざっくり3-10倍速くなるらしい。GPUのないマシンでもサクサク動くからネットの記事なんかでもよくつかわれているのを見るのはこっち。

とはいえ、そもそもC++のビルド環境を導入するのめんどいし、ツールは少なくしたいのでPythonで閉じたくて今回は使わなかった。

GitHub - ggml-org/whisper.cpp: Port of OpenAI’s Whisper model in C/C++
Port of OpenAI’s Whisper model in C/C++. Contribute to ggml-org/whisper.cpp development by creating an account on GitHub.

CTranslate2を使って高速化をしたfaster-whisper

Whisper.cppがシンプルに高速なシステムで実装することで爆速にしたのに対して、faster-whisperは最適化をすることで爆速にした実装。

あんまりよくわかってないけど、初めてのAIだったこともあって、エラーが起きたときに場合の切り分けができるとは思えなかったので、使わなかった。

どっちも今度使ってみたいね。

GitHub - SYSTRAN/faster-whisper: Faster Whisper transcription with CTranslate2
Faster Whisper transcription with CTranslate2. Contribute to SYSTRAN/faster-whisper development by creating an account on GitHub.

導入

PyTorchの導入までがめんどくさい。

PyTorchはこうした機械学習系の王道ライブラリなのだが、PyTorchがいろいろな周辺システムのバージョンを指定してくる。自分のシステム(環境)とPyTorchの指定バージョンを考えて逆算して様々なパッケージをインストールしなければまともに動かない。別にGPUを使わなくても動くのだが、CPUをぶん回して処理をすればAIを動かしている間まともにパソコンが操作できない。せっかくGPUがある環境ならGPUを使って処理をお任せしたい。

anacondaの導入

AIといったらPythonでしょうから、とりあえず全部入りディストリビューションということでanacondaを入れる。

CUDAの導入

CUDAをとりあえずインストールすればいいというわけでもない。各GPUには対応バージョンが存在し、そのバージョンはnvidia-smiコマンドで確認できる。

> nvidia-smi

Wed Aug  6 21:28:13 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 577.00                 Driver Version: 577.00         CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3060 ...  WDDM  |   00000000:01:00.0 Off |                  N/A |
| N/A   52C    P8             10W /   60W |       0MiB /   6144MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

CUDA Version: 12.9とあるので「CUDA 12.9」とググり、ダウンロードしてインストールを済ませる。

CUDA Toolkit 12.9 Downloads

CUDA 12.9のダウンロードページ

cuDNNの導入

cuDNN

cuDNNは配布方法が変わったらしく、特にユーザー登録などしなくても普通にダウンロードできるようになった。いろいろ探し回ったが、ここからダウンロードできる。

CUDA Deep Neural Network
cuDNN provides researchers and developers with high-performance GPU acceleration.

cuDNNはここからダウンロードできた

これで導入が済んだかと思いきや、動かしたときにGPUを使ってくれなかった。

どうやらPyTorchのバージョン指定に合わせてやらねばならないようだ。

いろいろ考えたが、Pythonのほうでバージョンを固定した方が楽だと思ったので、次のコマンドでcuda-versionを12に指定してインストールする。

> conda install nvidia::cudnn cuda-version=12

PyTorchの導入

PyTorch
PyTorch Foundation is the deep learning community home for the open source PyTorch framework and ecosystem.

Get Startedから環境にあったPyTorchを導入する。

Get Started
Set up PyTorch easily with local installation or supported cloud platforms.

こんな感じで自分の環境を指定すると、適切なPyTorchをインストールするコマンドを教えてくれる。

  • PyTorch Build:Stable (2.8.0)
  • Your OS: Windows
  • Package: Pip
  • Language: Python
  • CUDA: 12.9
> pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126

私はこのコマンドが出てきた

ということでコマンドをコマンドラインから実行してPyTorchの導入はOK。

ここまでの確認

ここまでいろいろやってきたが、要するにすべてPyTorchのためだ。ここでつまづくと先に進めないので、とにかくここまで行ったかを確かめる。

> python
  >> import torch
  >> torch.cuda.is_available() // tureが返ってくればOK

Gitの導入

インストールにでてくるいろいろな選択肢は面倒なのでデフォのまま全部「次へ」。

Git - Downloading Package

仮想環境の立ち上げ

anaconda navigatorから仮想環境を作っておく。別にコマンドラインからやってもいいです。

私はWhiseprという名前の仮想環境を作りました。

Whisperの導入

> pip install -U openai-whisper

ffmpegの導入

音声や動画をいじる際に何かと便利なのでこの際ffmpegを導入しておく。

Download FFmpeg

release buildsから7zipファイルをダウンロード。

仮想環境でだけ使いたい人はこっちでffmpegを導入

conda-forgeからffmpeg

> conda install -c conda-forge ffmpeg

Pythonパッケージの導入

> conda install flask streamlit

実行方法

st-transcribeを実行する

ターミナル一つ目

> conda activate Whisper
> python server_fastapi.py

ターミナル二つ目

> conda activate Whisper
> streamlit run app_fastapi.py

単にWhisperを使う

単純にファイルを解析してもらう

> conda activate Whisper
> whisper audio.flac audio.mp3 audio.wav --model turbo

感想

正直一人で使うだけで、メモリの余裕もないので、コマンドラインから素直に処理をさせるだけで私には十分だった。

文字起こしの精度だが、Largeモデルでは非常に実用的な水準の品質が出ていると思う。ただ、速度が1xなので、音声ファイルの長さ分だけ処理に時間がかかるということ。1時間の音声ファイルの解析に1時間かかるのでうーん。Turboモデルは速度が出てとてもいいのだけれど、やはり精度は落ちる。

音声ファイルの容量制限がないのもいい。何時間の録音だろうが、すきにAIに投げれば処理してもらえるのですごくいい。ローカルで動かしているので、API使用制限といったものなんてないので何も考えずに使えるのは心が軽くていい。

改善の余地はあるかも知れないが、初期投資ゼロで何かのサービスを契約することもなく非常に実用的な文字起こしアシスタントを使うことができるようになったと考えると満足度はとても高い。おすすめ。

余談

記事を書いている途中にgpt-ossが発表され、GPT-5が登場し、Claude Opus 4.1が出てきて……

AIの分野は動きが速いうえに多い!しかも、どんどん高性能で出ても届きやすくなっているからうれしい。もうしばらくしたら本当にお手軽パーソナルAIが実現できるかもね。楽しみ​

Read more

怪物の口に幸福が吸い込まれる

幸福の総量を最大化する。それが正しいと言われてきた。しかし1974年、ロバート・ノージックはたった一つの問いでその前提を破壊した。もしある存在が、他の全員よりも圧倒的に多くの快楽を得られるなら、功利主義は全員の取り分をその「怪物」に差し出すことを要求する。 あなたの幸福は計算の端数だった。切り捨てられた。 幸福を貪る口 1974年、ロバート・ノージックは『アナーキー・国家・ユートピア』のなかで一つの思考実験を置いた。 功利主義は、効用の怪物の可能性によって困惑させられる。怪物は、他の人々の犠牲から、その人々が失う以上に圧倒的に大きな効用の増加を得る。 仕組みは単純だ。功利主義の原則に従えば、社会全体の幸福を最大化する資源配分が「正しい」。ここに一人、あらゆる資源からとてつもない快楽を引き出す存在が現れたとする。りんご一個で他の百人分の快楽を得る。映画を一本見れば千人分の歓喜を感じる。 功利主義はこの怪物にすべてを差し出すことを要求する。他の全員が飢えても、怪物の快楽が総量を上回る限り、それが「最善」だと計算は告げる。 ノージックが示したかったのは、功利主義が論理的に正し

By Sakashita Yasunobu

綱を引く手が一本ずつ消えていく

あなたは集団のなかで、少しずつ消えている。 それは比喩ではない。測定可能な事実だ。19世紀末、フランスの農学者マクシミリアン・リンゲルマンは、人が集団で綱を引くとき、一人あたりの力が確実に減少することを発見した。人数が増えるほど、個人は薄まる。誰のせいでもなく、誰も怠けているわけではなく、ただ構造がそうさせる。 もしあなたがいま、何かのチームに属しているなら、あなたはすでに全力を出していない。そしてそのことに、おそらく気づいてもいない。 綱を引く手が教えたこと リンゲルマンの実験は素朴だった。 1880年代から1900年代初頭にかけて、彼は農業機械の効率を研究する過程で、人間が集団で水平方向に荷を押したり引いたりする際のパフォーマンスを測定した。その結果は1913年に報告されている。一人で綱を引くとき、その人間は持てる力をすべて発揮する。二人になると、一人あたりの出力は約93%に落ちる。三人で85%。八人になると、49%。半分以下だ。 この数字の意味を考えてみてほしい。八人で綱を引いているとき、あなたは一人のときの半分も力を出していない。しかもそのことに自覚がない。全員が

By Sakashita Yasunobu

嘘が真実を食い尽くす朝

「この文は嘘である」 この一文を前にして、あなたは立ち往生する。もし真だとすれば、文の内容に従って偽になる。もし偽だとすれば、「嘘である」という主張が間違っていることになり、真になる。真だと仮定しても偽だと仮定しても、反対の結論にたどり着く。出口がない。 これは言葉遊びではない。2300年以上にわたってこの問いに取り組んできた哲学者と論理学者たちは、いまだに合意に至っていない。解決策はいくつも提案されてきた。どれも、別の問題を抱えている。 あなたが自分自身について何かを語ろうとするとき、同じ構造がそこにある。 循環の入口 試しにやってみてほしい。「この文は嘘である」が真か偽か、判定する。 真だと仮定する。この文は「嘘である」と主張しているのだから、偽になる。仮定と矛盾する。 では偽だと仮定する。「嘘である」という主張が偽ということは、嘘ではない。つまり真になる。やはり仮定と矛盾する。 どちらに転んでも矛盾する。そしてこの矛盾は、推論のどこかでミスを犯したから生じたのではない。前提そのものに埋め込まれている。 エピメニデスの不発弾 よく混同されるが、古代ギリシアの

By Sakashita Yasunobu

何でも飾れる額縁だけが残った

1917年、マルセル・デュシャンは既製品の男性用小便器に「R. Mutt」と署名し、「泉(Fountain)」と名づけてニューヨーク独立芸術家協会の展覧会に出品した。拒否された。それだけの話だ。だが「それだけ」のはずの出来事が、それ以降のすべての芸術を汚染した。美しさも技巧も素材の選択も関係ない。署名ひとつ、提示の身振りひとつで、便器が「芸術」を名乗れる。そしてその瞬間から、「芸術とは何か」という問いは回答不能になった。回答不能のまま、100年以上が過ぎている。 目で見えないものが芸術を決める 1964年、アンディ・ウォーホルはスーパーマーケットに並ぶブリロの箱と見た目がまったく同じ「ブリロ・ボックス」をギャラリーに置いた。哲学者アーサー・ダントーは、この事態に根本的な問いを見出した。視覚的に区別できない二つの対象のうち、片方だけが芸術である。では芸術を芸術にしているのは何なのか。 ダントーの答えは「アートワールド」だった。芸術作品を芸術たらしめるのは知覚可能な性質ではなく、理論と批評と歴史が編み上げた解釈の共同体、その「理論的雰囲気」なのだと。あなたには何も見えていない。文字

By Sakashita Yasunobu