見出し画像

Whisper×Google Colabで無料文字起こし|初心者でもできる?環境構築と手順まとめ

最近、AIを使った文字起こしの精度が向上して話題になっていますが、その中でも特に評価が高いのがOpenAIの「Whisper」だと思います。

今回は「Whisper」とブラウザ上でプログラミング言語のPythonが動かせる「Google Colab(Google Colaboratory)」を組み合わせて、無料で高精度な文字起こし(反訳)環境を作る方法をまとめてみました。

打合せの議事録作成やインタビューの書き起こしなど、手作業だと気が遠くなる作業も、AIの力を借りれば楽になると思います。




◆Whisperを使う方法はいくつかある


1.公式ライブラリを使うスタンダードな方法


自分のPCにGPU(グラフィックボード)が載っていなくてもWhisperを動かす方法が、OpenAIが公開している公式ライブラリとGoogle Colabを組み合わせる方法です。

現時点では無料版のColabでも比較的安定して動作します。
特別なカスタマイズも不要で手軽に始められるのがメリットですが、この方法だと(使用するモデルにもよりますが)録音時間と同じかそれ以上の処理時間がかかってしまうこともあります。

2.高速で処理する「faster-whisper」と ColabのGPUの組み合わせ

前記の方法だと「時間がかかりすぎる……」と感じることもあったので、今回は「faster-whisper」とColabのGPUの組み合わせの方法も試してみました。

「faster-whisper」はWhisperのモデルを、高速な推論エンジン(CTranslate2)用に再実装したもののようで、精度はあまり変わらないまま処理スピードを引き上げてくれます。

またPCのスペックが低くてもGoogle Colabを使えばクラウド上のGPUを利用できるため、この恩恵を受けることも可能です。

ただし注意点として無料版のColabは混雑状況によってGPUが割り当てられないことや、一定時間で接続が切れてしまうといった制限があるようです。

自分の環境では成功しましたが「faster-whisperとColabのGPUの組み合わせ」で上手く処理が進まない場合は、時間はかかりますが上記「1」の標準的な方法(CPU処理)に切り替えたほうが作業自体は確実に進められるかもしれません。


今回の記事で解説する内容

今回は、以下の2つのステップに分けて手順を整理していきます。

①「Whisper」とColabを組み合わせたシンプルでスタンダードな手順

②「faster-whisper」とColabのGPUを活用して高速化させる方法

処理スピードを優先するなら、②のColabでGPUを活用する方法が有利ですが、前記のとおり無料版Colabの混雑状況によっては不安定になることもあるようなので、その際は「1」の方法で進めるのが結果的にスムーズになることもあると思います。

なお、ご自身でGPUを搭載したPC(Windowsの自作PCやゲーミングノートなど)をお持ちであればローカル環境に「faster-whisper」を導入することで、ネット環境やクラウドの制限に左右されず、安定した文字起こし環境を手に入れることもできます。
自前マシンでの構築手順については、別の記事でまとめています。

※PC操作に詳しくない方でも再現できるよう丁寧に整理したつもりですが、
私自身、Pythonに関しては全く詳しい訳ではなく、試行錯誤しながら環境を構築した「備忘録」のような内容なので、実際に試される際は自己責任でお願いいたします。



◆①「Whisper」とColabを組み合わせたスタンダードな手順


【前準備】(基本的に1回設定すれば良い)

1.Google Colaの準備する


まずはGoogle Colabにアクセスして作業場を作ります。

Google Colab: https://colab.research.google.com/


アクセスしたら「ノートブックを新規作成」をクリックします。
作成したノートブックの名前(画面左上の「Untitled0.ipynb」の部分)は、あとで見て中身がわかるように「Whisperで文字起こし」などに変更しておくと良いと思います。


2.Whisperのインストール


次に、文字起こしに必要なツール一式をインストールします。
以下のコードをセル(入力欄)に貼り付けて、実行ボタン(再生マーク)を押します。

!pip install openai-whisper
!sudo apt update && sudo apt install ffmpeg -y


ffmpegが必要なのか?

Whisperは内部で音声をデコード・変換しながら処理を行います。
その時にに使われるのが「ffmpeg」というツールです。
MP3やM4A、AACといった圧縮音源を扱う際に必要となるツールなので、入れておくとトラブルを未然に防げます。
WAVの場合はffmpegがなくても読める場合もありますが「動くかどうか」を気にするよりもffmpegを入れておいたほうが安定すると思います。

長文が出てくると思いますが、以下の表示があればWhisperのインストールは成功しています。

Successfully built openai-whisper
Successfully installed openai-whisper-20250625 triton-3.6.0

また以下の表示があればffmpegも問題なく入っています。

ffmpeg is already the newest version


【毎回の作業】


3.音声ファイルをアップロードする


画面左側にあるフォルダアイコンをクリックしてします。
そこに「content」というフォルダがあるので、ここに文字起こししたい音声ファイルをドラッグ&ドロップでアップロードします。

