hot_video_analyse/README_whisper.md

6.3 KiB
Raw Blame History

Whisper语音识别模型使用指南

这是一个使用OpenAI Whisper模型进行语音识别的完整解决方案支持中文语音转文字。

🚀 快速开始

1. 安装依赖

# 安装Whisper和相关依赖
pip install -r whisper_requirements.txt

# 或者单独安装
pip install openai-whisper torch torchaudio

2. 安装FFmpeg必需

Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg

CentOS/RHEL:

sudo yum install ffmpeg
# 或者
sudo dnf install ffmpeg

macOS:

brew install ffmpeg

Windows: 下载FFmpeg并添加到PATH环境变量

📋 模型大小选择

模型 参数量 英文准确率 多语言准确率 相对速度 内存需求
tiny 39M ~32% ~32% ~32x ~1GB
base 74M ~34% ~34% ~16x ~1GB
small 244M ~36% ~36% ~6x ~2GB
medium 769M ~40% ~40% ~2x ~5GB
large 1550M ~45% ~44% 1x ~10GB
large-v2 1550M ~47% ~47% 1x ~10GB
large-v3 1550M ~51% ~52% 1x ~10GB

推荐选择:

  • 开发测试: basesmall
  • 生产环境: mediumlarge-v3
  • 资源受限: tinybase

🎯 使用方法

命令行使用

基本用法

# 转录单个音频文件
python whisper_audio_transcribe.py audio.wav

# 指定模型大小
python whisper_audio_transcribe.py audio.wav -m medium

# 指定语言
python whisper_audio_transcribe.py audio.wav -l zh

# 批量处理目录
python whisper_audio_transcribe.py /path/to/audio/directory/

高级用法

# 生成SRT字幕文件
python whisper_audio_transcribe.py audio.wav -f srt

# 翻译为英文
python whisper_audio_transcribe.py audio.wav -t translate

# 自动检测语言
python whisper_audio_transcribe.py audio.wav -l auto

# 指定输出目录
python whisper_audio_transcribe.py audio.wav -o ./transcripts/

Python代码使用

from whisper_audio_transcribe import WhisperTranscriber

# 创建转录器
transcriber = WhisperTranscriber(model_size="base")

# 转录音频文件
result = transcriber.transcribe_audio("audio.wav", language="zh")

# 获取转录文本
text = result["text"]
print(f"转录结果: {text}")

# 获取分段信息
for segment in result["segments"]:
    print(f"{segment['start']:.2f}s - {segment['end']:.2f}s: {segment['text']}")

# 保存结果
transcriber.save_transcript(result, "output.json", format="json")
transcriber.save_transcript(result, "output.srt", format="srt")

📊 输出格式

JSON格式

{
  "text": "完整的转录文本",
  "language": "zh",
  "segments": [
    {
      "id": 0,
      "start": 0.0,
      "end": 3.5,
      "text": "第一段文字",
      "confidence": -0.23
    }
  ],
  "transcribe_time": 2.34,
  "model_size": "base",
  "timestamp": "2024-06-03T16:30:00",
  "stats": {
    "total_segments": 10,
    "total_duration": 45.6,
    "text_length": 234,
    "words_count": 67
  }
}

SRT字幕格式

1
00:00:00,000 --> 00:00:03,500
第一段文字

2
00:00:03,500 --> 00:00:07,200
第二段文字

🎵 支持的音频格式

  • WAV (.wav)
  • MP3 (.mp3)
  • M4A (.m4a)
  • FLAC (.flac)
  • AAC (.aac)
  • OGG (.ogg)

🌍 支持的语言

Whisper支持99种语言主要包括

  • 中文: zh
  • 英文: en
  • 日文: ja
  • 韩文: ko
  • 法文: fr
  • 德文: de
  • 西班牙文: es
  • 俄文: ru
  • 阿拉伯文: ar
  • 自动检测: auto

性能优化建议

1. GPU加速

# 检查GPU可用性
import torch
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"GPU数量: {torch.cuda.device_count()}")

# Whisper会自动使用GPU如果可用

2. 批量处理

# 批量处理多个文件
audio_files = ["audio1.wav", "audio2.wav", "audio3.wav"]
results = transcriber.transcribe_multiple_files(audio_files)

3. 内存管理

# 对于大文件,使用较小的模型
transcriber = WhisperTranscriber(model_size="base")  # 而不是large

# 处理完成后清理内存
import gc
gc.collect()

🔧 故障排除

常见问题

  1. ImportError: No module named 'whisper'

    pip install openai-whisper
    
  2. FFmpeg not found

    # Ubuntu/Debian
    sudo apt install ffmpeg
    
    # 或者使用conda
    conda install ffmpeg
    
  3. CUDA out of memory

    # 使用较小的模型
    transcriber = WhisperTranscriber(model_size="base")
    
    # 或者强制使用CPU
    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = ""
    
  4. 转录结果不准确

    • 尝试使用更大的模型medium, large
    • 确保音频质量良好
    • 指定正确的语言代码

性能基准测试

在不同硬件上的性能表现:

硬件配置 模型 1分钟音频转录时间
CPU (Intel i7) base ~30秒
CPU (Intel i7) medium ~60秒
GPU (RTX 3080) base ~5秒
GPU (RTX 3080) large-v3 ~15秒

📝 使用示例

示例1: 转录抖音视频音频

# 首先提取音频使用video2audio.py
python video2audio.py douyin_video.mp4 -o audio_output

# 然后转录音频
python whisper_audio_transcribe.py audio_output/douyin_video.wav -m medium -l zh

示例2: 批量处理并生成字幕

# 批量转录并生成SRT字幕
python whisper_audio_transcribe.py ./audio_files/ -f srt -m large-v3 -o ./subtitles/

示例3: 多语言检测

# 自动检测语言并转录
python whisper_audio_transcribe.py mixed_language.wav -l auto -m medium

🔗 集成到现有项目

可以将Whisper转录功能集成到视频分析流程中

# 完整的视频分析流程
from video2audio import Video2AudioExtractor
from whisper_audio_transcribe import WhisperTranscriber

# 1. 提取音频
extractor = Video2AudioExtractor()
video_path, audio_path = extractor.extract_audio_from_video("video.mp4")

# 2. 语音识别
transcriber = WhisperTranscriber(model_size="medium")
result = transcriber.transcribe_audio(audio_path, language="zh")

# 3. 获取转录文本
speech_text = result["text"]
print(f"口播内容: {speech_text}")

📄 许可证

本项目基于MIT许可证Whisper模型遵循OpenAI的使用条款。