Whisper

Whisper

OpenAI Whisper 是一款开源的 ASR 系统,能够准确地将语音转换为 99 种语言的文本,支持转录、翻译和语言识别,为强大的 AI 自动化提供支撑。

了解 OpenAI Whisper

Whisper 是模型还是系统?

OpenAI Whisper 可根据不同语境被视为 模型系统

  • 作为 模型,Whisper 包含专为 ASR 任务设计的神经网络架构,提供多个不同规模的模型,参数量从 3900 万到 15.5 亿不等。规模越大,准确率越高,但计算资源需求也越大。
  • 作为 系统,Whisper 不仅包含模型架构,还包括其完整的基础设施和相关流程。这涵盖训练数据、预处理方法以及多项集成功能,如语言识别和翻译等。

Whisper 的核心能力

Whisper 的主要功能是将语音转录为文本输出。 它擅长:

  • 多语言语音识别:支持 99 种语言,是全球化应用的强大工具。
  • 语音翻译:可将任意支持语言的语音翻译为英文文本。
  • 语言识别:无需事先指定,自动检测所说语言。
  • 对口音和噪音的鲁棒性:经多样数据训练,能有效应对不同口音和嘈杂环境。

OpenAI Whisper 的工作原理

Transformer 架构

Whisper 的核心是 Transformer 架构,具体为编码-解码模型。Transformer 神经网络擅长处理序列数据,并能理解长序列中的上下文关系。自 2017 年 “Attention is All You Need” 论文提出以来,Transformer 已成为众多 NLP 任务的基础。

Whisper 的处理流程包括:

  1. 音频预处理:输入音频被切分为 30 秒片段,并转换为 log-Mel 频谱图,捕捉音频信号随时间的频率和强度变化。
  2. 编码器:将频谱图处理为音频的数值表示。
  3. 解码器:利用语言模型预测与音频输入对应的文本标记(词或子词)序列。
  4. 特殊标记的使用:通过特殊标记处理如语言识别、时间戳、任务指令(如转录或翻译)等任务。

多语言多任务监督数据训练

Whisper 在庞大的 68 万小时监督数据 上训练,这些数据采集自互联网,涵盖:

  • 多语言数据:约 11.7 万小时为 99 种语言,增强了模型的跨语言泛化能力。
  • 多样声学环境:数据来自不同领域和环境,保证模型对各类口音、方言和背景噪音的鲁棒性。
  • 多任务学习:同时训练转录、翻译、语言识别等多项任务,提升了整体表现。

应用与场景

转录服务

  • 虚拟会议与笔记:自动转录各类通用及特定行业(如教育、医疗、新闻、法律)的音频。
  • 内容创作:为播客、视频、直播生成转录文本,提高可访问性并便于引用。

语言翻译

  • 全球沟通:将一种语言的语音翻译为英文文本,促进跨语言交流。
  • 语言学习工具:帮助学习者理解多种语言的发音和含义。

AI 自动化与聊天机器人

  • 语音聊天机器人:将 Whisper 集成到聊天机器人中,实现语音交互,提升用户体验。
  • AI 助手:开发能理解多语言口语指令的助手。

无障碍提升

  • 字幕生成:为视频内容生成字幕,帮助听障人士。
  • 辅助技术:为需要语言支持的用户实现语音转录和翻译。

呼叫中心与客户支持

  • 实时转录:为座席实时提供客户通话文本,提升服务质量。
  • 情感分析:分析转录文本,判断客户情绪并优化互动。

OpenAI Whisper 的优势

多语言支持

Whisper 覆盖 99 种语言,对多样语言输入有强大适应力,适合面向国际的应用和服务。

高准确率与鲁棒性

采用大规模监督数据训练,Whisper 在转录任务中表现出高准确率。对不同口音、方言和背景噪音具备优异鲁棒性,适应多种真实场景。

多任务多功能

