aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/content/docs/whisper-to-ai-moji-okoshi.mdx
blob: 302af69d66f85a00732e5aac0126d106eb2ef65d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
---
title: 無料・超高精度のWhisper + 生成AIで文字起こしする方法
description: OpenAI Whisperと生成AIを組み合わせた超高精度な文字起こしの方法。Google Colabを使えば無料・インストール不要で利用できます。
---

## これまで

私は、ご相談をいただく際や会議などでは、できる限り会議録を残すようにしています。参加者の発言をその場でPCに打ち込み、その場で会議録をほぼ完成させるようにしています。以前は(承諾を得て)録音したものを家に帰ってから文字起こししていましたが、骨の折れる作業でした。自動化しようと色々なソフトを試しましたが、雑音があったり話者がマイクから遠い場合にはうまく認識してくれず、結局はその場でPCにタイプするスタイルが最も効率的でした。

そんな中、令和4年9月22日にOpenAIから **Whisper** という文字起こしAIが公開され、試してみたところ驚くべき性能でした。それ以来、各種会議の文字起こしに活用しています。

:::note
##### 📝 この記事について
本記事の元となった旧サイトのブログ投稿は令和4年9月に公開したものです。しかし、Whisperの文字起こし精度は今でも極めて高く、ここで紹介する手順も現在(令和8年)まで有効です。むしろ生成AIを組み合わせた後処理の手法が加わったことで、当時よりもさらに実用的になっています。
:::

## かんたん手順(手順だけ知りたい方)

