SuperAPI AI 工具集

whisper

通用与其它

查看项目

更新于 10-21 16:20

技能介绍

用途

Whisper 是 OpenAI 的多语言语音识别模型,适用于以下场景:语音转文字(支持 99 种语言)、播客/视频转录、会议记录自动化、翻译为英文、嘈杂音频转录以及多语言音频处理。

主要能力

  • 支持 99 种语言,基于 680,000 小时音频训练。
  • 提供多种模型规模:tiny(39M 参数)、base(74M)、small(244M)、medium(769M)、large(1550M)、turbo(809M)。其中 tiny、base、small、medium 同时提供仅英文和多语言版本;large 和 turbo 仅提供多语言版本。
  • 支持转录(transcribe)和翻译为英文(translate)两种任务。
  • 支持自动检测语言或手动指定语言。
  • 支持初始提示(initial_prompt)以提升技术术语、专有名词和领域词汇的准确率。
  • 支持词级时间戳(word_timestamps)。
  • 支持温度回退(temperature fallback),在置信度低时使用不同温度重试。
  • 命令行工具支持多种输出格式:txt、srt、vtt、json。
  • 支持 GPU 加速,GPU 上速度可提升 10-20 倍。
  • 可与 LangChain 集成,用于 RAG 等场景。

使用方式

安装

需要 Python 3.8-3.11 和 ffmpeg。

pip install -U openai-whisper

ffmpeg 安装:

  • macOS: brew install ffmpeg
  • Ubuntu: sudo apt install ffmpeg
  • Windows: choco install ffmpeg

基本转录

import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
for segment in result["segments"]:
    print(f"[{segment['start']:.2f}s - {segment['end']:.2f}s] {segment['text']}")

模型选择

可用模型:["tiny", "base", "small", "medium", "large", "turbo"]。推荐使用 turbo 以获得最佳速度/质量平衡,base 用于原型开发。

转录选项

  • 指定语言:model.transcribe("audio.mp3", language="en")
  • 任务选择:task="transcribe"(默认)或 task="translate"(翻译为英文)
  • 初始提示:initial_prompt="..."
  • 词级时间戳:word_timestamps=True
  • 温度回退:temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)

命令行用法

whisper audio.mp3
whisper audio.mp3 --model turbo
whisper audio.mp3 --output_format txt
whisper audio.mp3 --output_format srt
whisper audio.mp3 --output_format vtt
whisper audio.mp3 --output_format json
whisper audio.mp3 --language Spanish
whisper spanish.mp3 --task translate

批量处理

import os
audio_files = ["file1.mp3", "file2.mp3", "file3.mp3"]
for audio_file in audio_files:
    result = model.transcribe(audio_file)
    output_file = audio_file.replace(".mp3", ".txt")
    with open(output_file, "w") as f:
        f.write(result["text"])

实时转录

使用 faster-whisper:

pip install faster-whisper
from faster_whisper import WhisperModel
model = WhisperModel("base", device="cuda", compute_type="float16")
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 加速

model = whisper.load_model("turbo")  # 自动使用 GPU
model = whisper.load_model("turbo", device="cpu")  # 强制 CPU
model = whisper.load_model("turbo", device="cuda")  # 强制 GPU

与其他工具集成

生成 SRT 字幕:

whisper video.mp4 --output_format srt --language English

与 LangChain 集成:

from langchain.document_loaders import WhisperTranscriptionLoader
loader = WhisperTranscriptionLoader(file_path="audio.mp3")
docs = loader.load()

从视频提取音频:

ffmpeg -i video.mp4 -vn -acodec pcm_s16le audio.wav
whisper audio.wav

适用场景

  • 播客和视频转录
  • 会议记录自动化
  • 字幕生成
  • 多语言音频处理
  • 翻译为英文
  • 嘈杂音频转录

限制

  • 可能产生幻觉,重复或编造文本。
  • 长音频(超过 30 分钟)准确率下降。
  • 不支持说话人分离(diarization)。
  • 口音会影响质量。
  • 背景噪声可能影响准确率。
  • 实时延迟不适合实时字幕。

最佳实践

  • 使用 turbo 模型以获得最佳速度/质量。
  • 指定语言比自动检测更快。
  • 添加初始提示以改善技术术语识别。
  • 使用 GPU 可提速 10-20 倍。
  • 批量处理更高效。
  • 转换为 WAV 格式兼容性更好。
  • 将长音频分割为小于 30 分钟的片段。
  • 检查语言支持,不同语言质量有差异。
  • 使用 faster-whisper 比 openai-whisper 快 4 倍。
  • 监控 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 倍。

语言支持

主要支持语言包括英语、西班牙语、法语、德语、意大利语、葡萄牙语、俄语、日语、韩语、中文等,共 99 种语言。

资源

  • GitHub: https://github.com/openai/whisper
  • 论文: https://arxiv.org/abs/2212.04356
  • 模型卡: https://github.com/openai/whisper/blob/main/model-card.md
  • 许可证: MIT