Faster-Whisper:更快更好的开源Asr模型

Faster-Whisper:更快更好的开源Asr模型

大家好,我是烤鸭:

   半年前写过的whisper,https://blog.ZEEKLOG.net/Angry_Mills/article/details/145556431。其实一度中间换到了whisperX,虽然没有whisper好用(不支持标点符号),不过效率是真香。最近又遇到类似的需求,就去魔塔上搜了一下,发现了这款 faster-whisper(不过魔塔上没有代码说明 )。如果你也有asr要求,又不想花钱,机器配置又一般,强烈推荐。

Faster-Whisper模型介绍

魔塔地址:https://www.modelscope.cn/models/XXXXRT/faster-whisper

github:https://github.com/SYSTRAN/faster-whisper

可以看到large模型,在内存差不多的情况下,faster-whisper耗时比whisper快了50%+

在这里插入图片描述

测试环境

  • Python 3.11 or greater
  • CUDA 12.8
  • windows 4070S 12G
  • linux 4090 24G

调用demo

代码没什么好说的,就是官方代码改了下。

from faster_whisper import WhisperModel model_dir = "/data/xxxxx/modelscope/hub/models/XXXXRT/faster-whisper/faster-whisper-large-v3" # Run on GPU with FP16 model = WhisperModel(model_dir, device="cuda", compute_type="float16") # or run on GPU with INT8 # model = WhisperModel(model_dir, device="cuda", compute_type="int8_float16") # or run on CPU with INT8 # model = WhisperModel(model_dir, device="cpu", compute_type="int8") # 2. 配置VAD参数(异常检测核心) vad_options = { "threshold": 0.9, "min_speech_duration_ms": 100, "max_speech_duration_s": 5 } def transcribe(audio_path: str): # 下载远程音频到本地 segments, info = model.transcribe(audio_path,beam_size=5, length_penalty=0.5, # 鼓励更短文本 suppress_tokens=[], # 不抑制任何标点(保留默认标点) word_timestamps=True, no_speech_threshold=0.8, # 更严格的无语音判断 compression_ratio_threshold=2.6, # 更高的压缩率阈值 log_prob_threshold=-0.8, # 更高的日志概率要求 vad_filter=True, # 启用VAD过滤 vad_parameters=vad_options # 应用自定义参数 ) print("Detected language '%s' with probability %f" % (info.language, info.language_probability)) # 关键:将迭代器转换为列表,避免后续遍历耗尽 # 转换为只包含start、end、text字段的字典列表 segments_list = [ { "id": segment.id, "start": segment.start, "end": segment.end, "text": segment.text } for segment in segments ] # 打印处理后的片段信息 for seg in segments_list: print(f"[{seg['start']:.2f}s -> {seg['end']:.2f}s] {seg['text']}") return segments_list # 返回仅包含目标字段的列表 if __name__ == '__main__': transcribe("D:\\dev\\workspace\\python\\chatterbox\\simple_sep_results\\vocals.wav") 

文字内容基本和原始音频一致,除了个别的背景干扰音识别失败之外。

不管是linux还是windows环境,使用float16量化,1分钟的音频基本在2~3秒可以返回结果。

结果截图:

在这里插入图片描述

如果不设置vad的话,上面的时间都是连贯的,上一句的end和下一句的start是没有间隔的。

由于我们要求的精度高一些,就调整了vad设置。

vad设置可以参考这篇文章:

https://blog.ZEEKLOG.net/gitblog_00911/article/details/151477552

https://github.com/CheshireCC/faster-whisper-GUI/blob/main/%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E%EF%BC%9A.md

为什么快

faster-whisper is a reimplementation of OpenAI’s Whisper model using CTranslate2, which is a fast inference engine for Transformer models.

This implementation is up to 4 times faster than openai/whisper for the same accuracy while using less memory. The efficiency can be further improved with 8-bit quantization on both CPU and GPU.

faster-whisper是使用CTranslate2对OpenAI的Whisper模型进行的重新实现,CTranslate2是Transformer模型的快速推理引擎。
在保持相同准确率的同时,此实现比openai/whisper快达4倍,且占用内存更少。若在CPU和GPU上均采用8位量化,则效率可进一步提升。

