本文档详细介绍了 Whisper ASR 系统的转录流水线,该流水线负责将音频输入转换为文本输出的整个过程。它解释了数据如何通过处理音频、语言检测、解码、分段和逐词时间戳生成等各个组件的流程。
有关底层模型架构的信息,请参阅 模型架构。有关音频处理的详细信息,请参阅 音频处理。
转录流水线以音频输入(文件路径、numpy 数组或张量)开始,以包含转录文本、分段结果和语言信息的结构化输出来结束。实现此流水线的核心函数是 transcribe(),位于 whisper/transcribe.py 中。
来源:whisper/transcribe.py38-514
转录流水线集成了多个关键组件,它们协同工作以处理音频输入并生成准确的转录内容。
来源:whisper/transcribe.py38-144 whisper/transcribe.py184-224
转录流水线可以通过影响其行为和输出的各种参数进行定制。
| 参数 | 默认 | 描述 |
|---|---|---|
temperature | (0.0, 0.2, 0.4, 0.6, 0.8, 1.0) | 用于采样的温度;可以是一个单一值,也可以是依次尝试的值的元组。 |
compression_ratio_threshold | 2.4 | 如果压缩率超过此值,则认为解码失败。 |
logprob_threshold | -1.0 | 如果平均对数概率低于此值,则认为解码失败。 |
no_speech_threshold | 0.6 | 用于将片段分类为静默的阈值。 |
condition_on_previous_text | True | 是否使用前一段输出作为下一段的上下文。 |
word_timestamps | 否 | 是否提取逐词时间戳。 |
initial_prompt | None | 用于引导第一个窗口的可选提示。 |
来源:whisper/transcribe.py38-125
转录流水线的核心是处理音频片段并解码每个片段为文本。此过程通过将可变长度的输入分解为可管理的块来处理。
来源:whisper/transcribe.py184-224 whisper/transcribe.py339-400
转录流水线的关键可靠性功能之一是其温度回退机制,当结果不佳时,它会自动调整解码过程的随机性。
来源:whisper/transcribe.py184-224
当启用逐词时间戳时,流水线将执行一个额外的步骤,将每个单词与相应的音频片段对齐。
来源:whisper/transcribe.py401-412 whisper/timing.py
转录流水线包含检测和缓解可能的幻觉(检测到音频中不存在的词)的机制。
来源:whisper/transcribe.py316-473
下图说明了从音频输入到最终输出的整个转录过程。
来源:whisper/transcribe.py38-514
转录流水线可以通过 Python API 和命令行接口进行访问。
来源:whisper/transcribe.py517-623
转录流水线的主要接口是 transcribe() 函数,它返回一个包含以下内容的结构化字典:
| 字段 | 描述 |
|---|---|
text | 完整的转录文本。 |
segments | 包含时间戳和文本的片段字典列表。 |
language | 检测到或指定的语言代码。 |
每个片段包含:
id:片段索引。seek:音频搜索位置。start:开始时间(秒)。end:结束时间(秒)。text:此片段的转录文本。tokens:标记 ID 列表。temperature:此片段使用的温度。avg_logprob:平均对数概率。compression_ratio:此片段的压缩率。no_speech_prob:无语音概率。words:(如果 word_timestamps=True) 逐词时间戳列表。来源:whisper/transcribe.py247-266 whisper/transcribe.py510-514
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(517a43)