錄提速4倍:完整實(shí)戰(zhàn)指南)
如何用 faster-whisper 把 Whisper 語音轉(zhuǎn)錄提速4倍完整實(shí)戰(zhàn)指南【免費(fèi)下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisperfaster-whisper 是一個(gè)基于 CTranslate2 推理引擎重新實(shí)現(xiàn)的 OpenAI Whisper 語音轉(zhuǎn)錄庫(kù)。它保持與原版相同的準(zhǔn)確率但速度最快可提升 4 倍內(nèi)存占用更低并支持 8 位量化。如果你還在用 openai/whisper 轉(zhuǎn)錄整場(chǎng)會(huì)議錄音、干等十幾分鐘這套方案可以直接替換準(zhǔn)確率不降。場(chǎng)景先說清楚轉(zhuǎn)錄慢卡在哪用原版 Whisper 做語音轉(zhuǎn)文字時(shí)常見的兩個(gè)抱怨13 分鐘錄音要轉(zhuǎn) 2 分多鐘GPU、large-v2 模型長(zhǎng)音頻更夸張批量處理時(shí)內(nèi)存/顯存吃緊想開批處理又容易爆顯存。faster-whisper 的做法不是魔改 Whisper而是把 Whisper 模型搬到 CTranslate2 這個(gè)專門為 Transformer 模型做過推理優(yōu)化的引擎上跑再配合權(quán)重量化int8和批量推理把耗時(shí)和內(nèi)存同時(shí)壓下來。一句話版本項(xiàng)目結(jié)構(gòu)有多輕整個(gè)庫(kù)就 6 個(gè)核心模塊職責(zé)清晰模塊負(fù)責(zé)什么faster_whisper/audio.py音頻解碼依賴 PyAV自帶 FFmpeg 庫(kù)系統(tǒng)不用單獨(dú)裝 FFmpegfaster_whisper/feature_extractor.py梅爾頻譜特征提取faster_whisper/tokenizer.py多語言分詞器faster_whisper/transcribe.py轉(zhuǎn)錄核心算法含批量推理入口faster_whisper/vad.py語音活動(dòng)檢測(cè)內(nèi)置 Silero VAD 模型faster_whisper/assets/silero_vad_v6.onnxfaster_whisper/utils.py工具函數(shù)當(dāng)前版本 1.2.1要求 Python 3.9。用數(shù)據(jù)看提速同一段 13 分鐘音頻官方基準(zhǔn)用 13 分鐘音頻對(duì)比各實(shí)現(xiàn)測(cè)試環(huán)境分別是 CUDA 12.4 RTX 3070 Ti 8GBGPU和 8 線程 i7-12700KCPUbeam_size 統(tǒng)一為 5GPU 上跑 large-v2 模型實(shí)現(xiàn)精度耗時(shí)顯存openai/whisperfp162m23s4708MBfaster-whisperfp161m03s4525MBfaster-whisperbatch_size8fp1617s6090MBfaster-whisperint859s2926MBfaster-whisperbatch_size8int816s4500MBCPU 上跑 small 模型實(shí)現(xiàn)精度耗時(shí)內(nèi)存openai/whisperfp326m58s2335MBfaster-whisperfp322m37s2257MBfaster-whisperint81m42s1477MBfaster-whisperbatch_size8int851s3608MB規(guī)律很清楚開 batch_size 換速度開 int8 換內(nèi)存顯存/內(nèi)存夠用就兩個(gè)一起上GPU 上 13 分鐘音頻 16 秒跑完。另外對(duì)蒸餾模型 distil-large-v3faster-whisper 批量推理batch_size16fp1625m50s 完成WER 13.527比 transformers 實(shí)現(xiàn)46m12sWER 14.801快了近一倍且誤差更低。三步上手安裝、加載、轉(zhuǎn)錄pip install faster-whisperfrom faster_whisper import WhisperModel model WhisperModel(large-v3, devicecuda, compute_typefloat16) segments, info model.transcribe(audio.mp3, beam_size5) print(info.language, info.language_probability) for segment in segments: print(f[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text})設(shè)備與精度的組合關(guān)系場(chǎng)景devicecompute_typeGPU省顯存cudaint8_float16GPU默認(rèn)cudafloat16CPU省內(nèi)存cpuint8CPU默認(rèn)cpufloat32不指定language時(shí)會(huì)自動(dòng)檢測(cè)語言基于開頭 30 秒返回info.language和置信度task支持transcribe和translate非英語音頻轉(zhuǎn)成英文。常用參數(shù)速查調(diào)優(yōu)基本只動(dòng)這幾個(gè)參數(shù)參數(shù)作用建議beam_size解碼搜索寬度默認(rèn) 5注意原版 whisper 默認(rèn)是 1對(duì)比性能時(shí)務(wù)必對(duì)齊batch_size批量推理大小顯存夠就調(diào)到 8~16提速明顯word_timestamps輸出詞級(jí)時(shí)間戳做字幕必開vad_filter過濾無人聲片段默認(rèn) True長(zhǎng)音頻建議保留vad_parameters調(diào)節(jié) VAD 靈敏度如dict(min_silence_duration_ms500)默認(rèn)只刪 2 秒以上的靜音hotwords提示詞/專有名詞識(shí)別專業(yè)術(shù)語、人名時(shí)加language強(qiáng)制指定語言已知語言時(shí)指定省掉檢測(cè)開銷詞級(jí)時(shí)間戳 VAD 的典型用法做字幕時(shí)直接抄segments, _ model.transcribe( audio.mp3, word_timestampsTrue, vad_filterTrue, vad_parametersdict(min_silence_duration_ms500), ) for seg in segments: print([(round(w.start, 2), round(w.end, 2), w.word) for w in seg.words])進(jìn)階批量推理與自定義模型批量推理BatchedInferencePipeline是WhisperModel.transcribe的即插即用替代版默認(rèn)自帶 VAD 過濾from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched BatchedInferencePipeline(modelmodel) segments, info batched.transcribe(audio.mp3, batch_size16)加載自己微調(diào)的模型裝好transformers[torch]4.23后用ct2-transformers-converter把任何兼容 Transformers 的 Whisper 模型原始官方模型或用戶微調(diào)模型轉(zhuǎn)成 CTranslate2 格式可用--quantization float16或int8_float16指定精度再用WhisperModel(本地目錄)直接加載。Docker 部署倉(cāng)庫(kù) docker/ 目錄有一個(gè)最小示例Dockerfile 基于nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04鏡像內(nèi)含 cuBLAS 和 cuDNN 9適合 GPU 環(huán)境不想手動(dòng)裝庫(kù)的人。避坑指南segments是生成器transcribe返回時(shí)并沒有真正開始轉(zhuǎn)錄必須遍歷for 循環(huán)或list()才會(huì)實(shí)際運(yùn)行。這是新手最容易踩的坑。GPU 環(huán)境要求需要 NVIDIA cuBLAS cuDNN 9CUDA 12。CUDA 11 用戶需降級(jí)ctranslate23.24.0CUDA 12 cuDNN 8 則用4.4.0。VAD 依賴onnxruntime啟用vad_filter前確認(rèn)已安裝。做對(duì)比測(cè)試要對(duì)齊條件beam_size5 vs 1、CPU 線程數(shù)設(shè)置OMP_NUM_THREADS、以及轉(zhuǎn)錄 WER 相近否則速度數(shù)字沒有可比性。系統(tǒng)不用裝 FFmpeg解碼走 PyAV 自帶的 FFmpeg 庫(kù)少一項(xiàng)環(huán)境依賴。適合誰下一步做什么如果你在做字幕生產(chǎn)線、會(huì)議/播客語音轉(zhuǎn)文字、或需要批量處理大量音頻faster-whisper 是目前把速度、準(zhǔn)確率、內(nèi)存三者平衡得最好的開源方案。下一步建議先按上文的三步把最小流程跑通再閱讀 faster_whisper/transcribe.py 里transcribe的完整參數(shù)文檔批量部署參考 docker/ 的示例。想拉源碼看實(shí)現(xiàn)的話可克隆git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper【免費(fèi)下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考