← 返回信息流
GitHub 热榜GitHub Trending · 日·1 小时前

OpenAI Whisper:基于大规模弱监督学习的鲁棒语音识别模型

原标题:openai/whisper
Python101,697 stars+116 今日

速览

由 OpenAI 开发的大规模多语言语音识别模型,支持 99 种语言的语音识别及 98 种语言的语音翻译。凭借强大的鲁棒性,能在嘈杂环境或不同口音下保持高准确率,适用于语音转录、实时字幕生成及音频数据分析等场景。

AI 深度解读

这是什么

Whisper 是由 OpenAI 开发的一款通用语音识别模型,也是 GitHub 上极受欢迎的开源项目(Star 数超过 10 万)。它基于 Transformer 序列到序列(sequence-to-sequence)架构,在大规模多样化音频数据集上进行了训练。

Whisper 不仅仅是一个简单的语音转文字工具,它是一个多任务模型,能够执行多语言语音识别、语音翻译以及语言识别。其核心设计理念是将多种语音处理任务(如识别、翻译、语种检测、语音活动检测)统一表示为解码器需要预测的令牌序列,从而用一个模型替代传统语音处理流水线中的多个阶段。

该项目使用 Python 和 PyTorch 构建,代码库兼容 Python 3.8-3.11 及较新的 PyTorch 版本,并依赖 OpenAI 的 tiktoken 库以实现快速分词。

解决的问题

传统语音处理流水线通常由多个独立模块组成,包括前端特征提取、声学模型、语言模型和解码器等,这不仅增加了系统复杂性,还容易在模块间接口处积累误差。Whisper 解决了以下痛点:

  1. 流水线碎片化:通过多任务联合训练,Whisper 用一个单一模型替代了传统流程中的多个阶段,简化了部署和维护。
  2. 多语言支持不足:许多传统模型仅针对特定语言(通常是英语)优化,而 Whisper 在 diverse 的音频数据上训练,原生支持多语言识别和翻译。
  3. 泛化能力弱:面对噪声环境、不同口音或非标准发音时,传统模型性能下降明显。Whisper 凭借大规模数据训练,在多种语言和环境下的鲁棒性更强。
  4. 任务切换成本高:传统方案需要为识别、翻译、语种检测分别训练或部署不同模型,Whisper 通过特殊令牌(special tokens)作为任务说明符,实现了多任务的无缝切换。

核心功能

Whisper 提供了丰富的 API 和命令行接口,支持以下核心功能:

  • 多语言语音识别:支持全球多种语言的语音转文字,无需为每种语言单独训练模型。
  • 语音翻译:将非英语语音直接翻译为英语文本。
  • 语言识别:自动检测音频中使用的语言。
  • 语音活动检测 (VAD):识别音频中的有效语音片段。
  • 多种模型规格:提供六种不同大小的模型,平衡速度与精度:
    • tiny / tiny.en
    • base / base.en
    • small / small.en
    • medium / medium.en
    • large / large-v2 / large-v3
    • turbo:基于 large-v3 优化的版本,提供更快的转录速度,精度损失极小。
  • 英文专用优化:带有 .en 后缀的模型(如 tiny.en, base.en)专为纯英语应用设计,通常在英语场景下表现优于通用模型,尤其在较小规模的模型上差异更明显。

亮点 / 与同类相比

  • 多任务统一架构:不同于传统方案需要串联多个专用模型,Whisper 通过多任务训练格式,使用一组特殊令牌来指定任务类型或分类目标,实现了“一个模型,多种能力”。
  • 性能与速度的灵活权衡:提供从 tinylarge 的多种模型选择,用户可根据硬件资源(内存、算力)和实时性要求灵活选择。例如,turbo 模型在保持接近 large-v3 精度的同时显著提升了速度。
  • 广泛的语言覆盖与基准测试:Whisper 的性能在 Common Voice 15 和 Fleurs 等数据集上进行了详细评估,展示了其在不同语言下的 WER(词错误率)和 CER(字错误率)表现。
  • 易于集成与部署
    • 提供简单的 pip install 安装方式。
    • 支持命令行直接调用,如 whisper audio.flac --model turbo
    • 提供 Python API,支持 transcribe() 方法自动处理音频分片(30秒滑动窗口)和自回归预测,也提供 detect_language()decode() 等底层接口供高级用户定制。
  • 开源与许可:代码和模型权重均在 MIT 许可证下发布,允许商业和非商业用途,促进了社区扩展和第三方集成(如 Web 演示、其他平台端口等)。

适合谁用 / 上手

适合人群:

  • 开发者:需要集成语音识别或翻译功能到应用程序中的软件工程师。
  • 数据科学家:研究语音处理、多模态学习或需要高质量语音数据的科研人员。
  • 企业用户:需要处理多语言音频内容(如客服录音、会议记录、视频字幕)的公司。
  • 开源爱好者:希望基于强大基座模型进行二次开发或构建新应用的社区成员。

上手指南:

  1. 环境准备

    • 确保系统已安装 Python 3.8-3.11 和 PyTorch。
    • 安装系统依赖 ffmpeg(用于音频处理),可通过各平台包管理器安装(如 Ubuntu 的 apt install ffmpeg,MacOS 的 brew install ffmpeg 等)。
    • 可能需要安装 Rust 开发环境,以便 tiktoken 库能正确编译(如果预编译 wheel 不可用)。
  2. 安装 Whisper

    • 安装最新稳定版:
      pip install -U openai-whisper
      
    • 或安装最新开发版:
      pip install git+https://github.com/openai/whisper.git
      
  3. 基本使用示例

    • 命令行转录
      whisper audio.mp3 --model turbo
      
    • Python 代码转录
      import whisper
      model = whisper.load_model("turbo")
      result = model.transcribe("audio.mp3")
      print(result["text"])
      
    • 翻译非英语语音
      whisper japanese.wav --model medium --language Japanese --task translate
      
  4. 注意事项

    • turbo 模型目前不用于翻译任务,若需翻译请使用 mediumlarge 等多语言模型。
    • 实际推理速度受语言、语速和硬件影响较大,建议在目标硬件上进行基准测试。
查看原文 →github.com