Whisper 不仅能转录,还可:

  • 语言识别:无需提前指定即可检测语种。
  • 语音翻译:将语音翻译为英文文本。
  • 时间戳生成:转录文本支持语句级时间戳。

开源可用

Whisper 作为开源软件,开发者可以:

  • 定制与微调:针对特定领域或任务调整模型。
  • 集成到应用中:无授权限制地嵌入产品和服务。
  • 社区共建:促进模型优化与改进共享。

局限与注意事项

计算资源要求

  • 资源消耗大:大型模型需要较高的计算能力和内存(最大模型需 10GB 显存)。
  • 处理速度:模型越大,转录速度越慢。

易产生幻觉

  • 转录不准确:Whisper 有时可能输出未出现过的文本(幻觉),在某些语种或音质较差时更易发生。

非英文语言支持有限

  • 数据偏差:训练数据中英文占比较高,部分弱势语言的准确率可能受影响。
  • 需微调:针对特定语种或方言可能需要额外训练以提升表现。

输入限制

  • 音频长度:Whisper 以 30 秒为单位处理音频,长音频转录需特殊处理。
  • 文件大小限制:开源模型对输入文件大小和格式可能有限制。

OpenAI Whisper 在 AI 自动化与聊天机器人中的应用

提升用户交互体验

将 Whisper 集成到聊天机器人和 AI 助手中,可实现:

  • 语音指令:让用户用语音而非文本进行交互。
  • 多语言支持:满足不同语言用户的需求。
  • 无障碍提升:帮助残障用户或无法使用传统输入方式的用户。

优化工作流程

  • 自动转录:减少人工记录和归档的工作量。
  • 数据分析:将语音内容转为文本,便于分析、监控和洞察。

实践案例

  • 虚拟会议机器人:自动加入线上会议并实时转录讨论内容。
  • 客户服务机器人:理解并响应语音请求,提升客户体验。
  • 教育平台:转录讲座或为学生提供翻译。

OpenAI Whisper 的替代方案

开源替代品

  • Mozilla DeepSpeech:支持自定义模型训练的开源 ASR 引擎。
  • Kaldi:广泛用于研究和工业界的语音识别工具包。
  • Wav2vec:Meta AI 推出的自监督语音处理系统。

商业 API

  • Google Cloud Speech-to-Text:支持多语言的语音识别服务。
  • Microsoft Azure AI Speech:可自定义的语音服务。
  • AWS Transcribe:亚马逊语音识别服务,支持自定义词汇等功能。

专业提供商

  • Gladia:基于 Whisper 架构的混合增强方案,具备更多功能。
  • AssemblyAI:提供带内容审核等功能的语音转文本 API。
  • Deepgram:支持实时转录和自定义模型训练的服务。

选择 Whisper 需考虑的因素

准确率与速度

  • 权衡:模型越大准确率越高,但消耗资源更多且速度较慢。
  • 实际测试:用与你应用相关的真实数据评估表现。

音频处理量

  • 可扩展性:根据处理大批量音频的需求,规划硬件和基础设施。
  • 批量处理:设计高效处理大数据集的方法。

高级功能

  • 附加功能需求:如需实时转录或说话人分离等功能需额外评估。
  • 可定制性:评估实现这些功能所需的工作量。

语言支持

  • 目标语种:确认模型在目标语言上的实际表现。
  • 微调计划:对弱势语种准备额外训练。

技术与资源能力

  • 技术能力:团队需具备模型部署和自定义的能力。
  • 基础设施:评估硬件配置和部署能力。

成本考量

  • 开源 vs 商业:权衡开源的初始节省与后续维护和扩展的长期成本。
  • 总体拥有成本:综合硬件、开发、维护等费用评估。

Whisper 在 Python 中的应用

Whisper 作为 Python 库实现,可无缝集成到基于 Python 的项目中。使用 Whisper 需配置开发环境、安装依赖,并通过库函数实现音频转录或翻译。

Python 环境下的 Whisper 配置

在使用 Whisper 前,需要准备 Python、PyTorch、FFmpeg 及 Whisper 本身。

