
更新(2024-05-28):我剛剛合併了Whisperwriter的重大重寫!我們已經從使用tkinter遷移到使用PyQt5進行UI,添加了一個新的設置窗口以進行配置,新的連續錄製模式,對本地API的支持等等!請耐心等待,因為我弄清楚可能在此過程中引入的任何錯誤。如果您遇到任何問題,請打開新問題!
Whisperwriter是一個小型的語音到文本應用程序,它使用OpenAI的Whisper模型將從用戶的麥克風到活動窗口自動轉錄錄音。
啟動後,腳本在後台運行,並等待按下鍵盤快捷鍵(默認情況下為ctrl+shift+space )。按下快捷方式時,應用程序開始從麥克風錄製。有四種記錄模式可供選擇:
continuous (默認):在您的演講中停頓了足夠長的時間後,錄製將停止。該應用將抄錄文本,然後重新開始錄製。要停止聆聽,請再次按鍵盤快捷鍵。voice_activity_detection :在您的演講中停頓了足夠長的時間後,錄製將停止。在再次按下鍵盤快捷鍵之前,錄製不會啟動。press_to_toggle記錄將停止。在再次按下鍵盤快捷鍵之前,錄製不會啟動。hold_to_record錄製將繼續進行,直到鍵盤快捷鍵發佈為止。直到鍵盤快捷鍵再次固定下來,錄製才會啟動。您可以在配置選項中更改鍵盤快捷鍵( activation_key )和記錄模式。在錄製和抄錄時,顯示了一個小的狀態窗口,顯示該過程的當前階段(但可以關閉)。轉錄完成後,轉錄文本將自動寫入活動窗口。
轉錄可以通過更快的python軟件包在本地完成,也可以通過對OpenAI API的請求進行。默認情況下,該應用程序將使用本地模型,但是您可以在配置選項中更改它。如果選擇使用API,則需要提供OpenAI API鍵或更改基本URL端點。
有趣的事實:使用VS代碼,該項目的初始版本幾乎全部與Chatgpt-4和Github Copilot進行了配對。實際上,包括大多數此讀數在內的每一行都是由AI撰寫的。最初的原型完成後,Whisperwriter也被用來寫很多提示!
在運行此應用之前,您需要安裝以下軟件:
3.11 :https://www.python.org/downloads/如果您想在GPU上faster-whisper ,則還需要安裝以下NVIDIA庫:
以下是直接從faster-whisper回教徒中取出的:
注意: ctranslate2的最新版本僅支持CUDA 12。對於CUDA 11,當前的解決方法正在降級到3.24.0版本的ctranslate2 (可以使用pip install --force-reinsall ctranslate2==3.24.0完成。
有多種方法可以安裝上述NVIDIA庫。建議的方式在NVIDIA官方文檔中描述,但我們還建議以下其他安裝方法。
這些官方的NVIDIA CUDA DOCKER圖像中安裝了庫(Cublas,Cudnn): nvidia/cuda:12.0.0-runtime-ubuntu20.04或nvidia/cuda:12.0.0-runtime-ubuntu22.04 。
pip安裝(僅限Linux)在Linux上,這些庫可以與pip一起安裝。請注意,必須在啟動Python之前設置LD_LIBRARY_PATH 。
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12
export LD_LIBRARY_PATH= ` python3 -c ' import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__)) ' `注意: nvidia-cudnn-cu12版本9+由於其對Cudnn 9的依賴而似乎引起了問題(更快的Whisper當前不支持Cudnn 9)。確保您的Python軟件包版本適用於Cudnn 8。
Purfview的Whisper-StandalOne-Win為單個存檔提供了Windows&Linux所需的NVIDIA庫。解壓縮存檔,並將庫放在PATH中包含的目錄中。
要設置並運行項目,請按照以下步驟:
git clone https://github.com/savbell/whisper-writer
cd whisper-writer
python -m venv venv
# For Linux and macOS:
source venv/bin/activate
# For Windows:
venvScriptsactivate
pip install -r requirements.txt
python run.py
在第一次運行時,應出現設置窗口。配置並保存後,將打開另一個窗口。按“啟動”以激活鍵盤偵聽器。按激活鍵( ctrl+shift+space默認情況下)開始記錄並轉錄到活動窗口。
Whisperwriter使用配置文件自定義其行為。要設置配置,請打開“設置”窗口:

use_api :切換以選擇使用OpenAI API還是本地耳語模型進行轉錄。 (默認: false )
common :API和本地模型共有的選項。
language :ISO-639-1格式轉錄的語言代碼。 (默認: null )temperature :控制轉錄輸出的隨機性。較低的值使產出更加集中和確定性。 (默認: 0.0 )initial_prompt :用作調節轉錄的初始提示的字符串。更多信息:OpenAI提示指南。 (默認: null ) api :OpenAI API的配置選項。有關更多信息,請參見OpenAI API文檔。
model :用於轉錄的模型。目前,只有whisper-1可用。 (默認: whisper-1 )base_url :API的基本URL。可以更改以使用本地API端點,例如Localai。 (默認: https://api.openai.com/v1 )api_key :OpenAI API的API鍵。非本地API使用所需。 (默認: null ) local :本地耳語模型的配置選項。
model :用於轉錄的模型。較大的型號提供了更好的準確性,但較慢。請參閱可用的模型和語言。 (默認: base )device :運行本地耳語模型的設備。使用cuda進行NVIDIA GPU, cpu僅用於CPU的處理,或者auto使系統自動選擇最佳的可用設備。 (默認: auto )compute_type :用於本地耳語模型的計算類型。有關量化的更多信息。 (默認: default )condition_on_previous_text :設置為true以使用先前轉錄的文本作為下一個轉錄請求的提示。 (默認: true )vad_filter :設置為true使用語音活動檢測(VAD)過濾器來從記錄中刪除沉默。 (默認: false )model_path :通往本地耳語模型的路徑。如果未指定,將下載默認模型。 (默認: null ) activation_key :鍵盤快捷鍵,以激活記錄和轉錄過程。帶有+單獨鍵。 (默認: ctrl+shift+space )input_backend :用於檢測鑰匙壓的輸入後端。 auto將嘗試使用最佳可用後端。 (默認: auto )recording_mode :使用的錄製模式。選項包括continuous (在語音中暫停之後進行自動重新錄製,直到再次按激活鍵), voice_activity_detection (在語音中停止後停止錄製), press_to_toggle (再次按激活鍵再次按下激活鍵), hold_to_record (釋放激活鍵時停止錄製錄製時)。 (默認: continuous )sound_device :用於錄製的聲音設備的數字索引。要查找設備編號,請運行python -m sounddevice 。 (默認: null )sample_rate :用於記錄的Hz中的採樣率。 (默認: 16000 )silence_duration :毫秒的持續時間要等待沉默,然後停止錄音。 (默認: 900 )min_duration :用於處理記錄的毫秒中的最小持續時間。錄音短於此將被丟棄。 (默認: 100 ) writing_key_press_delay :編寫抄錄文本時,每個鍵按之間的秒數延遲。 (默認: 0.005 )remove_trailing_period :設置為true以從抄錄文本中刪除後續時間。 (默認: false )add_trailing_space :設置為true以在抄錄文本的末尾添加一個空間。 (默認: true )remove_capitalization :設置為true以將轉錄的文本轉換為小寫。 (默認: false )input_method :用於模擬鍵盤輸入的方法。 (默認: pynput ) print_to_terminal :設置為true以打印腳本狀態並將文本轉錄為終端。 (默認: true )hide_status_window :設置為true以隱藏操作過程中的狀態窗口。 (默認: false )noise_on_completion :將轉錄輸出後,設置為true播放噪聲。 (默認: false )如果任何配置選項無效或未提供,則程序將使用默認值。
您可以在我們的問題跟踪器中看到所有報告的問題及其當前狀態。如果遇到問題,請在可能的情況下打開一個新問題,並使用詳細的描述和復制步驟(如果可能)。
以下是我計劃在不久的將來添加的功能:
以下是目前未計劃的功能:
可以在ChangElog中找到實現的功能。
歡迎捐款!我為自己的個人使用而創建了這個項目,並且沒想到它會引起太大的關注,因此我沒有花很多精力進行測試或使其他人輕鬆做出貢獻。如果您有想法或建議,請隨時打開拉動請求或創建新問題。我會盡力審查並在時間允許的情況下做出回應。
該項目已獲得GNU通用公共許可證的許可。有關詳細信息,請參見許可證文件。