1. [Colab を開く](https://colab.research.google.com/drive/1eAxHdqrF1Zt59V1ouSfo7iTBRYmhYDy7?usp=sharing)(Google アカウントでログイン)
2. 「ランタイム」→「ランタイムのタイプを変更」→ **T4 GPU** に設定
3. 音声ファイルを Google Drive の「マイドライブ」直下にアップロード
4. コード内のパスを確認(デフォルト: `MyDrive/onsei.mp3`)
5. ▶(実行)→「このまま実行」
6. 完了したら結果をコピー(`Ctrl+C` 不可、右クリック→「選択した内容をコピーする」)
7. 必要に応じて生成AI(ChatGPT 等)に貼り付け→整形

:::tip
##### 💡 所要時間の目安
無償版で 1〜2時間の音声なら 30分〜1時間程度。長い音声は途中で強制終了する場合があります。
:::

## 雇用を奪わない形でのAI活用

昨今のAIの進化は凄まじいものがあります。良し悪しはともあれこの進化は止めることができません。

「急速に進化するAIが既存の仕事を奪っている」という視点から見ると、政治や哲学が技術の進歩に追いつけていない状況だと思います。負の影響を受ける職種には適切な支援が必要と考えます。

一方「AIが、個人の単調な作業を軽減してくれている」という視点から見ると、これまで掃除や洗濯、食器洗いなどの家事が自動化されてきたことと同じようによい面があると思います。こういう作業におけるAIの活用であれば「人間の雇用喪失をそれほど心配する必要がない」という点で安心できるところはあります。

これまで個人で行っていた会議録の文字起こし作業は後者に該当するものです。ここではその視点に立ち、Whisperをご紹介したいと思います。

## 驚異的な精度

[Whisperのページ](https://openai.com/index/whisper/)を読むと、単語誤り率(Word Error Rate; WER)は日本語で約6.4%とされています。「ほぼ完ぺき」と言われる5%に近く、実際の使用感でも非常に高い精度です。さらに **ファインチューン**(用途に合わせて人名や用語を追加学習させること)を行えば、100%に近い精度も期待できます。

たとえば、直近(令和4年9月時点)の小平市議会定例会における私の質問と、それに対する理事者側答弁の音声をWhisperで文字起こしすると次のようになります(間違えている箇所は<mark>黄色でマーク</mark>)。

<div class="whisper-transcript">

**▼ 文字起こし例 1**

教育委員会としては重大事態として扱わなかったという事例があるんですが、<mark>一般して</mark>最終的に重大事態として扱うことになったんですが、その専門家から助言を受けたことで重大事態として扱ったわけではなくて、別の理由で扱うことになった。その専門家から重大事態として扱いなさいというような助言を受けたにも<mark>関わらず(←正しくは「拘わらず/かかわらず」)</mark>、その重大事態として扱わなかった場面において教育長はどのような指示されてきたのか、例えば教育長は<mark>まっ</mark>すぐに重大事態として扱いなさいとか、…

**▼ 文字起こし例 2**

それ以外はないということでいいですか。報酬がそれ以外ないかということでいいですか。ない。以上ということですか。ない。<mark>村(←正しくは村田)</mark>部長。まず月額給与と期末手当と退職手当、この3つとなります。他には特にはございません。以上でございます。…

**▼ 文字起こし例 3**

その時には私はちょっといなかったも<mark>と</mark>で、詳しいところは存じ上げてはいませんが、その話については聞く中では、当時そのお話ありましたが、すぐに重大事態に持っていくというような話ではなかったということもありまして、その後様々な話を聞く中で、やはり我々の市の方の重大事態に対する考え方というのも少し甘かったというところも確かに反省する点はございます。<mark>安田経</mark>議員がご指摘されていたように、重大事態の考え方というのは、やはりしっかりと我々の中で共通認識を持って対応する必要があると考えていますので…

</div>

個人名はさすがに難しいようですが、ほぼ完ぺきに文字起こしできています。ファインチューンで最適化すればさらに精度が上がりますが、手間がかかるため、通常の使用では次節で紹介する**生成AIによる後処理**で十分にカバーできます。

<img src="/img/whisper-processing.png" alt="Whisperで文字起こし中の様子" class="whisper-img" />

上図は、私の一般質問をWhisperにかけてみた様子です。こんな感じで進捗していきます。

## 具体的な文字起こし手順

実行環境を用意しましたので、よろしければご利用ください。Google Drive に音声ファイルを置いて、Colab から直接読み込む方法で、インストール不要・無料で利用できます。

**① 以下のリンクを開きます。**(ブラウザは Google Chrome 推奨)

👉 [Google Colab で開く](https://colab.research.google.com/drive/1eAxHdqrF1Zt59V1ouSfo7iTBRYmhYDy7?usp=sharing)

**② Google アカウントでログインします。**

<img src="/img/whisper-login.png" alt="Colab ログイン画面" class="whisper-img" />

:::tip
##### 💡 自分の Drive に保存したい場合
メニューバーの「ファイル」→「ドライブにコピーを保存」を押すと、自分の Google Drive にノートブックが保存されます。保存しなくてもそのまま実行できます。実行中の編集が共有元に反映されることはありません。
:::

**③ メニューバーの「ランタイム」→「ランタイムのタイプを変更」を押します。**

<img src="/img/whisper-runtime.png" alt="ランタイム変更メニュー" class="whisper-img" />

**④ ハードウェアアクセラレータを「T4 GPU」に設定し、保存ボタンを押します。**

<img src="/img/whisper-gpu.png" alt="GPU設定画面" class="whisper-img" />

:::tip
##### 💡 TPU ではなく GPU を選んでください
「v5e-1 TPU」などの選択肢もありますが、Whisper は PyTorch 製のため GPU(CUDA)でのみ高速動作します。TPU を選んでもエラーになるか、CPU 動作で非常に遅くなります。必ず **T4 GPU** を選択してください。
:::

**⑤ 文字起こししたい音声ファイルを Google Drive の「マイドライブ」直下にアップロードします。**
ここでは例として `onsei.mp3` で説明します。mp3、m4a、wav などの音声ファイルだけでなく、mp4 などの動画ファイルもそのまま文字起こし可能です。

<img src="/img/whisper-mydrive.png" alt="マイドライブにアップロード" class="whisper-img" />

アップロードが完了するまで待ちます。

<img src="/img/whisper-uploading.png" alt="アップロード中" class="whisper-img" />

:::tip
##### 💡 プライバシーについて
- アップロードしたファイルの内容や文字起こし結果は、私からは一切見られません。アクセスログも取得していません。
- Colab 上で Google Drive をマウントしても、その内容が他の共有相手に知られることはありません。ランタイムはユーザーごとに完全に独立しています。
- アンマウントしたい場合は、コードセルで `drive.flush_and_unmount()` を実行するか、「ランタイム」→「ランタイムを再起動」してください。
- Google は情報を取得できる可能性があります。機密性が気になる場合は、ご自身の PC に Whisper をインストールしてご利用ください。
:::

:::tip
##### 💡 「マイドライブ」直下とは?
Google Drive を開いたときに最初に表示される場所です。「会議録」などのフォルダの中ではなく、**フォルダの外**に置いてください。

どうしてもフォルダに整理したい場合は、たとえば「会議録」フォルダに入れた場合、後ほど⑥で書き換えるパスが `MyDrive/会議録/onsei.mp3` のように変わります。
:::

**⑥ コード内のファイルパスを確認します。**
デフォルトでは `/content/drive/MyDrive/onsei.mp3` になっています。

- **マイドライブ直下**に置いた場合: ファイル名だけ書き換えればOK(例: `MyDrive/kaigi.mp4`)
- **フォルダに入れた**場合: フォルダ名を含めて書き換え(例: `MyDrive/会議録/onsei.mp3`)

**⑦ 三角形の実行ボタン(▶)を押します。**

<img src="/img/whisper-run.png" alt="実行ボタン" class="whisper-img" />

**⑧ 警告が出たら「このまま実行」を押します。**

<img src="/img/whisper-konomama.png" alt="このまま実行" class="whisper-img" />

**⑨ 完了すると、最後にすべてを連結した文章が表示されます。**

<img src="/img/whisper-finished.png" alt="文字起こし完了" class="whisper-img" />

表示された文字起こし結果は `Ctrl+C` ではコピーできません。**マウスで結果を選択し、右クリック →「選択した内容をコピーする」** を選んでください。

<img src="/img/whisper-copy.png" alt="選択してコピー" class="whisper-img" />

コピーしたテキストを Word などに貼り付けてご利用ください。

### 続けて実行する場合

別の音声ファイルを文字起こししたい場合は、ブラウザの再読み込みボタンを押すか、再生ボタンで再度実行できます。

<img src="/img/whisper-restart.png" alt="再実行ボタン" class="whisper-img" />

うまく行かない場合は、メニューバーから「ランタイム」→「ランタイムを再実行」を押し、上記③④の手順で GPU に設定し直してから再実行してください。

:::caution
##### ⏱ 制限時間に注意
Google Colab 無償版には利用制限があり、最長12時間(実質4〜5時間で終了する場合も)で処理が強制終了します。文字起こしがきちんと進んでいることが確認できて、かつ途中で時間制限に達したようなエラーが表示された場合は、時間制限の可能性が高いです。ブラウザを再読み込みして再度実行するとうまく最後まで文字起こしが完了することもありますので、何度か試してみてください。もしどうしても制限時間が足りないようでしたら、Google Colab Pro へのアップグレードで解決する場合もあります。
:::

## 文字起こし結果を生成AIで仕上げる

ここまでの手順で得られた文字起こし結果は、Whisper だけでも十分実用的です。しかし、このテキストを **生成AI(ChatGPT, Grok, Claude, Gemini, DeepSeek など)に渡す** ことで、さらに高品質な会議録に仕上げることができます。

### 生成AIにできること

1. **誤字・脱字の修正**  
   Whisperの聞き間違い(例: 「一般して」→「一旦は」)を文脈から推測して修正してくれます。

2. **話者の特定とラベル付け**  
   あらかじめ話者の情報(「市長=小林洋子」「質問者=安竹洋平」など)を伝えておけば、発言ごとに `【安竹】` `【市長】` のように話者ラベルを付けてくれます。

3. **フィラーの除去と文章整形**  
   「えー」「あのー」といったフィラー(つなぎ言葉)を除去し、読みやすい文章に整形します。

4. **要約の生成**  
   長い会議の要点を箇条書きでまとめることもできます。

### 具体的なプロンプト例

上記⑨でコピーしたテキストを、以下のようなプロンプトとともに生成AIに渡します。

<div class="whisper-quote">

以下は市議会の一般質問の文字起こしです。次のように整形してください:

- 誤字・脱字を文脈から判断して修正する
- 話者を特定し、発言の先頭に【話者名】を付ける
  話者: 安竹洋平(質問者)、小林洋子(市長)、教育長(名前不明)
- 「えー」「あのー」などのフィラーは削除する
- 文意が通るように適宜句読点を補う
- 元の発言内容は変えないこと

[ここにWhisperの文字起こし結果を貼り付ける]

</div>

### 実例

**Whisper出力(生):**

<div class="whisper-quote">

いじめの重大事態に関してですよ専門家から重大事態としてこれを扱いなさいと扱った方がいいですよという助言を受けながらですね教育委員会としては重大事態として扱わなかったという事例があるんですが一般して最終的に重大事態として扱うことになったんですが

</div>

**生成AIで整形後:**

<div class="whisper-quote">

【安竹】いじめの重大事態に関してです。専門家から「重大事態として扱った方がいい」という助言を受けながら、教育委員会としては重大事態として扱わなかった事例があります。一旦は最終的に重大事態として扱うことになったのですが…

</div>

### 活用フロー

ここまでをまとめると、次のような流れになります。

```
音声/動画ファイル(.mp3/.m4a/.wav/.mp4 等)
    ↓ Whisper で文字起こし(Colab)
生テキスト(誤字・フィラーあり)
    ↓ 生成AI で整形
整形済みテキスト(話者ラベル・句読点付き)
    ↓ 最終確認・加筆
完成した会議録
```

この方法を組み合わせることで、2時間の会議の会議録作成が、従来の半分以下の時間で完了するようになりました。

:::note
##### 💡 専用ソフトや自動化について
世の中には、Whisper の文字起こしと生成AIによる整形をワンクリックで行えるソフトや、Python スクリプトで API 連携させる自動化の手法も存在します。ただ、それらは環境構築や API キーの取得が必要だったり、日本語の話者識別がうまくいかなかったりと、導入のハードルが意外と高いのが現状です。

ここで紹介している「Colab で文字起こし → 結果をコピー → 生成AIに貼り付け」という手順は、一見原始的ですが、コピー&ペーストの手間は数秒で済みます。また、人の目で最終確認する工程はどのみち必要なので、手作業の部分が極端なボトルネックになることはありません。**手軽さと実用性のバランス**で言えば、この方法は今でも十分有力な選択肢です。
:::

## 制限時間を延ばしたい場合(Google Colab Pro)

処理の速度を上げたり制限時間を延ばしたい場合は、[Google Colab Pro](https://colab.research.google.com/signup) もしくは Pro+ を契約することで可能になります。

| プラン | 月額料金(記事執筆時点) | 特徴 |
|--------|------------------------|------|
| 無償版 | 無料 | 最長12時間(実質4〜5時間) |
| Pro | 約1,200円 | 高速GPU、最大100回分 |
| Pro+ | 約6,000円 | さらに高速、より長い制限時間 |

条件にもよりますが、Pro で約2時間の音声(約80MB)を文字起こししたところ、Google Drive からの読み込みに約10分、文字起こし完了までに約33分かかりました(令和4年9月時点)。

Pro を一度契約すると1ヶ月間(最大100回分)使えます。なお、一度契約すると**毎月自動的に支払い**がなされてしまうため、解約を忘れないようにしてください。クレジットカードでの支払いが済んだら早めに [Google Colab の解約ページ](https://colab.research.google.com/signup) から解約手続きをしておくとよいでしょう。すぐ解約しても1ヶ月間は使えます。

---

参考までに、令和4年9月時点で私が約2時間の音声(約80MB)を文字起こしした際は、Pro で約33分で完了しました(ファイル転送時間を除く)。

---

:::caution
##### ⚠ 免責事項
本ページで紹介している方法・ツールの利用に関して、いかなる問題が生じた場合でも、安竹洋平および本サイトは一切の責任を負いません。ご自身の判断と責任においてご利用ください。
:::

import WhisperStyles from '@/components/WhisperStyles.astro';

<WhisperStyles />