0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メタルギアソリッドで学ぶ音声文字起こしWhisper+ChatGPT(1/3)

Last updated at Posted at 2025-07-06

この記事には「メタルギアソリッド」に関する重大な ネタバレ が含まれています。
ネタバレを回避したい方はブラウザバックしてください。

1.はじめに

昨今のAIの進歩は日進月歩で、ChatGPTに代表される生成AIはもちろん、今では自律的にコーディングするAIエージェントもリリースされています。(2025年7月現在)
そんな目まぐるしい進化の中で、少し前に話題となったOpenAIの音声認識モデル「Whisper」を今さらながら試してみました。

1-1.この記事で行うこと

  • Whisperを使って文字起こしファイルを作成する( この記事で記載
  • 文字起こしファイルの作成時間及び精度をモデルごとに確認する(2/3で記載)
  • 文字起こしファイルをChatGPTに読み込ませ、概要を出力する(3/3で記載)

2/3、3/3はこちら

1-2.この記事の対象となる人(いずれかに該当)

  • 簡単なPythonが書ける人
  • 会議や研修の音声データを無料で手軽に文字起こししたい人
  • メタルギアソリッドが好きな人

2.環境・前提条件

3.今回使用した音源

MGS1 マスター・ミラーの正体

この動画のうち、無線部分の 約2分32秒(152秒) を文字起こしに使用します。
※YouTubeの当該部分と同じ音源(mp3)を用いており、YouTubeは使っていません。

3-1.筆者の人力文字起こし結果

ありがとうスネーク、これで起爆コードの入力は完了した。もうメタルギアを止めることはできない。
マスターこれは?
わざわざ鍵を見つけてくれた上、起爆コードの入力までしてくれて本当に恩に着る。
形状記憶合金とはお粗末な話だったが。
何のことだ?
DARPA局長の起爆コードは入手できなかったんだよ
マンティスの能力をもってしても読むことはできなかった。
オセロットは起爆コードを聞き出す前に殺してしまった。
つまり、俺たちは核を撃つことはできなかった。
威嚇発射さえもな。
まさに八方塞がりだった。
核が撃てなければ我々の要求はかなえられない。
マスター、何を言っている?
起爆コードを入手できなくなった以上、別の方法を探すしかない。
そこでスネーク、貴様に賭けてみることにした。
何?
デコイ・オクトパスをDARPA局長に変装させたのもその一つだ。
貴様から情報を得ようとしたのだが…
FOXDIEとはな。
全て最初から仕組まれていたというのか
俺に起爆コードを解除させるために?
ん?もしやここまで来られたのは自分一人の才能だと思っているのか?
マスター、あんたは、あんたはスパイか?
とにかくこれで核発射準備は整った。
新型核を撃ちこんでみせればホワイトハウスの連中もFOXDIEの血清を渡さざるをえまい。
奴らの切り札も無効になる。
切り札?一体?
お前を使ったペンタゴンの目論見は既に達せられているんだよ。
あの拷問部屋で。
知らないのはお前だけだ。
惨めなだスネーク。
貴様、誰だ?
全て教えてやる。もしも俺の元までたどり着けたらな。
どこにいる?
すぐ近くさ
スネーク、そいつはマスターミラーではない!
キャンベル、今頃気づいても遅い。
マスターミラーの遺体が彼の自宅で発見された、死後三日経っている。
マスターとの無線がオフにされていたのでわからなかった。
メイリンによると、発信源はその基地内だ!
じゃ、お前は!?
お前が話していたのは…
俺だ、兄弟。
まさか、リキッドか!
貴様の役割は済んだ、あの世へ行け!

4.コード

main.py
import whisper
import time

start_time = time.time()

model = whisper.load_model("small")
audio_path = 'master.mp3'

result = model.transcribe(audio_path,language='ja')
transcript_text = result["text"]
print(result['text'])

output_path = "文字起こし結果.txt"
with open(output_path, "w", encoding="utf-8") as f:
    f.write(transcript_text)

end_time = time.time()

print(f"処理時間: {(end_time - start_time):.2f}")

4-1.コードの補足

4-1-1.Whisperについて

Whisperは汎用的な音声認識モデルです。多様な音声を収録した大規模なデータセットで学習されており、多言語音声認識、音声翻訳、言語識別を実行できるマルチタスクモデルでもあります。

main.py
#whisper部分のみ抜粋
import whister

#main.pyと同じフォルダに音源を配置
audio_path = 'master.mp3'

#whisperの学習モデルを選択。例ではsmallとしている
model = whisper.load_model("small")

#文字起こし開始。languageを日本語に指定することで精度を高める
result = model.transcribe(audio_path,language='ja')

#文字起こし結果を出力する
print(result['text'])

4-1-2.モデルのサイズについて

Whisperの文字起こしに使う学習済みモデルは、tinyからturboまでの7つが存在しています。

サイズ パラメータ数 必要なVRAM 速度
tiny 39M ~1GB ~10x
base 74M ~1GB ~7x
small 244M ~2GB ~4x
medium 769M ~5GB ~2x
large 1550M ~10GB 1x
turbo 809M ~6GB ~8x

今回はtiny、small、medium、largeで比較を行いました。

4-1-2.テキストファイルへの保存

whisperで文字起こしした結果をテキストファイルに保存しています。

mani.py
#テキストファイル保存部分のみ抜粋

#whisperによる出力結果をtranscript_textに代入
transcript_text = result["text"]

# テキストファイルに保存
output_path = "文字起こし結果.txt"
with open(output_path, "w", encoding="utf-8") as f:
    f.write(transcript_text)

4-1-3.処理時間の表示

今回は各モデルでの処理時間を測るコードを追加しています。

main.py
#time関連を抜粋
import time

#開始時間を記録
start_time = time.time()

#終了時間を記録
end_time = time.time()

#開始時間と終了時間の差分を秒で表示
print(f"処理時間: {(end_time - start_time):.2f}")

5.処理の実行

上記コードを実行すると、モデルのダウンロードが行われ、文字起こしした結果が「文字起こし結果.txt」として出力されます。

cmd.exe
#smallを読み込んだ時の例
100%|███████████████████████████████████████| 461M/461M [00:36<00:00, 13.2MiB/s]

出力した結果の比較は次の記事に記載しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?