菜单

实现细节

相关源文件

本文档提供了关于驱动 Whisper 自动语音识别系统的关键组件和内部机制的更深入的技术信息。它侧重于实现细节,而非高级架构。有关更广泛的架构概述,请参阅 架构

核心转录管道

转录过程通过 transcribe.py 文件中的 transcribe() 函数实现,该函数协调从音频输入到格式化文本输出的整个工作流程。

来源: whisper/transcribe.py38-514

温度回退机制

decode_with_fallback() 函数实现了一种复杂的机制,通过尝试多个温度值来处理不确定的转录结果。

来源: whisper/transcribe.py184-224

质量检查使用三个主要标准

标准参数默认描述
压缩比compression_ratio_threshold2.4表示重复文本(值越高表示重复越多)
对数概率logprob_threshold-1.0平均置信度(值越低表示置信度越低)
无语音概率no_speech_threshold0.6静音的可能性(值越高表示更可能是静音)

来源: whisper/transcribe.py73-85 whisper/transcribe.py203-223

分段处理

音频以 30 秒为单位进行处理,这些片段会被填充并转换为梅尔频谱图。

来源: whisper/transcribe.py282-286

Token 处理逻辑

解码后,Token 会被处理以根据时间戳 Token 识别分段。

来源: whisper/transcribe.py339-399

词级时间戳实现

word_timestamps=True 时,系统利用交叉注意力模式将单词与音频对齐。

来源: whisper/transcribe.py401-412

幻觉检测与缓解

当启用词级时间戳时,Whisper 会实现一个复杂的幻觉检测系统。

来源: whisper/transcribe.py316-334 whisper/transcribe.py419-476

系统使用评分机制来识别异常单词。

功能阈值得分累加
词语概率< 0.15+1.0
持续时间过短< 0.133 秒+(0.133 - duration) × 15
持续时间过长> 2.0 秒+(duration - 2.0)

当总得分 ≥ 3 或接近词数时,该片段被视为异常。

来源: whisper/transcribe.py316-334

结果格式化系统

Whisper 提供了一个灵活的结果格式化系统,可以将转录内容输出为各种格式。

来源: whisper/utils.py85-318

输出格式规范

格式详情用例
TXTWriteTXT纯文本转录基础转录
VTTWriteVTTWeb Video Text Tracks 格式网络视频
SRTWriteSRTSubRip Text 格式视频字幕
TSVWriteTSV制表符分隔值,时间戳以毫秒为单位数据分析
JSONWriteJSON完整的结构化数据程序化使用

格式化系统支持字幕高亮显示和智能换行等高级功能。

来源: whisper/utils.py109-294

性能优化

类型管理

Whisper 会根据执行环境智能地选择合适的数据类型。

来源: whisper/transcribe.py127-137

分段跳过逻辑

为了提高效率,Whisper 实现了一些分段跳过机制。

  1. 静音检测:跳过具有高 no_speech_prob 的片段。
  2. 幻觉跳过:跳过被静音包围的已检测到的幻觉。
  3. 基于时间戳的搜寻:在处理完一个片段后,搜寻会根据检测到的时间戳进行调整。

来源: whisper/transcribe.py299-310 whisper/transcribe.py419-476

结论

本文档概述了 Whisper ASR 系统的关键实现细节。该系统通过结合迭代分段处理管道、智能回退机制、幻觉检测和灵活的输出格式,提供了准确且可用的转录结果,适用于各种用例。

有关特定组件的更多信息,请参阅