aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/content/docs/whisper-to-ai-moji-okoshi.mdx
blob: e133b64ff59c518b489f593123ded9460c0a525b (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
267
268
269
270
271
272
273
274
275
276
277
---
title: 無料・超高精度のWhisperで文字起こしする方法(+α)
description: OpenAI Whisperを使った超高精度な文字起こしの方法。生成AIでの後処理も紹介。Google Colabを使えば無料・インストール不要で利用できます。
---

## Whisperと出会うまでの文字起こし

私はできる限り会議録を残すようにしています。参加者の発言をその場でPCに打ち込み、その場で会議録をほぼ完成させるスタイルです。以前は録音を聞いてタイプしていましたが、骨の折れる作業でした。いろいろな自動化ソフトも試しました。しかし、雑音があるときや話者がマイクから遠いときなどは、うまく認識してくれません。結局、その場でタイプする方法に落ち着きました。

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

その手法をここに説明いたします。皆様のお役に立てましたら幸いです。

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

{/* <!-- textlint-disable prh --> */}
## かんたん手順(手順だけ知りたい方)

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 等)に貼り付け→整形

詳細は続きをご覧ください。

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

昨今の凄まじいAI進化は、人類によいことなのでしょうか、悪いことなのでしょうか。画像生成AIには著作権上の問題があるため、私は使おうとは思いません。しかし会議録の文字起こし作業については、著作権侵害を心配する必要もなく、個人的な利用であれば雇用の喪失にもつながりません。掃除・洗濯・食器洗いが自動化されてきたものと同じ、人類のしあわせにつながることではないかと思います。ここではその視点に立ち、Whisperを紹介します。

## 驚異的な精度

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

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

<div class="whisper-transcript">

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

{/* <!-- textlint-disable --> */}

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

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

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

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

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

{/* <!-- textlint-enable --> */}

</div>

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

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

実行環境を用意しました。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" />

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

<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」などの選択肢もありますが、エラーになるか、非常に遅くなります。必ず **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 を開いたとき最初に表示される場所です。

フォルダに整理したい場合、たとえば「会議録」フォルダにonsei.mp3ファイルを入れた場合には、⑥でパスを `MyDrive/会議録/onsei.mp3` のように書き換えてください。
:::

**⑥ コード内のファイルパスを確認します。**

次の図の赤枠で囲んだ部分が、「パス」と呼ばれる、ファイルの置かれている場所です。デフォルトでは `/content/drive/MyDrive/onsei.mp3` になっています。

<img src="/img/whisper-path.png" alt="ファイルパスの確認" class="whisper-img" />

ファイル名や保存場所に応じて、パスを次のように書き換えてください。

- ファイル名が違う場合: `/content/drive/MyDrive/kaigi.mp4`(例)
- 保存先フォルダが違う場合: `/content/drive/MyDrive/会議録/onsei.mp3`(例)
- ファイル名と保存先フォルダが違う場合:`/content/drive/MyDrive/会議録/kaigi.mp4`(例)

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

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

「このノートブックに Google ドライブへのファイルへのアクセスを許可しますか?」と表示されたら、**「Google ドライブに接続」** を押してください。

<img src="/img/whisper-access.png" alt="アクセス警告" class="whisper-img" />

{/* <!-- textlint-disable no-doubled-joshi --> */}
また、「このノートブックは Google が作成したものではありません」という警告が表示されたら、**「このまま実行」** を押してください。

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

また、次のように表示される場合は「次へ」や「続行」を押してください。

<img src="/img/google-login.png" alt="Googleログイン" class="whisper-img" />

<img src="/img/google-account-access.png" alt="アカウントアクセス" class="whisper-img" />


**⑨ 実行すると、次の図のように進捗していきます。**

<img src="/img/whisper-processing.png" alt="Whisperで文字起こし中の様子" 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 などに貼り付けてご利用ください。

### 続けて実行する場合や不具合が起きた場合

別の音声ファイルを文字起こししたい場合は、ブラウザの再読み込みボタンを押して再度手順を繰り返してください。また、何か途中で不具合が起きた場合には、三角形の実行ボタン(▶)を押したり、ブラウザの再読み込みボタンを押したりすることで直る場合があります。

:::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">

{/* <!-- textlint-disable --> */}

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

{/* <!-- textlint-enable --> */}

</div>

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

<div class="whisper-quote">

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

</div>

### 活用フロー

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

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

この方法を組み合わせることで、2時間の会議の会議録作成が、従来の10分の1未満の時間で完了するまでにもなりました。

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

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

## 制限時間を延ばしたい場合(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 />