9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
< 前の記事

ぼーっとPython のコードを眺める

次の記事 >

pipeline で文章の要約

Python

[Python]音声から文字起こし

公開日:2025-12-19
更新日:2025-12-19

1. 概要

音声から文字起こしをします。

2. CUDA のバージョン確認

文字起こしには whisper を使います。
whisper は CPU のみで実行可能ですが、CUDA に対応しているため、NVIDIA のグラフィックボードを搭載している場合は、短い処理時間で文字起こしができます。
CUDA は、NVIDIA の GPU を使って一般的な計算を高速化するためのプラットフォームです。

グラフィックボードを搭載している場合は、
コマンドプロンプトか PowerShell で次のコマンドを実行して、CUDA のバージョンを確認します。
コマンド
nvidia-smi

先頭に方に CUDA の Version が表示されます。
実行結果
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.94                 Driver Version: 560.94         CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+

3. インストール

3.1 torch、torchvision、torchaudio のインストール

NVIDIA のグラボがある場合(CUDA を使用する)
コマンド
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
今回は CUDA Version: 12.6 だったため、cu126 を指定しています。環境に合わせて変更してください。

NVIDIA のグラボがない場合(CPU を使用する)
コマンド
pip install torch torchvision torchaudio

3.2 Whisper のインストール

OpenAI の公式版
コマンド
pip install openai-whisper

OSS の高速版
コマンド
pip install faster-whisper

3.3 FFmpeg のインストール

FFmpeg のインストールを参考にしてインストールしてください。
インストール後、FFmpeg にパスを通すか、Python のコードを実行する場所にコピーして、FFmpeg が実行できるようにしてください。

4. 文字起こし

4.1 注意

実行後、フリーズしたようになりますが、エラーにならない限り動いてるので、完了までお待ちください。

4.2 openai-whisper 版

コード
import whisper
import torch

# CUDAに対応している場合は cuda、対応していない場合は cpu 
device = 'cuda' if torch.cuda.is_available() else 'cpu'

# モデルのロード
model = whisper.load_model("large-v3", device=device)

# 文字起こしをする音声ファイル
fileName = 'a.wav'

# 文字起こし
result = model.transcribe(fileName, language="ja", beam_size=5) 
# beam_size  1:精度悪い・速い  5:精度少し良い  10:精度良い・遅い
# 文字起こしする際に候補として保持する数。5 の場合、5つの候補を出してその中から選んでいく

# 文字起こしの結果
print('検出した言語:',        result['language']) # ja
print('文字起こしをした全文:', result['text'])

# 検出された文章ごとのリストでループ。検出した時の時間の範囲も出力できる
for segment in result['segments']:
    print(f"{segment['start']:.2f} ~ {segment['end']:.2f} : {segment['text']}")

4.3 faster-whisper 版

コード
from faster_whisper import WhisperModel
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"
compute_type = "float16" if device == "cuda" else "int8" # cpu の場合は float16 にするとエラーになるので int8 にする

# モデルのロード
model = WhisperModel("large-v3", device=device, compute_type=compute_type, num_workers=1) 

# 文字起こしをする音声ファイル
fileName = 'a.wav'

# 文字起こし
segments, info = model.transcribe(fileName, language='ja', beam_size=5)

# 文字起こしの結果
print('検出した言語:', info.language) # ja
print(info.language_probability)

# 検出された文章ごとのリストでループ。検出した時の時間の範囲も出力できる
for segment in segments:
    #        時間帯                          : 平均対数確率(0に近いほど信頼度が高い。通常 -1 ~ 0): テキスト
    print(f"{segment.start:.2f} ~ {segment.end:.2f} : {segment.avg_logprob:.2f} : {segment.text}")
< 前の記事

ぼーっとPython のコードを眺める

次の記事 >

pipeline で文章の要約

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