今回はファイル名の頭に「録音」という文字が含まれているものを自動で探して処理する仕組みにしますので、ファイル名の冒頭は「録音」と変更しておきます。

例:「録音_20240421.mp3」や「録音インタビュー.wav」など

後述のコードを書き換えることで「録音」という名称以外にも対応させることが可能です。


4.自動検出して文字起こしを実行する

ファイルがアップロードできたら文字起こしさせます。
「+コード」をクリックして、 以下のコードを新しいセルに貼り付けて実行ボタン(再生マーク)を押すと、ファイル名の頭に「録音」というキーワードが入っていれば自動で認識してテキスト化してくれると思います。
音声ファイルの長さや、使用モデルサイズにもよりますが、気長に待つ必要があります。

import os
import whisper

model = whisper.load_model("small")

input_dir = "/content"
output_dir = "/content"

files = os.listdir(input_dir)
print("ファイル一覧:", files)  # ←確認用

target = None
for f in files:
    if "録音" in f:  # ← startswithをやめる(ここ重要)
        target = f
        break

if target is None:
    raise FileNotFoundError("録音を含むファイルが見つかりません")

print("使用ファイル:", target)

input_path = os.path.join(input_dir, target)
output_path = os.path.join(output_dir, target.rsplit(".", 1)[0] + ".txt")

result = model.transcribe(input_path, language="ja")

with open(output_path, "w", encoding="utf-8") as f:
    f.write(result["text"])

print("保存完了:", output_path)


ファイル名が「録音」以外の文字で始まる場合には「録音」の文字を別の文字に置き換えます。

if "録音" in f:  # ← startswithをやめる(ここ重要)


モデルサイズについて


前記の「model = whisper.load_model("small")」の「"small"」の部分を他の文字に置き換えることで、文字起こしの精度と速度を調整することができます。

▶ tiny
速度:最速
精度:低い(誤変換多い)
⇒実用はちょっと厳しい?

▶ base
速度:速い(CPU処理でも実時間の16%くらいの時間で処理?)
精度:低め
⇒メモ用途なら可?元データの音質が悪いと全然ダメだった

▶ small
速度:そこそこ速い(CPU処理で録音時間と処理時間が同じくらい?)
精度:そこそこ
⇒バランス型、元データの音質が悪いと間違いが目立つことも

▶ medium
速度:遅い
精度:良い
⇒雑音があるデータでも結構拾ってくれる

▶ large
速度:とても遅い
精度:たぶんかなり良いと思う
(かなり重いようなので試していません)

5.結果を確認する


実行が終わると左側のフォルダの中に新しく .txt ファイルが入ります。
これをダブルクリックして内容を確認したり、右クリックからダウンロードしてローカル保存したりすれば完了です。





◆② faster-whisperとColabのGPUを使って高速で処理する場合


次に「faster-whisper」とColabのGPUを使って高速で処理する方法を整理しておきます。

基本的な手順は先ほどとほぼ同じですが、若干の異なる点があります。

【前準備】(基本的に1回設定すれば良い)

1.Google Colaの準備する


Google Colabにアクセスして作業場を作ります。

Google Colab: https://colab.research.google.com/


アクセスしたら「ノートブックを新規作成」をクリックします。
作成したノートブックの名前(画面左上の「Untitled0.ipynb」の部分)は、あとで見て中身がわかるように「faster-whisper、ColabGPU」などに変更しておくと良いと思います。


GPUを有効化

Colab上で:

「ランタイム」→「ランタイムのタイプを変更」「ハードウェアアクセラレータ」の項目で「GPU (T4 GPU)」を選択して「保存」をクリックします。

確認:以下を実行して 「True」 という文字が出てくればOKです。

import torch
print(torch.cuda.is_available())


2.faster-whisperのインストール


文字起こしに必要なツールをインストールします。
以下のコードをセル(入力欄)に貼り付けて実行ボタン(再生マーク)を押します。

faster-whisperを使う場合は以下のように「openai-whisper」の部分を「faster-whisper」に置き換えて実行します。

!pip install faster-whisper
!sudo apt update && sudo apt install ffmpeg -y



【毎回の作業】


3.音声ファイルをアップロードする


画面左側にあるフォルダアイコンをクリックしてします。
「content」というフォルダがあるので、ここに文字起こししたい音声ファイルをドラッグ&ドロップでアップロードします。

前回と同様にファイル名の頭に「録音」という文字が含まれているものを自動で探して処理する仕組みにします。


4.自動検出して文字起こしを実行する

ファイルがアップロードできたら文字起こしをさせます。
「+コード」をクリックして、 以下のコードを新しいセルに貼り付けて実行ボタン(再生マーク)を押します。

faster-whisperを使いつつ、ColabのGPUを使う場合のコードは以下のとおりです。
今回はモデルサイズは「medium」にしています。
faster-whisperとGPUを組み合わせることで「medium」でもかなり速く処理をしてくれます。

import os
from faster_whisper import WhisperModel

# モデル読み込み(GPUなら device="cuda" CPUならdevice="cpu")
model = WhisperModel("medium", device="cuda", compute_type="float16")

