FasterWhsiperGUI 更快更強更好用的 whisper


????????前一篇文章中 曾經(jīng)介紹過 OpenAI 的開源模型 whisper,可以執(zhí)行 99 種語言的語音識別和文字轉(zhuǎn)寫。
????????但是 whisper 模型占用計算資源多,命令行使用門檻高,所以還介紹了 whisper 模型的 c++ 實現(xiàn):whisper.cpp 項目,以及該項目的 GUI 版本 :whisperDesktop 。whisper.cpp 項目采用 c++ 語言以及 ggml 張量計算庫對 whisper 模型進行了重新實現(xiàn),whisperDesktop 則對whsiper.cpp 的成果進行了進一步利用,采用 Direct3D 11?著色渲染器作為后端計算器,在兼容更多設(shè)備的同時,做到了高速、準(zhǔn)確的語音識別,同時還支持了實時錄音實時轉(zhuǎn)寫——即對音頻流的支持。

????????但是,whisper 模型本身還存在一些問題,例如 模型幻聽問題(大部分的類似于不斷重復(fù)同一句話、無語音部分復(fù)讀莫名內(nèi)容等都是由于這個原因造成的)。要更好使用 whsiper 模型就需要能夠準(zhǔn)確調(diào)試模型參數(shù)。但 whisper 模型參數(shù)眾多,且命令行使用對使用者有一定要求,而且只有 torch 版可以做到調(diào)整參數(shù),whisperDesktop 版本由于根本沒有實現(xiàn) whisper 模型的可調(diào)整參數(shù),因此根本無法使用參數(shù)。而使用 VAD 類工具也需要一定的動手能力。
????????今天,我們介紹另一個 whisper 項目——faster-whisper 項目。該項目是具有完全的 whsiper 模型參數(shù),且自帶 VAD 加持的 whisper 版本,該版本使用了 CTranslate2 來重新實現(xiàn) whsiper 模型,CT2 對 transformer 類網(wǎng)絡(luò)進行了優(yōu)化,使模型推理效率更高。
????????項目地址:
????????該項目不僅可以使用 whisper 模型的全部參數(shù),且自帶了 VAD 模型進行語音活動檢測,
該功能由??Silero VAD?模型提供。
????????所謂?VAD 即?Voice Activity Detection?—— 聲音活動檢測,在語音信號處理中,例如語音增強,語音識別等領(lǐng)域有著非常重要的作用。它的作用是從一段語音(純凈或帶噪)信號中標(biāo)識出語音片段與非語音片段。在語音轉(zhuǎn)寫任務(wù)中,可以提前將語音和非語音部分分離出來,從而提升 whisper 網(wǎng)絡(luò)識別速度,并減少模型幻聽。
????????Silero VAD 項目官網(wǎng)地址:
faster-whisper 項目的使用
????????目前 faster-whisper 項目可通過 pip 進行安裝,之后可在腳本中編程使用:
????????官方用例:
????????考慮到該項目依然需要編寫代碼,使用不太方便,我們進行了項目的重新封裝,提供了可安裝的 GUI 界面版本——FasterWhisperGUI!
FasterWhisperGUI
????????我們使用 PySide6 進行GUI開發(fā),對 faster-whisper 進行了封裝,封裝之后的版本仍然可以使用 VAD 功能,并提供全部 whisper 和 VAD 模型的參數(shù)供用戶進行調(diào)整。
????????下載地址:
????????onedriver 地址:
????????國內(nèi)網(wǎng)盤地址:
????? ? 軟件為安裝版,暫未提供綠色版。
軟件使用方法
????????1. 模型功能:

