文字,同樣精度跑出 4 倍速度)
faster-whisper 速成指南本地語音轉(zhuǎn)文字同樣精度跑出 4 倍速度【免費下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper手頭有一段一兩個小時的會議錄音或課程音頻想用 Whisper 轉(zhuǎn)成文字卻看著進度條慢慢爬、內(nèi)存占用還越來越高faster-whisper 就是為解決這個問題而生的本地語音轉(zhuǎn)文字工具它用 CTranslate2 推理引擎重新實現(xiàn)了 OpenAI Whisper 模型保持相同識別精度的同時最多快 4 倍占用的內(nèi)存反而更少。這篇指南從安裝到拿到第一條轉(zhuǎn)錄結(jié)果全程可照抄。先搞懂它是什么三個數(shù)字說清楚faster-whisper 不是又一個語音識別新模型而是把 Whisper 模型搬到 CTranslate2 這個推理引擎上跑的換引擎版。三個數(shù)字幫你建立預(yù)期4 倍README 給出的官方說法是同等精度下最高可達 openai/whisper 的 4 倍速度13 分鐘這是官方基準(zhǔn)測試用的音頻長度方便對比各實現(xiàn)0 個 FFmpeg它不要求系統(tǒng)安裝 FFmpeg音頻解碼由 PyAV 庫內(nèi)置的 FFmpeg 庫完成少一步裝依賴的麻煩。拿官方 benchmark 里的真實數(shù)據(jù)看13 分鐘音頻GPU 上跑 large-v2對比項faster-whisperopenai/whisper原版耗時fp161 分 03 秒2 分 23 秒顯存占用fp164525MB4708MBint8 量化后59 秒 / 2926MB不支持批量推理batch_size817 秒 / 4500MB無此選項CPU 上差距更直觀small 模型轉(zhuǎn)錄同一段音頻原版 fp32 要 6 分 58 秒、占 2335MB 內(nèi)存faster-whisper 開 int8 只要 1 分 42 秒、占 1477MB批量推理再加碼可壓到 51 秒。關(guān)鍵區(qū)別它省時間靠的是推理引擎 8 位量化不是閹割模型識別精度與原版對齊。裝好它跑出第一條轉(zhuǎn)錄結(jié)果 環(huán)境要求只有兩條Python 3.9 及以上以及 pip 能聯(lián)網(wǎng)。GPU 用戶另需 CUDA 12 的 cuBLAS 和 cuDNN 9只走 CPU 可忽略。# 安裝一條命令完成 pip install faster-whisper然后是最小組轉(zhuǎn)錄腳本small模型在普通 CPU 上就能跑int8 量化省內(nèi)存# 最小可用示例加載模型并轉(zhuǎn)錄一個音頻文件 from faster_whisper import WhisperModel model WhisperModel(small, devicecpu, compute_typeint8) segments, info model.transcribe(audio.mp3) print(f語言: {info.language}置信度: {info.language_probability:.2f}) for segment in segments: print(f[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text})有兩點新手要注意第一次運行會按模型名自動下載對應(yīng)的 CTranslate2 模型文件之后走本地緩存segments是個生成器不遍歷就不開始轉(zhuǎn)錄上面用 for 循環(huán)遍歷就等價于跑到底。跑通這段代碼控制臺就會逐行打出帶時間戳的轉(zhuǎn)寫文本——這就是你的第一條結(jié)果。倉庫里的 docker/infer.py 也是一個更短的官方示例用的是tiny模型。最值得用的 3 個轉(zhuǎn)錄用法1. 詞級時間戳給每個詞打上精確時間點問題做字幕或想精確定位某句話時段落級的起止時間不夠細。做法加一個參數(shù)即可。segments, _ model.transcribe(audio.mp3, word_timestampsTrue) for segment in segments: for word in segment.words: print(f[{word.start:.2f} - {word.end:.2f}] {word.word})效果每個詞都有獨立的起止時間直接就能用來生成逐詞高亮的字幕或做發(fā)音分析。2. 指定語言 翻譯任務(wù)轉(zhuǎn)寫之外再送一份譯文問題外語音頻想直接得到目標(biāo)語言文字而不是先轉(zhuǎn)寫再人工翻譯。做法language指定源語言tasktranslate開啟翻譯。# 識別日語音頻直接輸出英文譯文Whisper 翻譯目標(biāo)為英語 segments, info model.transcribe(japanese.mp3, languageja, tasktranslate) for segment in segments: print(f[{segment.start:.2f}s] {segment.text})效果不寫language時模型會依據(jù)音頻前 30 秒自動檢測語言顯式指定可以避免誤判翻譯輸出帶時間戳。3. VAD 靜音過濾長音頻里大段空白不白算問題訪談、課堂錄音里大量靜音和停頓白白消耗算力還可能產(chǎn)生亂碼片段。做法開啟內(nèi)置的 Silero VAD 過濾默認只剔除超過 2 秒的靜音可用vad_parameters收緊。segments, _ model.transcribe( interview.wav, vad_filterTrue, vad_parametersdict(min_silence_duration_ms500), # 靜音超 500ms 即切斷 )效果只對人聲部分做轉(zhuǎn)錄長音頻提速明顯。VAD 的完整參數(shù)閾值、最短語音時長等見 faster_whisper/vad.py。按你的硬件和場景選方案不用背參數(shù)對號入座即可場景 / 需求推薦配置說明沒有獨顯日常轉(zhuǎn)寫devicecpucompute_typeint8模型選base/small內(nèi)存占用最低的組合普通筆記本可跑有 N 卡追求吞吐devicecudacompute_typefloat16配合BatchedInferencePipeline官方基準(zhǔn)里 GPU fp16 批量推理可把 13 分鐘音頻壓到十幾秒顯存緊張但要高精度GPU 上用compute_typeint8_float16或 CPU 上 large 系列配 int8int8 量化是官方推薦省顯存手段英文為主、要快又要準(zhǔn)distil-large-v3或turbo官方已驗證兼容基準(zhǔn)中明顯快于常規(guī)跑法批量推理的用法就是把模型包一層再轉(zhuǎn)錄from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched_model BatchedInferencePipeline(modelmodel) segments, info batched_model.transcribe(audio.mp3, batch_size16)distil-large-v3則建議帶上condition_on_previous_textFalse這是官方示例的推薦搭配。橫向?qū)Ρ仍撨x誰對比維度faster-whisper原版 openai/whisper在線語音轉(zhuǎn)寫服務(wù)轉(zhuǎn)錄速度★★★★☆基準(zhǔn)最快一檔★★☆☆☆★★★☆☆看網(wǎng)絡(luò)內(nèi)存 / 顯存★★★★☆int8 后大幅降低★★☆☆☆★★★★★不占本地隱私與離線★★★★★ 完全本地★★★★★★☆☆☆☆ 音頻上傳云端功能可調(diào)性★★★★☆詞級時間戳、VAD、提示詞、批量★★★★☆★★☆☆☆上手門檻★★★☆☆ 需寫少量 Python★★★☆☆★★★★★ 網(wǎng)頁即用一句話建議如果你要處理的是內(nèi)部會議、客戶訪談等不能上傳的音頻選 faster-whisper如果只是想偶爾轉(zhuǎn)一段公網(wǎng)視頻在線服務(wù)更省事。新手最容易踩的 3 個坑坑一transcribe 之后沒遍歷以為卡住了。segments是生成器調(diào)用transcribe本身不干活必須 for 循環(huán)或list(segments)才會真正開始轉(zhuǎn)錄。覺得程序掛住不動十有八九是少了這一步。坑二直接上 large-v3 滿血配置然后內(nèi)存爆了。更大模型不等于更優(yōu)體驗。顯存不夠時先降計算類型float16→int8_float16CPU 用int8再考慮縮小模型順序別反。坑三以為要像原版一樣先裝 FFmpeg或者 GPU 跑不起來不知道為什么。faster-whisper 靠 PyAV 解碼不需要系統(tǒng)裝 FFmpeg但 GPU 路線要求 NVIDIA 側(cè)的 cuBLASCUDA 12和 cuDNN 9缺了任一個都起不來這是 GPU 環(huán)境最常見的失敗原因。組合玩法從跑通到常用組合一微調(diào)模型 faster-whisper 批量轉(zhuǎn)寫。如果你有自己微調(diào)的 Whisper 兼容模型可以用倉庫自帶的轉(zhuǎn)換腳本把權(quán)重轉(zhuǎn)成 CTranslate2 格式之后就能像加載內(nèi)置模型一樣加載本地目錄# 安裝轉(zhuǎn)換依賴后把 OpenAI 格式模型轉(zhuǎn)為 CTranslate2 格式 pip install transformers[torch]4.23 ct2-transformers-converter --model openai/whisper-large-v3 \ --output_dir whisper-large-v3-ct2 --quantization float16之后WhisperModel(whisper-large-v3-ct2)直接加載本地目錄即可適合私有領(lǐng)域的固定轉(zhuǎn)寫任務(wù)。組合二實時/半實時字幕場景。社區(qū)已有多個基于 faster-whisper 的流式項目README 的 Community integrations 一節(jié)列了十幾個含流式轉(zhuǎn)寫、說話人分離等方向可以按需挑選集成到自己的應(yīng)用里。成長路徑也不復(fù)雜初級——跑通 CPU int8 轉(zhuǎn)寫熟悉language、beam_size、initial_prompt幾個高頻參數(shù)完整參數(shù)定義在 faster_whisper/transcribe.py進階——上 GPU 批量推理掌握 VAD 參數(shù)調(diào)優(yōu)和 distil/turbo 模型選型再往上——轉(zhuǎn)換自定義模型、對接流式轉(zhuǎn)寫組件把它嵌進自己的產(chǎn)品線。常見問題速查表問題可能原因解決思路調(diào)用 transcribe 后程序卡住忘了遍歷生成器for segment in segments:或list(segments)GPU 加載報庫缺失缺 cuBLAS / cuDNN 9CUDA 12 版按 NVIDIA 官方文檔補齊或用官方 CUDA Docker 鏡像顯存/內(nèi)存不夠模型或計算類型偏大換 int8 系列計算類型或改用更小模型語言檢測不準(zhǔn)音頻開頭 30 秒信息不足或混音顯式傳languagexx長音頻有亂碼/重復(fù)片段靜音段未被剔除開vad_filterTrue并調(diào)小min_silence_duration_ms延伸場景兩個一是字幕工作流——用詞級時間戳導(dǎo)出逐詞文本導(dǎo)入剪輯軟件做逐詞校對二是批量檔案轉(zhuǎn)寫——把音頻目錄交給BatchedInferencePipeline循環(huán)處理配合log_progressTrue看進度。下一步行動清單pip install faster-whisper確認 Python 版本 ≥ 3.9用上面的最小腳本轉(zhuǎn)錄一個短音頻確認控制臺輸出帶時間戳的文本按硬件二選一CPU 上固定int8有 N 卡就補 CUDA 12 的 cuBLAS cuDNN 9再試float16挑一個真實任務(wù)會議、課程、訪談跑一遍順手把word_timestamps和 VAD 各試一次。裝好它把那段轉(zhuǎn)不動的錄音丟進去第一條結(jié)果幾分鐘內(nèi)就會出現(xiàn)在你的終端里?!久赓M下載鏈接】faster-whisperFaster Whisper transcription with CTranslate2項目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考