菜单

转录流程

相关源文件

本文档详细介绍了 Whisper ASR 系统的转录流水线,该流水线负责将音频输入转换为文本输出的整个过程。它解释了数据如何通过处理音频、语言检测、解码、分段和逐词时间戳生成等各个组件的流程。

有关底层模型架构的信息,请参阅 模型架构。有关音频处理的详细信息,请参阅 音频处理

1. 管道概述

转录流水线以音频输入(文件路径、numpy 数组或张量)开始,以包含转录文本、分段结果和语言信息的结构化输出来结束。实现此流水线的核心函数是 transcribe(),位于 whisper/transcribe.py 中。

来源:whisper/transcribe.py38-514

2. 核心组件与数据流

转录流水线集成了多个关键组件,它们协同工作以处理音频输入并生成准确的转录内容。

来源:whisper/transcribe.py38-144 whisper/transcribe.py184-224

3. 主要参数和配置

转录流水线可以通过影响其行为和输出的各种参数进行定制。

参数默认描述
temperature(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)用于采样的温度;可以是一个单一值,也可以是依次尝试的值的元组。
compression_ratio_threshold2.4如果压缩率超过此值,则认为解码失败。
logprob_threshold-1.0如果平均对数概率低于此值,则认为解码失败。
no_speech_threshold0.6用于将片段分类为静默的阈值。
condition_on_previous_textTrue是否使用前一段输出作为下一段的上下文。
word_timestamps是否提取逐词时间戳。
initial_promptNone用于引导第一个窗口的可选提示。

来源:whisper/transcribe.py38-125

4. 分段处理与解码

转录流水线的核心是处理音频片段并解码每个片段为文本。此过程通过将可变长度的输入分解为可管理的块来处理。

来源:whisper/transcribe.py184-224 whisper/transcribe.py339-400

5. 温度回退机制

转录流水线的关键可靠性功能之一是其温度回退机制,当结果不佳时,它会自动调整解码过程的随机性。

来源:whisper/transcribe.py184-224

6. 逐词时间戳生成

当启用逐词时间戳时,流水线将执行一个额外的步骤,将每个单词与相应的音频片段对齐。

来源:whisper/transcribe.py401-412 whisper/timing.py

7. 处理音频幻觉

转录流水线包含检测和缓解可能的幻觉(检测到音频中不存在的词)的机制。

来源:whisper/transcribe.py316-473

8. 完整的转录流水线流程

下图说明了从音频输入到最终输出的整个转录过程。

来源:whisper/transcribe.py38-514

9. CLI 接口和常见用法

转录流水线可以通过 Python API 和命令行接口进行访问。

来源:whisper/transcribe.py517-623

10. 主要接口和返回值

转录流水线的主要接口是 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