CTranslate2之所以高效快速,主要源于其针对 Transformer 模型推理场景的深度优化,结合了硬件适配、执行策略和架构设计等多方面的改进。具体原因可归纳为以下几点:

1. 针对性的执行优化技术

CTranslate2 实现了多种高级优化技术,直接提升计算效率:

  • 层融合(Layer Fusion):将多个连续的计算层(如注意力层、前馈网络层)合并为单次操作,减少层间数据传输和内存访问开销。
  • 移除填充(Padding Removal):在处理批次数据时,去除输入序列中的填充(padding) tokens,避免无效计算,提高计算密度。
  • 批次重排序(Batch Reordering):对输入批次按长度或其他特征重新排序,使计算更高效(如减少内存碎片化、提高缓存利用率)。
  • 原地操作(In-place Operations):尽量在原有内存空间中执行计算,减少不必要的内存分配和拷贝。
  • 缓存机制(Caching Mechanism):对频繁使用的中间结果或参数进行缓存,避免重复计算或加载。

2. 量化与低精度计算支持

通过支持多种低精度数据类型,在保证精度损失最小的前提下大幅提升计算速度:

  • 支持 FP16(16 位浮点数)、BF16(16 位脑浮点数)、INT16(16 位整数)、INT8(8 位整数)甚至 INT4(4 位整数,AWQ 量化)等格式。
  • 低精度计算不仅减少内存带宽占用(数据传输更快),还能提高硬件计算单元的利用率(如 GPU 对 INT8 的计算吞吐量远高于 FP32)。
  • 量化后的模型体积更小(最多可缩小 4 倍),加载和访问速度更快。

3. 硬件适配与自动优化

  • 多 CPU 架构支持:针对 x86-64 和 AArch64/ARM64 等主流架构,集成了多个硬件优化后端,如 Intel MKL、oneDNN、OpenBLAS、Ruy、Apple Accelerate 等,充分利用硬件特性。
  • 自动指令集调度:单个二进制文件可包含多种指令集(如 AVX、AVX2)和后端,运行时根据 CPU 型号自动选择最优方案,无需手动配置。
  • GPU 高效利用:支持 CUDA 等 GPU 加速,结合量化(如 INT8 + FP16 混合精度)进一步提升 GPU 计算效率,减少显存占用。

4. 并行与异步执行

  • 多批次并行处理:支持多 GPU 或 CPU 核心并行处理多个批次,提高硬件资源利用率。
  • 异步执行:通过异步接口(如 translate_batch_async)允许在等待当前批次计算时预处理下一批次,减少空闲时间,提升吞吐量。

5. 动态内存管理

  • 采用缓存分配器(CPU 和 GPU 均支持),根据输入请求大小动态调整内存使用,避免过度分配或频繁内存申请 / 释放,平衡性能与内存开销。

6. 轻量架构与框架无关性

  • 与原始 CTranslate 相比,CTranslate2 移除了对 LuaTorch 等 deprecated 框架的依赖,核心逻辑与具体深度学习框架解耦,仅在模型转换阶段处理框架相关逻辑,减少运行时冗余。
  • 延迟调用外部库(如 Intel MKL、cuBLAS),避免依赖库的复杂逻辑对执行效率的影响,专注于核心推理优化。

实测数据佐证

从官方 benchmarks 来看,CTranslate2 在相同硬件上的性能显著优于通用深度学习框架(如 TensorFlow、PyTorch)和其他专用工具(如 Marian):

  • CPU 上:相比 OpenNMT-py(PyTorch),INT8 量化下的 CTranslate2 tokens 处理速度提升约 3 倍,内存占用减少 75%。
  • GPU 上:相比 FP32 精度,INT8 + FP16 混合精度下的 tokens 处理速度提升约 1.4 倍,显存占用降低 30% 以上。

综上,CTranslate2 通过 “算法优化 - 硬件适配 - 资源管理” 的全链路设计,实现了 Transformer 模型推理的高效执行,尤其适合生产环境中的高性能需求。

在这里插入图片描述

文章参考

https://blog.ZEEKLOG.net/gitblog_00911/article/details/151477552

https://github.com/SYSTRAN/faster-whisper/

https://github.com/OpenNMT/CTranslate2/

