本文档提供了关于驱动 Whisper 自动语音识别系统的关键组件和内部机制的更深入的技术信息。它侧重于实现细节,而非高级架构。有关更广泛的架构概述,请参阅 架构。
转录过程通过 transcribe.py 文件中的 transcribe() 函数实现,该函数协调从音频输入到格式化文本输出的整个工作流程。
来源: whisper/transcribe.py38-514
decode_with_fallback() 函数实现了一种复杂的机制,通过尝试多个温度值来处理不确定的转录结果。
来源: whisper/transcribe.py184-224
质量检查使用三个主要标准
| 标准 | 参数 | 默认 | 描述 |
|---|---|---|---|
| 压缩比 | compression_ratio_threshold | 2.4 | 表示重复文本(值越高表示重复越多) |
| 对数概率 | logprob_threshold | -1.0 | 平均置信度(值越低表示置信度越低) |
| 无语音概率 | no_speech_threshold | 0.6 | 静音的可能性(值越高表示更可能是静音) |
来源: whisper/transcribe.py73-85 whisper/transcribe.py203-223
音频以 30 秒为单位进行处理,这些片段会被填充并转换为梅尔频谱图。
来源: whisper/transcribe.py282-286
解码后,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 提供了一个灵活的结果格式化系统,可以将转录内容输出为各种格式。
| 格式 | 类 | 详情 | 用例 |
|---|---|---|---|
| TXT | WriteTXT | 纯文本转录 | 基础转录 |
| VTT | WriteVTT | Web Video Text Tracks 格式 | 网络视频 |
| SRT | WriteSRT | SubRip Text 格式 | 视频字幕 |
| TSV | WriteTSV | 制表符分隔值,时间戳以毫秒为单位 | 数据分析 |
| JSON | WriteJSON | 完整的结构化数据 | 程序化使用 |
格式化系统支持字幕高亮显示和智能换行等高级功能。
Whisper 会根据执行环境智能地选择合适的数据类型。
来源: whisper/transcribe.py127-137
为了提高效率,Whisper 实现了一些分段跳过机制。
no_speech_prob 的片段。来源: whisper/transcribe.py299-310 whisper/transcribe.py419-476
本文档概述了 Whisper ASR 系统的关键实现细节。该系统通过结合迭代分段处理管道、智能回退机制、幻觉检测和灵活的输出格式,提供了准确且可用的转录结果,适用于各种用例。
有关特定组件的更多信息,请参阅