mcpField
W
whisper

whisper

github.com/kalarislabsその他7342 回インストール3 日前に更新
リポジトリ

whisper について

Whisperは、音声の文字起こしと英語への音声翻訳に対応するOpenAIの多言語音声認識モデルです。このガイドでは、モデル選択、タイムスタンプ、一括処理、コマンドラインの使い方を説明します。

主な機能

  1. 01多言語音声の文字起こし
  2. 02音声の英語翻訳
  3. 03単語単位のタイムスタンプ
  4. 04音声ファイルの一括文字起こし
  5. 05TXT・SRT形式での出力

活用シーン

  1. 01ポッドキャストや録音の文字起こし
  2. 02音声からの会議メモ作成
  3. 03動画の字幕生成
  4. 04音声内容の英語翻訳

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill whisper

インストール後、Claude Code で/whisperを入力して読み込まれたか確認します。

同梱ファイルreferences/languages.md

詳細

Whisper - 高精度音声認識

OpenAI の多言語音声認識モデルです。

Whisper を使用する場面

次の場合に使用します:

  • 音声からテキストへの文字起こし(99 言語)
  • ポッドキャスト/動画の文字起こし
  • 会議メモの自動作成
  • 英語への翻訳
  • ノイズの多い音声の文字起こし
  • 多言語音声の処理

指標:

  • 99 言語に対応
  • 680,000 時間の音声でトレーニング済み
  • MIT ライセンス

代替手段を使用する場合:

  • AssemblyAI:マネージド API、話者ダイアライゼーション
  • Deepgram:リアルタイムストリーミング ASR
  • Google Speech-to-Text:クラウドベース

クイックスタート

インストール
# Requires Python 3.8-3.11
pip install -U openai-whisper

# Requires ffmpeg
# macOS: brew install ffmpeg
# Ubuntu: sudo apt install ffmpeg
# Windows: choco install ffmpeg
基本的な文字起こし
import whisper

# Load model
model = whisper.load_model("base")

# Transcribe
result = model.transcribe("audio.mp3")

# Print text
print(result["text"])

# Access segments
for segment in result["segments"]:
    print(f"[{segment['start']:.2f}s - {segment['end']:.2f}s] {segment['text']}")

モデルサイズ

# Available models
models = ["tiny", "base", "small", "medium", "large", "turbo"]

# Load specific model
model = whisper.load_model("turbo")  # Fastest, good quality
モデルパラメーター英語のみ多言語速度VRAM
tiny39M✓✓~32x~1 GB
base74M✓✓~16x~1 GB
small244M✓✓~6x~2 GB
medium769M✓✓~2x~5 GB
large1550M✗✓1x~10 GB
turbo809M✗✓~8x~6 GB

推奨:速度と品質を重視する場合は turbo、プロトタイピングには base を使用します。

文字起こしのオプション

言語の指定
# Auto-detect language
result = model.transcribe("audio.mp3")

# Specify language (faster)
result = model.transcribe("audio.mp3", language="en")

# Supported: en, es, fr, de, it, pt, ru, ja, ko, zh, and 89 more
タスクの選択
# Transcription (default)
result = model.transcribe("audio.mp3", task="transcribe")

# Translation to English
result = model.transcribe("spanish.mp3", task="translate")
# Input: Spanish audio → Output: English text
初期プロンプト
# Improve accuracy with context
result = model.transcribe(
    "audio.mp3",
    initial_prompt="This is a technical podcast about machine learning and AI."
)

# Helps with:
# - Technical terms
# - Proper nouns
# - Domain-specific vocabulary
タイムスタンプ
# Word-level timestamps
result = model.transcribe("audio.mp3", word_timestamps=True)

for segment in result["segments"]:
    for word in segment["words"]:
        print(f"{word['word']} ({word['start']:.2f}s - {word['end']:.2f}s)")
温度のフォールバック
# Retry with different temperatures if confidence low
result = model.transcribe(
    "audio.mp3",
    temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)
)

コマンドラインでの使用方法

# Basic transcription
whisper audio.mp3

# Specify model
whisper audio.mp3 --model turbo

# Output formats
whisper audio.mp3 --output_format txt     # Plain text
whisper audio.mp3 --output_format srt     # Subtitles
whisper audio.mp3 --output_format vtt     # WebVTT
whisper audio.mp3 --output_format json    # JSON with timestamps

# Language
whisper audio.mp3 --language Spanish

# Translation
whisper spanish.mp3 --task translate

バッチ処理

import os

audio_files = ["file1.mp3", "file2.mp3", "file3.mp3"]

for audio_file in audio_files:
    print(f"Transcribing {audio_file}...")
    result = model.transcribe(audio_file)

    # Save to file
    output_file = audio_file.replace(".mp3", ".txt")
    with open(output_file, "w") as f:
        f.write(result["text"])