????????參數(shù)詳解:
????????使用本地模型 —— 在線下載模型,該選項只能二選一,選擇本地模型時,需要使用轉(zhuǎn)換為 CT2 格式的本地模型,不能使用 OpenAI 的原版模型,large-v2 版本的轉(zhuǎn)換模型我提供在文章末尾。選擇在線模型時將會從??Hugging Face Hub?下載轉(zhuǎn)換好的模型。該網(wǎng)站也支持訪問并手動下載。在軟件內(nèi)下載時如果出現(xiàn) “SSL” 錯誤或者 “HTTPS” 錯誤,請關(guān)閉代理,使用龜速進行下載。如果出現(xiàn) “主機強制關(guān)了一個現(xiàn)有鏈接”錯誤,說明訪問太頻繁,被反爬機制阻斷,稍歇之后再試。
????????處理設(shè)備:選擇 cuda 時需要有 GPU 設(shè)備,且需要安裝 英偉達的 CUDA 套件。
????????????????????????選擇 cpu 則使用 cpu 進行處理。
????????設(shè)備號:要使用的設(shè)備順序號,有多塊顯卡時可以修改值進行切換;也可使用 “,” 進行分隔,填寫多個設(shè)備號,從而實現(xiàn)多設(shè)備處理(未在多設(shè)備上進行過測試)。
????????計算精度:即模型量化精度,允許對模型精度進行截斷,甚至使用 int8 這種整型數(shù)值進行計算,實際上該選項可能對模型轉(zhuǎn)換后的磁盤大小影響更大,不一定很影響識別結(jié)果。。。
????????線程數(shù):使用 CPU 的時候,采用的線程數(shù),該參數(shù)默認(rèn)為4
????????并發(fā)數(shù):whisper 允許模型并發(fā)運行,多模型并發(fā)對同一任務(wù)加速或者多識別任務(wù)并發(fā)同時運行。但由于未對并發(fā)相關(guān)功能進行過測試,所以不清楚相關(guān)行為,該參數(shù)作用與用法尚不明確。
????????下載緩存目錄:在線下載模型時的緩存目錄,默認(rèn)為 ~/.cache/huggingface/hub
????????是否使用本地緩存:該選項對于轉(zhuǎn)換模型是可選項,即使開啟了該選項,如果上述目錄中沒有有效緩存,則不會讀取相關(guān)緩存文件,而是嘗試使用在線模型下用戶選擇的模型名進行在線搜索下載。對于加載模型而言,該選項是強制項,如果選擇為 True 但本地沒有有效緩存,則加載失敗。
????????模型輸出目錄:轉(zhuǎn)換模型時本地輸出目錄,用于保存轉(zhuǎn)換后的模型。
????????轉(zhuǎn)換模型:只能在在線模型模式下工作,當(dāng)開啟本地緩存選項,時軟件將會尋找有效緩存目錄下的有效緩存文件,并利用本地文件進行轉(zhuǎn)換。
????????加載模型:將選擇的本地模型或者自動下載的模型按照設(shè)備類型、量化精度加載到程序中,音頻文件處理前的必要操作!
????????如果有你不了解的參數(shù),就不要動它。
????
????????2. VAD 功能
????? ?

????????參數(shù)詳解:
????????閾值:語音閾值。Silero VAD
?為每個音頻塊輸出語音概率,概率高于此值的認(rèn)為是語音。最好對每個數(shù)據(jù)集單獨調(diào)整此參數(shù),但“懶散”的0.5對大多數(shù)數(shù)據(jù)集來說都非常好。
????????最小語音持續(xù)時間:毫秒單位,時長低于此值的語音塊會被拋棄
????????最大語音持續(xù)時間:秒為單位。比該值更長的塊將在最后一個持續(xù)時間超過?100s?的靜音時間戳拆分(如果有的話),以防止過度切割。否則,它們將在時長達到該值之前強制拆分。
????????最小靜息時間:毫秒單位,在每個語音塊結(jié)束時等待?該值時長之后?再拆分它。
????????采樣窗口:進行音頻采樣的窗口大小
????????語音塊前后填充:最終被識別為語音的音頻塊前后都會有該時長的空白填充,毫秒單位。
????????如果有的參數(shù)你不了解,那么就不要動它。。。
????????3. 轉(zhuǎn)寫功能:

????????參數(shù)詳解:
????????音頻文件: 輸入文件的路徑。
????????language: 音頻中的語言。應(yīng)該是一個語言代碼,如設(shè)置為 Auto 則在音頻的前30秒內(nèi)檢測語言。
????????翻譯為英語: 要執(zhí)行的任務(wù)(轉(zhuǎn)錄或翻譯)。
????????窗口大小: 用于解碼的beam大小。
????????最佳熱度: 采樣時使用非零溫度的候選數(shù)。
????????耐心因子: Beam搜索耐心因子。
????????懲罰長度: 指數(shù)長度懲罰常數(shù)。
????????采樣熱度候選: 采樣的溫度。它可以是溫度元組,如果根據(jù)“gzip 壓縮比閾值”或“采樣概率閾值”判定為失敗,則會依次使用。
????????gzip 壓縮比閾值: 如果gzip壓縮比高于此值,則視為失敗。
????????采樣概率閾值: 如果對采樣標(biāo)記的平均對數(shù)概率低于此值,則視為失敗。
????????靜音閾值: 如果無話音概率高于此值,并且對采樣標(biāo)記的平均對數(shù)概率低于“采樣概率閾值”,則將該段視為靜音。
????????循環(huán)提示: 如果為 True,則將模型的前一個輸出作為下一個窗口的提示提供;禁用可能會導(dǎo)致文本在窗口之間不一致,但模型不太容易陷入失敗循環(huán),比如重復(fù)循環(huán)或時間戳失去同步。
????????初始提示詞: 為第一個窗口提供的可選文本字符串或詞元id可迭代項。
????????初始文本前綴: 為第一個窗口提供的可選文本前綴。
????????空白抑制: 在采樣開始時抑制空白輸出。
????????特定標(biāo)記抑制: 要抑制的標(biāo)記ID列表。 -1 將抑制配置文件 config.json中定義的默認(rèn)符號集。
????????關(guān)閉時間戳: 僅對文本標(biāo)記進行采樣。不輸出時間戳,輸出 txt 文件而非 str 字幕文件。
????????最晚開始時間戳: 初始時間戳不能晚于此時間。????
????????單詞級時間戳: 使用交叉注意力模式和動態(tài)時間規(guī)整提取單詞級時間戳,并在每個段的每個單詞中包含時間戳。
????????標(biāo)點向后合并: 如果?單詞級時間戳為 True,則將這些標(biāo)點符號與下一個單詞合并。
????????標(biāo)點向前合并: 如果?單詞級時間戳 為 True,則將這些標(biāo)點符號與前一個單詞合并。
????????
????????如果有的參數(shù)你不了解,那么就不要動它。。。
????????4. 執(zhí)行轉(zhuǎn)寫任務(wù)
????????在設(shè)置好全部參數(shù),并且選擇了要識別的音視頻文件之后,就前往 執(zhí)行轉(zhuǎn)寫 頁面,點擊唯一的按鈕,就可以自動開始執(zhí)行轉(zhuǎn)寫任務(wù)了。

????????轉(zhuǎn)寫執(zhí)行的效果如下:
?????

????????FasterWhisper 中實現(xiàn)了使用 VAD 模型對音頻進行預(yù)處理,實際上有了 VAD 功能之后,模型本身的幻聽參數(shù)有時候就不那么重要了,但是如果轉(zhuǎn)寫效果不佳,還是可以嘗試開關(guān) VAD 功能并調(diào)整模型幻聽參數(shù),來改善效果。
????????(如果你使用 tiny 之類的小模型,那么在 CPU 上作全精度計算,效果會更佳。)
????????軟件所有功能均有工具提示,鼠標(biāo)長時間懸停在輸入框或按鈕上即可顯示提示信息。
????????全部的長下拉框均有檢索功能,選擇音視頻文件語言的時候只需要輸入相關(guān)字符就可以自動檢索出相關(guān)的語言。
模型下載
????????最后附上已經(jīng)轉(zhuǎn)換完成的模型的下載。
????????官網(wǎng)地址:
????????官網(wǎng)不僅能下載 OpenAI 官方模型的轉(zhuǎn)換版本,還能下載由用戶自行調(diào)整并上傳的版本。
????????官方版本網(wǎng)盤:
????????模型很多很大,按需下載一兩個即可。
? ? ? ? ?
????????最后的最后:
????????關(guān)于字幕翻譯的問題,雖然各種 gpt 泛濫的今天,這應(yīng)該不成問題,但是我還是為大家找了一位 很好的翻譯官,它就是 Claude 老師。
????????訪問:
????????注冊賬號或者使用 Google 賬號登錄即可開始聊天。支持上傳 5mb 以內(nèi)的文本文件、pdf文件等等,支持 100k 上下文。。。。這是連 ChatGPT 也沒有的深度聊天。
????????目前只支持 帶英 和 美團,所以需要提前準(zhǔn)備好相關(guān)線路。
????????要翻譯字幕文件請上傳 txt 之后或者復(fù)制粘貼軟件調(diào)試框內(nèi)容之后?這樣告訴他:“翻譯文檔內(nèi)容到中文,注意保留時間戳信息”
????????最后的最后的最后,也讓 faster-whisper 聽一首歌吧

????????英文字幕:FasterWhisperGUI
????????中文字幕翻譯:Claude 老師
????????校對:UP? ??(其實根本沒校對)