先决条件

  • Python:建议 3.8 至 3.11 版本。
  • PyTorch:运行 Whisper 所需的深度学习框架。
  • FFmpeg:音视频文件处理工具。
  • Whisper 库:OpenAI 提供的 Python 包。

步骤 1:安装 Python 和 PyTorch

如未安装 Python,可在官网下载。安装 PyTorch 可用 pip:

pip install torch

或者前往 PyTorch 官网 查看适用于不同操作系统和 Python 版本的安装说明。

步骤 2:安装 FFmpeg

Whisper 需 FFmpeg 处理音频文件。不同操作系统可用相应包管理器进行安装。

Ubuntu/Debian:

sudo apt update && sudo apt install ffmpeg

MacOS(Homebrew):

brew install ffmpeg

Windows(Chocolatey):

choco install ffmpeg

步骤 3:安装 Whisper 库

用 pip 安装 Whisper Python 包:

pip install -U openai-whisper

如需直接安装最新版:

pip install git+https://github.com/openai/whisper.git

Windows 用户须知

请确保已启用开发者模式:

  1. 打开 设置
  2. 进入 隐私与安全 > 开发人员
  3. 开启 开发者模式

可选模型与规格

Whisper 提供多种规模的模型,覆盖 tinylarge,速度和准确率各有不同。

大小参数量英文专用模型多语言模型需显存相对速度
tiny3900 万tiny.entiny~1 GB~32x
base7400 万base.enbase~1 GB~16x
small2.44亿small.ensmall~2 GB~6x
medium7.69亿medium.enmedium~5 GB~2x
large15.5亿N/Alarge~10 GB1x

如何选择合适的模型

  • 英文专用模型(.en):针对英文音频优化,效果更好。
  • 多语言模型:适合需要多语种转录的全球应用。
  • 模型规模:模型越大,准确率越高但计算需求也更大。请结合硬件和需求选择。

在 Python 中使用 Whisper

配置好环境并安装必要组件后,即可在 Python 项目中调用 Whisper。

导入库与加载模型

首先导入库并加载模型:

import whisper

# 加载所需模型
model = whisper.load_model("base")

根据需求用对应模型名替换 "base"

转录音频文件

Whisper 提供简单的 transcribe 函数将音频文件转为文本。

示例:转录英文音频

# 转录音频文件
result = model.transcribe("path/to/english_audio.mp3")

# 输出转录文本
print(result["text"])

说明

  • model.transcribe():处理音频文件,输出包含文本和元数据的字典。
  • result["text"]:获取转录结果文本。

语音翻译为英文

Whisper 可将多语种音频翻译为英文。

示例:将西班牙语音频翻译为英文

# 转录并翻译西班牙语音频为英文
result = model.transcribe("path/to/spanish_audio.mp3", task="translate")

# 输出翻译文本
print(result["text"])

说明

  • task="translate":指示模型对音频进行翻译而非逐字转录。

指定语种

Whisper 支持自动检测语言,若指定可提升准确率和速度。

示例:转录法语音频

# 指定法语进行转录
result = model.transcribe("path/to/french_audio.wav", language="fr")

# 输出转录文本
print(result["text"])

检测音频语言

Whisper 可用 detect_language 方法识别音频中的语言。

示例:语言识别

# 加载并预处理音频
audio = whisper.load_audio("path/to/unknown_language_audio.mp3")
audio = whisper.pad_or_trim(audio)

# 转为 log-Mel 频谱图
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# 检测语言
_, probs = model.detect_language(mel)
language = max(probs, key=probs.get)

print(f"Detected language: {language}")

说明

  • whisper.load_audio():加载音频文件。
  • whisper.pad_or_trim():调整音频长度以适配模型输入。
  • whisper.log_mel_spectrogram():转为模型所需格式。
  • model.detect_language():输出各语言概率,选取最可能的语种。

高级用法与自定义

如需更细致控制转录流程,可调用底层函数并自定义解码选项。