input_dir = "/content"
output_dir = "/content"

files = os.listdir(input_dir)
print("ファイル一覧:", files)

target = None
for f in files:
    if "録音" in f:
        target = f
        break

if target is None:
    raise FileNotFoundError("録音を含むファイルが見つかりません")

print("使用ファイル:", target)

input_path = os.path.join(input_dir, target)
output_path = os.path.join(output_dir, target.rsplit(".", 1)[0] + ".txt")

# ここが違う(segmentsで返る)
segments, info = model.transcribe(input_path, language="ja")

# テキスト結合
full_text = ""
for segment in segments:
    full_text += segment.text

with open(output_path, "w", encoding="utf-8") as f:
    f.write(full_text)

print("保存完了:", output_path)

※2回目以降に実行しようとした時に「faster-whisperが入っていないよ」というエラーが表示されたことがありました。
その際は手順2の「faster-whisperのインストール」をすれば解決すると思います。


5.結果を確認する


実行が終わると左側のフォルダの中に新しく .txt ファイルが入ります。
前記のスタンダードな方法に比べると爆速と感じられるくらい速く処理されると思います。
txt ファイルをダブルクリックして内容を確認したり、右クリックからダウンロードしてローカル保存したりすれば完了です。


ちなみに歌詞のある音楽の文字起こしも試してみましたが、文字起こしの出力は「(音楽)」となってしまいダメでした。
いずれの方法でも音楽ではない会話形式の音声データでないと文字起こしはできないようです。





◆スマホで簡単に「文字起こし」する方法


上記の「WhisperとGoogle Colabを組み合わせる方法」は手元にPCがあれば無料で文字起こしができます。
しかし「難しくてよく分からない」という人や「そもそもPCを持っていない」という人もいると思います。

そのような場合にはスマートフォンで文字起こしをする方法があります。

最近のスマートフォン、特にGoogle PixelやGalaxy Sシリーズ、そしてiPhoneには、会話を録音しながら高精度に文字に書き起こしてくれる機能が標準で搭載されています。

精度的にはスマートフォンを使うよりも、Whisperの「medium」のモデル以上で文字起こししたほうが良い結果になることが多いような気がしますが、雑音が少ない場所や、人数が少ない環境で録音できる場合には、スマートフォンでも十分というケースも多いと思います。

① Google Pixel

Pixelシリーズに搭載されている「レコーダー」アプリは、数あるスマホの中でも頭一つ抜けた性能を持っています。


  • リアルタイムの認識精度: 喋っているそばから高い精度で文字が生成されます。

  • 強力な話者識別: 「誰が何を話したか」を自動で判別してアイコン分けしてくれるため、対談やインタビューの議事録作成には最適です。

  • AIによる要約: 録音終了後に内容を短く要約してくれる機能もあり、単なる音声入力の枠を超えたツールとして完成されています。


② Galaxy Sシリーズ

最新のGalaxy Sシリーズは、独自のAI機能「Galaxy AI」の搭載によって、文字起こしの実用性が一気に向上しました。


  • 多機能な編集: 録音したデータの文字起こしはもちろん、要約や翻訳といった付加機能が非常にスムーズに動作します。

  • 利便性: リアルタイムでの安定感についてはPixelに一歩譲る面もありますが、録音後のデータ処理(後から文字起こしをする場合など)のスピードは非常に優秀です。


③ iPhone

iPhoneも標準の「メモ」アプリや「ボイスメモ」内で直接文字起こしができるようになっています。


  • 安定した変換: 誤字が少なく、日常的なメモや短いフレーズの入力には非常に使いやすいのが特徴です。

  • 今後の進化に期待: 現時点では、複雑な会議での「話者分離(誰が話したかの区別)」や、長時間の処理能力という点ではAndroid勢に一歩及ばない部分もあります。しかし、普段からiPhoneをメインに使っている方なら、まずはこの標準機能から試してみるのが一番スムーズです。

  • 日常的な音声入力や短文の文字起こしでは使いやすく、多くの人にとってはiPhoneの文字起こしでも十分かも知れません。


◆話者分離とフィラー削除(ケバ取り)

一部のスマートフォンには「話者分離(誰が話しているかを識別する機能)」が搭載されているものもありますが、Whisperなどの文字起こしツールや一般的な録音機能には識別機能がありません。
また文字起こしされたテキストには「えー」「あの」「まあ」といったフィラー(無駄な言葉)や言い直しが多く含まれ、読みにくかったりします。

こうしたテキストを整理するにはClaudeなどのAIを活用すると便利です。
以下のプロンプト(指示文)を入力することで、かなりの精度で「誰が何を言ったか」を整理し、読みやすい形式に整えることができます。

【AIへの指示文例】

提供された文字起こしテキストから、「えー」「あの」「まあ」などのフィラーや、言い直し・重複を削除(ケバ取り)してください。その上で、発言者ごとに内容を整理し、読みやすい文章に再構成してください。



いいなと思ったら応援しよう!