【Python】音声をテキストに変換する方法|SpeechRecognitionとWhisperの比較

【Python】音声をテキストに変換する方法|SpeechRecognitionとWhisperの比較 Python

会議の録音やインタビュー音声、動画のナレーションなど、音声データをテキストに変換(文字起こし)したい場面は多くあります。Pythonでは音声認識ライブラリ「SpeechRecognition」や、OpenAIの高精度モデル「Whisper」を使って、音声→文字変換を実現できます。

この記事では、それぞれの使い方と精度・柔軟性の違いを比較しながら、音声認識処理の実装方法を紹介します。

方法①:SpeechRecognitionの使い方

SpeechRecognitionはPythonで最も手軽に使える音声認識ライブラリです。Google Web Speech APIやSphinxなど複数のバックエンドに対応しています。

インストール

pip install SpeechRecognition pydub

MP3ファイルを使う場合はpydubffmpegの導入が必要です。

基本スクリプト(WAVファイル)

import speech_recognition as sr

r = sr.Recognizer()
with sr.AudioFile("audio.wav") as source:
    audio = r.record(source)

try:
    text = r.recognize_google(audio, language="ja-JP")
    print("認識結果:", text)
except sr.UnknownValueError:
    print("認識できませんでした。")
except sr.RequestError as e:
    print("APIエラー:", e)

メリット・デメリット

  • メリット:導入が簡単、Googleの音声認識が使える
  • デメリット:ネット接続必須、長時間音声に不向き

方法②:Whisper(OpenAI)の使い方

WhisperはOpenAIが公開した高精度の音声認識モデルです。日本語も非常に自然に認識でき、ノイズ耐性にも優れています。ローカルで動作するため、機密性の高いデータにも適しています。

インストール

pip install openai-whisper

ffmpegも事前にインストールしておく必要があります。

基本スクリプト

import whisper

model = whisper.load_model("base")  # or "small", "medium", "large"
result = model.transcribe("audio.mp3", language="ja")
print(result["text"])

モデルサイズの選び方

  • tiny:高速・低精度
  • base:標準的な用途
  • large:高精度・高負荷

メリット・デメリット

  • メリット:高精度、日本語対応、ローカル実行可
  • デメリット:処理に時間がかかる、GPUがあると望ましい

SpeechRecognitionとWhisperの比較

項目 SpeechRecognition Whisper
日本語精度
オフライン動作 ×(API接続)
長時間音声
導入の容易さ
リアルタイム用途

まとめ

音声をテキスト化するには、軽量な処理ならSpeechRecognition、高精度で本格的な用途ならWhisperが最適です。用途や環境に応じて使い分けることで、会議録、議事録、字幕生成などの作業を効率化できます。

Whisperは音声ファイルを翻訳する機能(英語への変換)にも対応しているため、グローバル対応の業務にも活用できます。ぜひ自社のワークフローに取り入れてみてください。