使用 decode 函数

decode 支持指定语言、任务及是否包含时间戳等选项。

示例:自定义解码选项

# 设置解码选项
options = whisper.DecodingOptions(language="de", without_timestamps=True)

# 解码音频
result = whisper.decode(model, mel, options)

# 输出识别文本
print(result.text)

处理实时音频输入

Whisper 可集成麦克风实时音频转录。

示例:转录麦克风实时输入

import whisper
import sounddevice as sd

# 加载模型
model = whisper.load_model("base")

# 录制麦克风音频
duration = 5  # 秒
fs = 16000  # 采样率
print("Recording...")
audio = sd.rec(int(duration * fs), samplerate=fs, channels=1, dtype='float32')
sd.wait

常见问题

什么是 OpenAI Whisper?

OpenAI Whisper 是由 OpenAI 开发的一款先进的自动语音识别(ASR)系统,采用深度学习技术将语音转录为书面文本。它支持 99 种语言,擅长转录、翻译和语言识别。

Whisper 如何工作?

Whisper 采用基于 Transformer 的编码-解码架构,将音频处理为 log-Mel 频谱图,并通过语言模型输出文本。它使用 68 万小时多语言多任务数据进行训练,实现了高精度和强鲁棒性。

Whisper 的主要特性有哪些?

Whisper 支持多语言语音识别、语音翻译、自动语言识别,对口音和噪音具有强大适应性,并以开源形式提供,便于定制和集成。

Whisper 的硬件要求是什么?

硬件要求取决于模型大小:较小的模型如 'tiny' 需要约 1GB 显存,最大模型需约 10GB。Whisper 在 GPU 上运行更快,也可在 CPU 上运行但处理时间更长。

Whisper 能集成到 Python 项目中吗?

可以,Whisper 作为 Python 库实现,可通过 pip 安装。它支持语音转录、翻译和实时语音应用,便于集成到 Python 项目中。

Whisper 常见的应用场景有哪些?

常见应用包括自动会议记录、语音聊天机器人、实时翻译、无障碍工具(字幕和辅助技术)、呼叫中心自动化和语音控制自动化系统等。

有 OpenAI Whisper 的替代方案吗?

有,替代方案包括开源引擎如 Mozilla DeepSpeech、Kaldi、Wav2vec,以及商用 API 如 Google Cloud Speech-to-Text、Microsoft Azure AI Speech 和 AWS Transcribe。

Whisper 是开源的吗?

是的,OpenAI Whisper 是开源项目,开发者可根据自身需求定制、微调并集成到自己的产品和服务中,无需授权限制。

开始用 OpenAI Whisper 构建应用

将先进的语音转文字能力集成到你的应用中,自动化工作流程,并结合 OpenAI Whisper 与 FlowHunt 提升用户体验。

了解更多

对话式人工智能
对话式人工智能

对话式人工智能

对话式人工智能指的是一系列让计算机通过自然语言处理(NLP)、机器学习等语言技术来模拟人类对话的技术。它驱动着客户支持、医疗、零售等领域的聊天机器人、虚拟助手和语音助手,提高了效率和个性化体验。...

2 分钟阅读
AI Conversational AI +4
ChatGPT 知识库助手
ChatGPT 知识库助手

ChatGPT 知识库助手

由 OpenAI GPT-4o 驱动的 AI 聊天机器人助手,可自动搜索并利用公司内部文档来回答用户问题。结合聊天历史和检索到的知识,提供具备上下文感知、准确且对话式的回应,非常适用于客户支持、内部帮助台或员工入职场景。...

1 分钟阅读
大型语言模型(LLM)
大型语言模型(LLM)

大型语言模型(LLM)

大型语言模型(LLM)是一种通过海量文本数据训练的人工智能,能够理解、生成和处理人类语言。LLM 利用深度学习和 Transformer 神经网络,驱动文本生成、摘要、翻译等多种任务,广泛应用于各行各业。...

1 分钟阅读
AI Large Language Model +4