リアルタイム文字起こし

# For streaming audio, use faster-whisper
# pip install faster-whisper

from faster_whisper import WhisperModel

model = WhisperModel("base", device="cuda", compute_type="float16")

# Transcribe with streaming
segments, info = model.transcribe("audio.mp3", beam_size=5)

for segment in segments:
    print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

GPU アクセラレーション

import whisper

# Automatically uses GPU if available
model = whisper.load_model("turbo")

# Force CPU
model = whisper.load_model("turbo", device="cpu")

# Force GPU
model = whisper.load_model("turbo", device="cuda")

# 10-20× faster on GPU

他のツールとの連携

字幕の生成
# Generate SRT subtitles
whisper video.mp4 --output_format srt --language English

# Output: video.srt
LangChain との連携
from langchain.document_loaders import WhisperTranscriptionLoader

loader = WhisperTranscriptionLoader(file_path="audio.mp3")
docs = loader.load()

# Use transcription in RAG
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings())
動画から音声を抽出
# Use ffmpeg to extract audio
ffmpeg -i video.mp4 -vn -acodec pcm_s16le audio.wav

# Then transcribe
whisper audio.wav

ベストプラクティス

  1. turbo モデルを使用する - 英語では速度と品質のバランスに優れています
  2. 言語を指定する - 自動検出より高速です
  3. 初期プロンプトを追加する - 技術用語の認識精度が向上します
  4. GPU を使用する - 10~20 倍高速になります
  5. バッチ処理する - より効率的です
  6. WAV に変換する - 互換性が向上します
  7. 長い音声を分割する - 30 分未満のチャンクにします
  8. 言語の対応状況を確認する - 品質は言語によって異なります
  9. faster-whisper を使用する - openai-whisper より 4 倍高速です
  10. VRAM を監視する - ハードウェアに合わせてモデルサイズを調整します

パフォーマンス

モデルリアルタイム係数(CPU)リアルタイム係数(GPU)
tiny~0.32~0.01
base~0.16~0.01
turbo~0.08~0.01
large~1.0~0.05

リアルタイム係数:0.1 はリアルタイムの 10 倍の速度を意味します

対応言語

対応度の高い主な言語:

  • 英語(en)
  • スペイン語(es)
  • フランス語(fr)
  • ドイツ語(de)
  • イタリア語(it)
  • ポルトガル語(pt)
  • ロシア語(ru)
  • 日本語(ja)
  • 韓国語(ko)
  • 中国語(zh)

全リスト:合計 99 言語

制限事項

  1. 幻覚 - テキストを繰り返したり、捏造したりする場合があります
  2. 長時間音声の精度 - 30 分を超える音声では精度が低下します
  3. 話者の識別 - ダイアライゼーションには対応していません
  4. アクセント - 品質はアクセントによって異なります
  5. 背景ノイズ - 精度に影響する場合があります
  6. リアルタイムの遅延 - ライブ字幕には適していません

リソース

エージェントの作業手順

  1. 環境を確認します。 GPU メモリ、モデルのチェックポイントとライセンス、フレームワークのバージョン、入力形式を確認します。
  2. 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果に影響する値を推測せず、確認してください。
  3. まず小規模に実行します。 最初に単一のサンプルを低解像度または短い長さで推論します。
  4. 上記の手順と参考情報を使って、タスク全体を実行します。
  5. 結果を検証します。 出力を定性的に確認し、タスクの指標で評価します。生成コンテンツのライセンス上の制限も確認します。
  6. 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確認の事項を伝えます。
事象対応
大きな入力でメモリ不足が発生する解像度またはシーケンス長を下げる、半精度を使用する、または入力をタイル分割します。
この手順に記載された関数、フラグ、エンドポイントがインストール済みのバージョンに存在しないインストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して対応し、ユーザーに伝えます。API を捏造してはいけません。
必須の入力、識別子、パラメーターが曖昧であるユーザーに確認するか、実行前に仮定を明示します。

誠実性に関するルール

  • 結果、パラメーター、識別子、引用、統計を決して捏造してはいけません。実行または検証できない場合は、その旨を率直に伝えます。
  • 商用利用または公開利用の前に、モデルとデータセットのライセンスを確認します。
  • ここに記載されたバージョン固有の情報は古くなっている可能性があるため、インストール済みバージョンの公式ドキュメントと照合します。
  • 費用が発生する、共有 GPU やクラウドのクォータを消費する、個人データや患者データを扱う、または取り消せない操作を行う前に確認します。

関連スキル

  • transformers:Hugging Face Transformers を使用して、Hub モデルの読み込み、パイプライン推論、テキスト生成、NLP、ビジョン、オーディオの Trainer によるファインチューニングを行います。

コメント