尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Whisper 版本演进与技术内幕:从 CHANGELOG 看大规模弱监督语音识别(whisp/whisper)的关键变更

发布时间:2026/9/30 2:32:05

资讯中心
01
ARTICLE

Whisper 版本演进与技术内幕:从 CHANGELOG 看大规模弱监督语音识别(whisp/whisper)的关键变更

Whisper 版本演进与技术内幕:从 CHANGELOG 看大规模弱监督语音识别(whisp/whisper)的关键变更
人工智能语音音频基础模型【免费下载链接】whisperRobust Speech Recognition via Large-Scale Weak Supervision项目地址https://gitcode.com/GitHub_Trending/whisp/whisper点击查看免费下载Whisper 是 OpenAI 开源的一个通用语音识别模型通过在大规模多样化音频数据上进行弱监督训练实现了多语种语音识别、语音翻译与语种识别等多任务能力。本文以仓库中的 CHANGELOG.md 为主线骨架逐版本梳理 whisp/whisper 项目从首个 PyPI 版本到 v20250625 的重要变更并结合 whisper/ 目录下的源码与 tests/ 测试用例讲解这些变更背后的工程原理与实战影响。读完本文你将掌握Whisper 每个发布版本的里程碑功能如 large-v3、large-v3-turbo、词级时间戳、幻觉抑制等是如何落地为源码细节的以及如何在命令行与 Python API 中使用这些能力。版本时间线与发布节奏Whisper 仓库使用语义化日期版本号vYYYYMMDD从 version.py 中可以看到当前版本为__version__ 20250625与 CHANGELOG 中最新的 v20250625 一一对应。CHANGELOG 记录的发布序列如下版本关键主题v20230117首个发布到 PyPI 的版本化版本v20230124TSV 输出格式、--output_format选项、XDG_CACHE_HOME 支持v20230306词级时间戳进入transcribe()、解码改进、格式化规范v20230307修复重复/幻觉问题、triton2.0.0v20230308decode()支持 kwargs、token 处理修复v20230314全面切换到 tiktoken、对齐修复v20230918字词时间戳启发式改进、max_line_width/max_line_count、Python 3.11v20231105large-v3、无语音文件异常修复、按词数生成字幕v20231106large-v3 发布v20231117triton 与 PyTorch 2.1 兼容v20240927静音段幻觉抑制Skip silence around hallucinationsv20240930large-v3-turbo、SDPA 支持、numpy 2、Python 3.12 / PyTorch 2.4.1v20250625weights_onlyTrue安全加载、DTW 设备一致、initial_prompt 滑动窗口、Python 3.13、pyproject.tomlPEP 621从版本序列可以看出项目历经三条主线模型规模与精度large-v3、turbo 系列、推理鲁棒性与性能幻觉抑制、SDPA、triton 兼容、工程化与安全pyproject.toml 迁移、权重安全加载、CI 覆盖更多 Python/PyTorch 版本。v20230117首个版本化发布与模型家族v20230117 是 CHANGELOG 记载的第一个版本化发布对应代码中 whisper/init.py 维护的_MODELS字典。该字典定义了六个规模、多个变体的官方模型规模参数量纯英文模型多语种模型所需显存约tiny39 Mtiny.entiny~1 GBbase74 Mbase.enbase~1 GBsmall244 Msmall.ensmall~2 GBmedium769 Mmedium.enmedium~5 GBlarge1550 MN/Alarge~10 GBturbo809 MN/Aturbo~6 GB注相对速度与显存数据来自仓库 README.md其相对速度以 A100 上转录英语语音为基准实际数值会随语种、语速与硬件而变化。从_MODELS源码可以看到large与large-v3、turbo与large-v3-turbo分别指向相同的下载地址whisper/init.py即large是large-v3的别名、turbo是large-v3-turbo的别名。available_models()whisper/init.py会直接返回_MODELS的键列表因此传入whisper.load_model(turbo)时实际加载的是 large-v3-turbo 权重。load_model()whisper/init.py的加载流程包括默认设备选择CUDA 可用则 cuda否则 CPU、下载根目录解析优先XDG_CACHE_HOME默认~/.cache/whisper、模型下载与 SHA256 校验_download()使用 URL 中嵌入的哈希做完整性检查以及通过_ALIGNMENT_HEADS为每个模型设置词级时间戳所用的对齐头。v20230124输出格式体系与下载路径规范该版本为 CLI 引入了 TSV 输出和--output_format选项对应 whisper/transcribe.py 中的参数定义whisper audio.flac audio.mp3 audio.wav --model turbo --output_format all--output_format/-f可选txt、vtt、srt、tsv、json、jsonl、all默认all即一次性输出全部格式TSV 格式使用整型毫秒时间戳便于表格工具直接处理。同时该版本修复了download_root对XDG_CACHE_HOME的处理。这一逻辑至今保留在 whisper/init.py优先读取环境变量XDG_CACHE_HOME未设置时回退到~/.cache最终拼接为whisper子目录。这意味着用户可以通过设置XDG_CACHE_HOME来集中管理模型缓存无需修改代码即可改变模型存放位置。v20230306词级时间戳与解码重构词级时间戳进入 transcribe()v20230306 将词级时间戳并入transcribe()PR #869这是 Whisper 字幕能力的基石。源码中的实现位于 whisper/timing.py 的add_word_timestamps()与 whisper/transcribe.py 的调用逻辑。核心流程为收集各 segment 的文本 tokenfind_alignment()whisper/timing.py在前向传播时通过 hook 捕获 cross-attention 权重只保留与时间高度相关的对齐头model.alignment_heads对权重做标准化与中值滤波median_filter默认宽度 7见 whisper/timing.py使用动态时间规整DTW求解文本 token 与音频帧的最优对齐路径得到每个词的时间区间与概率。DTW 在 CPU 上使用 numba JIT 实现dtw_cpuwhisper/timing.py在 CUDA 上则由 whisper/triton_ops.py 中的 Triton kernel 加速dtw_cudawhisper/timing.py两者都调用 numba 版的backtrace回溯路径。命令行开启方式whisper audio.wav --model turbo --word_timestamps True --highlight_words True --max_line_width 42 --max_line_count 2其中highlight_words、max_line_width、max_line_count、max_words_per_line均要求--word_timestamps True否则 CLI 会直接报错见 whisper/transcribe.py。max_line_count仅在同时设置--max_line_width时生效而max_words_per_line与max_line_width互斥。解码改进与规范化同期 PR #1033 对解码做了改进PR #1038 引入black、isort、flake8统一代码风格。解码参数体系集中定义在 whisper/decoding.py 的DecodingOptions中参数默认值说明tasktranscribetranscribe或translatetemperature0.0采样温度CLI 默认0best_ofNoneCLI 5t 0时的独立采样轨迹数beam_sizeNoneCLI 5t 0时的 beam search 束宽patienceNonebeam search 耐心系数arxiv:2204.05424length_penaltyNone长度惩罚 alphaarxiv:1609.08144suppress_tokens-1抑制的 token 列表-1表示抑制大部分特殊符号suppress_blankTrue抑制空输出without_timestampsFalse使用\|notimestamps\|只采样文本 tokenmax_initial_timestamp1.0初始时间戳上限fp16True大部分计算使用半精度解码器会在 whisper/decoding.py 校验参数互斥性beam_size与best_of不能同时给出best_of与贪心采样temperature 0不兼容patience必须配合beam_size。v20230307/v20230308幻觉抑制与 triton 锁定v20230307 修复了 #1046 中报告的重复/幻觉问题PR #1052并将triton2.0.0固定为 x86_64 Linux 上的安装依赖PR #1053/#1051。v20230308 则让decode()直接接受 kwargs 以简化调用PR #1061并修复all_tokens处理导致的重复与 JSON 不一致PR #1060。幻觉抑制的工程思路持续演化最终在 v20240927 以“Skip silence around hallucinations”PR #1838的形式落地。当前transcribe()提供的相关参数whisper/transcribe.pyhallucination_silence_threshold开启词级时间戳后检测到可能幻觉时跳过超过该时长秒的静音段compression_ratio_threshold默认 2.4gzip 压缩比高于此值视为解码失败内容过于重复logprob_threshold默认 -1.0平均对数概率低于此值视为失败no_speech_threshold默认 0.6\|nospeech\|token 概率高于此值且平均对数概率低于logprob_threshold时判定为静音。解码回退逻辑位于decode_with_fallback()whisper/transcribe.py默认温度序列为(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)当压缩比或对数概率不达标时逐级升温重试当t 0时自动禁用beam_size/patiencet 0时禁用best_of。CLI 中该序列由--temperature_increment_on_fallback默认 0.2从起始温度构造whisper/transcribe.py。v20230307 还有一处对幻觉的“词级”抑制在add_word_timestamps()中异常词判定函数word_anomaly_score()whisper/transcribe.py对概率低于 0.15、时长短于 0.133 秒或超过 2.0 秒的词加分is_segment_anomaly()whisper/transcribe.py累计分数达到阈值即判定 segment 为幻觉候选配合前后静音条件进行跳过。v20230314tiktoken 全面接管与对齐修复v20230314 将分词器全面切换到 OpenAI 的 tiktokenPR #1044移除 tiktoken 版本固定后续 v20231105 PR #1759 完成。仓库中的词表资源位于 whisper/assets/gpt2.tiktoken、multilingual.tiktoken加载与任务逻辑在 whisper/tokenizer.py。同一版本还修复了 segment 与词列表之间的对齐问题PR #1087以及替换字符解码导致词列表截断的 bugPR #1089。这些对齐细节在 tests/test_timing.py 中有针对性覆盖test_dtw与test_dtw_cuda_equivalence验证 DTW 路径的确定性test_median_filter与test_median_filter_equivalence验证中值滤波在 CPU 与 CUDA 上的一致性。v20230918字词时间戳启发式与字幕排版该版本对词级时间戳做了一系列精细调整PR #1461 “Improve timestamp heuristics”、PR #1559 “word timing tweaks”并实现了max_line_width与max_line_count以及可选的词高亮PR #1184。这些启发式体现在 whisper/timing.py计算词时长中位数median_duration上限 0.7 秒max_duration为中位数两倍在句子边界处截断过长单词避免单个词跨越整句合并前后标点prepend_punctuations默认“¿([{-并入后一词append_punctuations默认.。,!?:”)]}、并入前一词由merge_punctuations()whisper/timing.py实现段首/段尾过长的词优先采用 segment 级时间戳保证与整体转录时间轴一致。相关 CLI 参数whisper/transcribe.py--prepend_punctuations、--append_punctuations、--highlight_words、--max_line_width、--max_line_count、--max_words_per_line。--max_words_per_line不配合--max_line_width使用时按固定词数分行的方式生成字幕。v20231105/v20231106large-v3 与鲁棒性修复v20231106 正式发布 large-v3PR #1761v20231105 带来了几项实用修复修复传入无语音音频文件时的异常PR #1396新增按指定词数生成字幕的选项PR #1729即后来的max_words_per_linetranscribe()异常处理改进PR #1682加载 mel 滤波矩阵时强制allow_pickleFalsePR #1511消除反序列化安全隐患。large-v3 的 mel 通道数从 80 提升到 128README 与文档字符串同步更新PR #2049 “n_mels can now be 128”。这在 whisper/audio.py 的mel_filters()中体现仅支持n_mels为 80 或 128滤波器矩阵从 whisper/assets/mel_filters.npz 按需加载。log_mel_spectrogram()whisper/audio.py随后完成 STFT、梅尔滤波、对数压缩与归一化clamp 到1e-10、动态范围截断 8.0、(log_spec 4.0) / 4.0映射到 0~1 区间。v20240930large-v3-turbo 与 SDPA 加速v20240930 是模型与性能并重的一个版本large-v3-turboPR #2361在 large-v3 基础上通过蒸馏与精简获得 809M 参数的模型速度显著优于 large-v3 且精度损失较小。当前默认模型已是turbo见 whisper/transcribe.py 的--model默认值。SDPAPR #2359torch.nn.functional.scaled_dot_product_attention可用时自动使用。实现位于 whisper/model.py 与MultiHeadAttention.qkv_attention()whisper/model.py。注意词级时间戳的find_alignment()需要原始注意力权重因此通过disable_sdpa()上下文管理器whisper/model.py临时关闭 SDPA。依赖兼容测试允许 numpy 2PR #2362并将测试矩阵扩展到 Python 3.12 与 PyTorch 2.4.1PR #2360。注意turbo的一个重要限制README 明确说明turbo 未经翻译任务训练指定--task translate时仍会输出原语种需要翻译时应改用medium或large等多语种模型。该限制也体现在 CLI 参数说明中whisper/transcribe.py。v20250625安全加载、DTW 设备一致与 initial_prompt 滑动窗口最新版本 v20250625 包含以下关键变更torch.load 强制 weights_onlyTruePR #2451 使load_model()在torch 1.13时强制使用weights_onlyTrue加载 checkpointwhisper/init.py。这消除了 pickle 反序列化执行任意代码的经典安全风险。同时allow_pickleFalse在 v20231105 已应用到mel_filters.npz的加载中tests/conftest.py 与测试资产 tests/jfk.flac 共同构成了端到端回归验证的基础。DTW 成本张量与输入同设备PR #2561 修复了 DTW 成本张量cost未与输入x处于同一设备的问题。在 whisper/timing.py 中cost先按 CPU 默认设备构造随后显式执行cost cost.to(x.device)。该修复配合 tests/test_timing.py 的test_dtw_cuda_equivalence保证 CUDA 路径dtw_cuda与 CPU 路径dtw_cpu结果一致。initial_prompt 随滑动窗口携带PR #2343 新增carry_initial_prompt选项当为True时initial_prompt会被前置到每个内部decode()调用的 prompt 中若上下文空间不足则从左侧截断以腾出空间whisper/transcribe.py。该选项的作用是让自定义词汇、专有名词等提示在长音频的每个窗口都持续生效代价是可能削弱condition_on_previous_text的效果whisper/transcribe.py。对应的 Python 参数与 CLI--carry_initial_prompt均已支持。工程化迁移PR #2435 将打包配置从setup.py迁移到pyproject.tomlPEP 621当前 pyproject.toml 中版本号通过attr whisper.version.__version__动态读取依赖声明了triton2且仅在 x86_64 Linux 上安装CLI 入口由scripts.whisper whisper.transcribe:cli声明。PR #2487 在 CI 中新增 Python 3.13 测试requires-python声明为3.8覆盖 3.8~3.13 共六个版本。v20240927 的 triton 兼容放宽PR #2307、#1887与 v20240930 的 SDPA 配合使项目在 PyTorch 2.4 环境下依然稳定运行。从测试用例看端到端行为契约tests/test_transcribe.py 展示了官方对转录行为的核心断言可直接作为使用正确性的参考result model.transcribe( audio_path, languagelanguage, temperature0.0, word_timestampsTrue ) assert result[language] en assert result[text] .join([s[text] for s in result[segments]])测试同时对词级时间戳做了定量检查对经典样例 tests/jfk.flac 中 Americans 一词断言其start 1.8且end 1.8并验证tokenizer.decode(all_tokens) result[text]token 与文本可逆以及带时间戳解码以|0.00|开头。这意味着result[text]恒等于所有 segment 文本的拼接词级时间戳segment[words]中的每个词满足start end使用temperature0.0时结果完全确定。实际使用CLI 与 Python API 速查命令行# 默认 turbo 模型转录 whisper audio.flac audio.mp3 audio.wav --model turbo # 指定语种 whisper japanese.wav --language Japanese # 翻译到英文须使用多语种模型 whisper japanese.wav --model medium --language Japanese --task translate # 带词级时间戳与字幕排版 whisper lecture.mp3 --model turbo --word_timestamps True --highlight_words True --max_line_width 42 --max_line_count 2 # 查看全部选项 whisper --helpPython APIimport whisper model whisper.load_model(turbo) result model.transcribe(audio.mp3, word_timestampsTrue) print(result[text]) for seg in result[segments]: print(seg[start], seg[end], seg[text])底层接口audio whisper.load_audio(audio.mp3) audio whisper.pad_or_trim(audio) mel whisper.log_mel_spectrogram(audio, n_melsmodel.dims.n_mels).to(model.device) _, probs model.detect_language(mel) print(fDetected language: {max(probs, keyprobs.get)}) options whisper.DecodingOptions() result whisper.decode(model, mel, options) print(result.text)总结CHANGELOG 背后的工程主线纵览 CHANGELOGWhisper 的迭代呈现三条清晰主线一是模型能力从 large-v3 到 large-v3-turbo 的规模化与蒸馏优化二是解码质量围绕幻觉抑制、时间戳启发式、温度回退与词级对齐的持续打磨三是工程安全与生态从 tiktoken 切换、weights_onlyTrue、allow_pickleFalse到 PEP 621 打包与多版本 CI 的现代化。阅读本文后你可以对照 CHANGELOG.md、whisper/transcribe.py、whisper/timing.py 与 whisper/decoding.py按版本理解每个参数的由来与用途并借助 tests/ 中的用例验证自己的配置行为。赞分享人工智能语音音频基础模型【免费下载链接】whisperRobust Speech Recognition via Large-Scale Weak Supervision项目地址https://gitcode.com/GitHub_Trending/whisp/whisper点击查看免费下载相关推荐3个问题揭示ComfyUI-LTXVideo如何让LTX-2视频生成从技术实验走向创作实践3个问题揭示ComfyUI LTXVideo如何让LTX 2视频生成从技术实验走向创作实践 你是否曾困惑于如何在ComfyUI中充分发挥LTX 2视频生成模人工智能大模型AI 应用媒体生成本地部署Sanic 版本演进全解析从 changelog 看 25.12 LTS 与历代关键变更Sanic 版本演进全解析从 changelog 看 25.12 LTS 与历代关键变更 本文以 Sanic 官方文档站中的 changelog.md htt后端Web框架Whisper 模型卡技术解读弱监督语音识别模型的数据构成、能力边界与部署实践Whisper 模型卡技术解读弱监督语音识别模型的数据构成、能力边界与部署实践 本指南以仓库中的 model card.md https://link.git人工智能语音音频基础模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。