https://github.com/CheshireCC/faster-whisper-GUI/blob/main/%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E%EF%BC%9A.md

Read more

Python实现开源AI模型引入及测试全过程

Python实现开源AI模型引入及测试全过程

文章目录 * 摘要 * 1. 引言:开源AI生态系统概述 * 1.1 开源AI的发展现状 * 1.2 技术栈选择 * 1.3 项目目标 * 2. 环境配置与项目初始化 * 2.1 系统要求 * 2.2 创建虚拟环境 * 2.3 依赖管理文件 * 2.4 安装依赖 * 2.5 项目结构 * 3. 模型原理与架构解析 * 3.1 BERT模型原理 * 3.1.1 Transformer编码器架构 * 3.2 Hugging Face Transformers架构 * 4. 数据准备与预处理 * 4.1 数据集选择与加载

By Ne0inhk
SCADA Engine:开源工业级组态引擎,让工业可视化开发更简单

SCADA Engine:开源工业级组态引擎,让工业可视化开发更简单

SCADA Engine:开源工业级组态引擎,让工业可视化开发更简单 前言 在工业互联网和智能制造的浪潮下,SCADA(监控与数据采集)系统成为了工业现场不可或缺的核心工具。然而,传统的组态软件往往存在以下痛点: * 💸 商业软件价格昂贵,中小企业难以承受 * 🔒 闭源不可控,无法根据业务需求灵活定制 * 🎨 界面老旧,用户体验欠佳 * 📱 Web化程度低,难以适应移动化、云化趋势 为了解决这些问题,我开发了 SCADA Engine —— 一个基于 Vue3 和 AntV X6 的开源工业级组态引擎。 项目简介 SCADA Engine 是一个现代化的工业组态编辑器,支持可视化拖拽、实时数据绑定、3D仿真组件和工作流编排。它完全基于 Web 技术栈,可以快速构建工业监控大屏、设备管理界面等应用。 演示地址:http://scada.hn-dc.com/ 图1:SCADA Engine

By Ne0inhk

深度解析:Qwen3.5-9B如何用1/13的参数量在5大基准中超越GPT-oss-120B?混合架构、基准测试、开源许可全分析

一、前言:AI圈的"小模型奇迹" 1.1 2025-2026年最热门的AI话题 如果你问AI领域从业者,2025-2026年最热门的话题是什么? 答案很明确:"小模型超越大模型"的技术突破。 而其中最震撼的,莫过于阿里通义千问(Qwen)团队在2026年初发布的Qwen3.5-9B模型。 1.2 核心数据对比 模型参数量推理任务得分视觉推理得分Qwen3.5-9B9B(90亿)81.770.1gpt-oss-120B约120B(12000亿)80.159.7 核心事实: * Qwen3.5-9B的参数量只有gpt-oss-120B的1/13.5 * 但在推理任务上得分超越gpt-oss-120B(81.7 vs 80.1) * 在视觉推理任务上也超越(70.1 vs 59.

By Ne0inhk
【开源免费】基于 STM32F103C8T6 单片机的智能家居系统设计与实现

【开源免费】基于 STM32F103C8T6 单片机的智能家居系统设计与实现

基于 STM32F103C8T6 单片机的智能家居系统设计与实现 ——从传感器采集到 MQTT 远程控制的完整方案解析 在当前智能家居快速发展的时代,如何利用低成本 MCU、无线通信模块与 MQTT 服务器搭建一个可扩展、易维护且可靠的智能家居系统,是许多电子工程师和 DIY 开发者关注的话题。 本文将详细介绍一个基于 STM32F103C8T6、ESP8266(ESP-01S)、EMQX MQTT 服务器 和 安卓 APP 的完整智能家居系统,从硬件设计、通信架构、固件编写到应用显示,逐步拆解整个方案的实现过程,帮助读者快速构建属于自己的智能家居控制平台。 源码分享 由于平台诸多限制,链接无法直接分享并容易失效。源码可在下方链接中直接下载。免费开源 https://code.devzoo.top/embedded/151.html 一、项目目标 本项目旨在设计并实现一套基于 STM32F103C8T6 的智能家居系统。系统主要目标包括:

By Ne0inhk