錄:提速4倍)
faster-whisper快速語音轉(zhuǎn)錄提速4倍【免費(fèi)下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper13分鐘的會(huì)議錄音在一張8GB的顯卡上跑官方 openai/whisper 用了2分23秒faster-whisper 語音轉(zhuǎn)錄只要1分03秒再開 int8 量化是59秒顯存從4.7GB降到2.9GB。它做的事并不神秘——把同一套 Whisper 模型權(quán)重搬到 CTranslate2 推理引擎上跑量化、批處理和 VAD 過濾都是圍繞這個(gè)引擎加的。faster-whisper 到底做了什么它是一個(gè) Python 庫輸入一個(gè)音頻文件mp3、m4a、flac、wav 都行輸出檢測到的語言、每段文本及其起止時(shí)間戳還可以拿到詞級時(shí)間戳和置信度。中間環(huán)節(jié)是PyAV 解碼音頻所以不用往系統(tǒng)里裝 FFmpegSilero VAD 模型先圈出有人聲的區(qū)間CTranslate2 負(fù)責(zé)跑編碼器-解碼器推理。一句話就是音頻進(jìn)帶時(shí)間戳的文字出。完整的參數(shù)和返回結(jié)構(gòu)在 faster_whisper/transcribe.py 里想摳細(xì)節(jié)可以直接讀源碼。批量會(huì)議錄音走通一次轉(zhuǎn)錄說下具體場景手上有幾段三四十分鐘的會(huì)議錄音要交給字幕系統(tǒng)要求每段帶時(shí)間戳。model WhisperModel(large-v3, devicecuda, compute_typefloat16) segments, info model.transcribe( meeting.mp3, beam_size5, vad_filterTrue, word_timestampsTrue ) for seg in list(segments): print(seg.start, seg.end, seg.text)這段代碼跑起來后內(nèi)部發(fā)生的事音頻先解碼成 16kHz 單聲道VAD 把連續(xù)語音區(qū)間標(biāo)出來默認(rèn)只刪超過2秒的靜音模型按30秒窗口逐段解碼。beam_size5表示解碼時(shí)每步保留5個(gè)最可能的候選序列越大越準(zhǔn)也越慢。VAD 在長會(huì)議音頻上省掉的算力很可觀——靜音和停頓直接不進(jìn)解碼器。有個(gè)容易踩的坑segments是生成器。transcribe()返回時(shí)一幀音頻都還沒算真正開始轉(zhuǎn)錄是在你迭代它或list()它的那一刻。文件多的時(shí)候不必一個(gè)個(gè)串行倉庫提供了批量接口from faster_whisper import BatchedInferencePipeline batched BatchedInferencePipeline(model) segments, info batched.transcribe(meeting.mp3, batch_size8)BatchedInferencePipeline把多個(gè)30秒窗口打進(jìn)同一個(gè) GPU 批次推理VAD 默認(rèn)開啟。同樣是13分鐘的音頻在 RTX 3070 Ti 上從1分03秒降到17秒代價(jià)是顯存從4525MB漲到6090MB。為什么快和省從 CTranslate2 到 int8提速主要來自三個(gè)決策每個(gè)都能在倉庫 README.md 的基準(zhǔn)數(shù)據(jù)里對上號。第一個(gè)是換推理引擎。權(quán)重和算法還是 Whisper 那套但推理跑在 CTranslate2 上這是一個(gè)針對 Transformer 模型做的推理運(yùn)行時(shí)。同一環(huán)境RTX 3070 Ti 8GB、i7-12700K 開8線程下large-v2 模型轉(zhuǎn)13分鐘音頻官方實(shí)現(xiàn)2分23秒這里是1分03秒CPU 上差距更明顯官方6分58秒這里2分37秒。第二個(gè)是8位量化。把compute_type設(shè)成int8CPU或int8_float16GPU權(quán)重以 int8 存儲(chǔ)、主要計(jì)算走低精度單元顯存和內(nèi)存下降最直接GPU 上同模型從4525MB降到2926MBCPU 上從2257MB降到1477MB時(shí)間也從1分03秒壓到59秒。精度損失通常很小做字幕級別基本無感對準(zhǔn)確率有極致要求的場景留在 fp16/fp32 更穩(wěn)。第三個(gè)是批量加 VAD 的組合。批量接口前面提過能把 GPU 時(shí)間壓到17秒VAD 則讓要轉(zhuǎn)的總量變小——錄音里靜音占比越高訪談、會(huì)議錄音通常如此剪掉的窗口越多整體越快。VAD 的參數(shù)都在 faster_whisper/vad.py比如min_silence_duration_ms500可以把切分粒度從超過2秒的靜音才斷改成半秒。什么時(shí)候不該用 faster-whisper實(shí)時(shí)低延遲對話不要用。Whisper 本身是離線分塊模型faster-whisper 沒有改變這一點(diǎn)做流式字幕你得在外面再包一層流式策略倉庫里列了幾個(gè)把它當(dāng)后端的社區(qū)項(xiàng)目可以參考但交互式場景不如直接選專門的流式 ASR 方案。最輕部署的環(huán)境不要用。它是 Python 庫依賴 ctranslate2 運(yùn)行時(shí)和 onnxruntime目標(biāo)環(huán)境是純 C 或沒有 Python 的嵌入式設(shè)備時(shí)whisper.cpp 更合適。相比 whisper.cppfaster-whisper 在 CPU 單文件 fp32 場景略慢2分37秒對2分05秒但換來的是批量推理、詞級時(shí)間戳、VAD 和更完整的參數(shù)面兩者定位不完全重疊。老顯卡環(huán)境要小心。最新版 ctranslate2 只支持 CUDA 12 和 cuDNN 9CUDA 11 的老機(jī)器要降級鎖定舊版 ctranslate2比較折騰。GPU 部署建議直接用倉庫 docker/Dockerfile它基于 NVIDIA 官方 CUDA 12.3 cuDNN 9 的鏡像把依賴一次配齊。5分鐘跑通第一次轉(zhuǎn)錄Python 3.9一條 pip 命令裝完不需要系統(tǒng)裝 FFmpegpip install faster-whisper最小可運(yùn)行代碼換掉文件名就能跑from faster_whisper import WhisperModel model WhisperModel(tiny, deviceauto) # auto 會(huì)自動(dòng)選 cuda 或 cpu segments, info model.transcribe(audio.mp3, vad_filterTrue) for seg in list(segments): print(info.language, f[{seg.start:.1f} - {seg.end:.1f}], seg.text)tiny 只是先跑通流程轉(zhuǎn)錄質(zhì)量不滿意時(shí)把模型名換成large-v3或distil-large-v3其余代碼不用動(dòng)。調(diào)優(yōu)int8 和 batch_size 怎么選compute_typeCPU 用int813分鐘音頻1分42秒內(nèi)存1477MBGPU 默認(rèn)float168GB 顯存卡跑 large-v3 這類大模型時(shí)用int8_float16更穩(wěn)。大多數(shù)情況CUDA 上就選float16純 CPU 選int8。batch_size僅批量接口從1加到8GPU 上1分03秒到17秒顯存4525MB到6090MB顯存緊張就降到4。模型檔位tiny用于快速試效果large-v3是質(zhì)量上限distil-large-v3是折中——倉庫基準(zhǔn)里同樣任務(wù)它比 transformers 后端快約一倍25分50秒對46分12秒WER 還從14.8降到13.5。hotwords傳一段專有名詞或術(shù)語字符串會(huì)拼進(jìn)提示詞里產(chǎn)品名、人名這類容易聽錯(cuò)的詞識(shí)別率會(huì)改善。如果音頻是中文會(huì)議錄音、機(jī)器上有 CUDA 卡默認(rèn)float16加 VAD 就夠用了長視頻加低端卡的組合先切int8_float16加BatchedInferencePipeline第一個(gè)文件轉(zhuǎn)完你就能看到差距?!久赓M(fèi)下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考