blah s peech to- t ext可讓您從Linux上的語音輸入文本,並帶有鍵盤快捷鍵和竊竊私語。啟動您的麥克風並在離線上執行高質量的多語言語音識別。隨著本地LLM的擴展,它成為與Linux計算機交談的有效工具。
Blahst可能是Linux的最精美的語音對文本輸入工具,坐在Whisper.cpp的頂部。
wsiml腳本從命令行轉換使用低資源,優化的命令行工具,口語文本輸入發生得非常快。這是一個帶有某些本地LLM功能(AI助手,翻譯,調度程序,測試階段的CLI指南)的演示視頻(請取消音頻):
在上面的視頻中,音頻始於系統吞噬屏幕截圖(我的gnome擴展名為“ voluble”,都會說出所有GNOME桌面通知),然後進行多次轉彎語音輸入/識別。最終證明的是使用Blahst(whinper.cpp)轉錄的文本的Upcommmomm“ AI函數”之一,將其格式化為LLM提示符,並將其發送給本地的多語言LLM(Llama.cpp或Lllamafile),以此為文本返回中文翻譯,並使用Neural Tts返回中文。使用精益可執行文件從命令行中進行安排,使系統令人驚訝(從視頻中,您可以看到PC幾乎沒有汗水 - 溫度保持低味道。)
上面的視頻(請取消靜音)演示了使用WSI修改的Blooper的使用,以循環轉錄,直到用戶終止語音輸入以更長的暫停(〜3sec作為預設)為止。通過使用Xdotool(或Wayland用戶的Ydotool),文本會自動粘貼在任何暫停(或Hotkey Interuption)上。對於上面的視頻,語音是由合成語音產生的,並由麥克風收集。這使我可以同時編輯文本(多任務,不要在家嘗試:)。最後,頂桿麥克風圖標應消失,表明程序退出。它不會在視頻中發生,因為屏幕截圖實用程序也對圖標也有主張。
Blahst的想法是成為蒙古突襲的無UI軟件。簡短而強大的CPU/GPU動作爆發,然後完全消失了,剪貼板和相對桌面和平中只有文字痕跡。只需使用一對熱鍵從麥克風開始和停止錄製,然後將記錄的語音發送到Whisper.cpp [服務器],該語音將轉錄的文本轉載到剪貼板中(除非您在此之前由本地LLM傳遞)。一種通用方法,應該在大多數Linux桌面環境和分佈中起作用。
工作是由其中一個腳本完成的:
語音識別由Whisper.cpp執行,必須在Linux系統上進行預編譯或作為LAN或Localhost上的服務器實例可用。替代方案,您可以選擇僅下載並使用實際的便攜式可執行文件(帶有嵌入式耳語模型)Whisperfile,現在是Llamafile存儲庫的一部分。
當用熱鍵啟動語音輸入時,麥克風指示器出現在頂部桿(至少在侏儒中),並在記錄的持續時間內顯示(可以與另一個熱鍵交織)。麥克風圖標從頂部欄中的消失表示完成,並且可以從剪貼板粘貼抄錄的文本。在較慢的系統上,麥克風圖標消失後,由於轉錄時間較長,文本到達剪貼板之前可能會稍有延遲。在我的計算機上,通過hisper.cpp服務器API,對於口語文本的平均段落,它的平均段落小於150毫秒(300毫秒,局部hisper.cpp)。
例如,對於僅使用標準CTRL+V鍵盤操作,標準剪貼板將在X11和Wayland( wsi或wsiml )下使用,而wsi -p (或wsiml -p )使用主要賣出,並且文本使用中間鼠標按鈕粘貼)。對於左手糊,可以將語音記錄降級為用右手觸發的熱鍵。 **例如,我已經在數字鍵盤上設置了未使用的“+”(開始錄製)和“插入”(停止錄製)鍵。


install-wsi處理大多數)中。免責聲明:作者對與本文檔內容互動可能不會導致的任何結果都不承擔任何責任,也不承擔任何責任。擬議的動作和自動化(例如,安裝位置等)只是建議,它基於作者的選擇和意見。由於它們可能不符合所有人的口味或特定情況,因此請根據需要進行調整。
在您選擇的文件夾中,克隆blahst存儲庫,然後從下面選擇一個安裝方法:
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(假設已安裝了Wishper.cpp,並且在克隆的Whisper.cpp repo中使用'make'編譯的“主要”可執行文件。請參見前提條件部分)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ (您的$路徑的一部分)中創建它 ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
如果轉錄不在您的$路徑中,請在WSI中編輯對其的調用以包括絕對路徑,或將其位置添加到$路徑變量中。否則腳本將失敗。如果您不想編譯Whisper.cpp,或者除此之外,請下載並設置合適的hisperfile的可執行文件:例如:
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
在開始的wsi , wsiAI , wsiml或blooper腳本中,有一個清晰標記的部分,命名為“用戶配置塊” ,其中所有用戶可配置的變量都已收集。大多數可以剩下的,但重要的是您想在轉錄過程中使用的(Whisper,LLM,TTS)模型文件的位置(或Whisper.cpp服務器的IP和端口號)。如果使用Whisperfile,請將Whisperfile變量設置為先前下載的可執行文件hisperfile的文件名,即WHISPERFILE=whisper-tiny.en.llamafile (必須在$ PATH中)。
開始和停止語音輸入,用於手冊和自動安裝
/home/yourusername/.local/bin/wsi -p中用於使用中間鼠標按鈕或將其更改為.../wsi使用剪貼板。wsiml替換wsi ,如果使用hisperfile,請添加-w標誌,即/home/yourusername/.local/bin/wsi -w )。最後,要採樣LLM函數,請用wsiAI替換wsi 。編目腳本在呼叫Sox(REC)中具有沉默檢測過濾器,並將在2秒內停止(在最好的情況下)記錄(在最好的情況下)。此外,如果一個人不想等待或遇到靜音檢測閾值的問題:
對於那些希望能夠以偉大的駭客精神手動將錄音的人交織在一起,我們將使用系統內置的功能:
pkill --signal 2 rec這很簡單。只需確保尚未設置新的密鑰綁定。現在,當腳本錄製語音時,可以使用新的密鑰組合將其停止,並且轉錄將開始立即開始。
/home/yourusername/.local/bin/wsi -p or .../wsi用於使用剪貼板。wsiml替換wsi ,如果使用hisperfile,請添加-w標誌,即/home/yourusername/.local/bin/wsi -w )。最後,要採樣LLM函數,請用wsiAI替換wsi 。pkill --signal 2 rec進行類似的進行。/home/yourusername/.local/bin/wsi或.../wsi -pwsiml替換wsi ,如果使用hisperfile,請添加-w標誌,即/home/yourusername/.local/bin/wsi -w )。最後,要採樣LLM函數,請用wsiAI替換wsi 。pkill --signal 2 rec進行類似的進行。請注意,取決於系統上安裝的版本,上述步驟可能會有些差異。對於許多其他環境,例如伴侶,肉桂,LXQT,Deepin等。這些步驟應與上面的示例有些相似。請為您的系統桌面環境諮詢文檔。
在熱鍵組合的印刷機上, wsi -p腳本將錄製語音(用熱鍵或沉默檢測停止),使用Whisper.cpp的本地副本,然後將抄錄的文本發送到下面的主要選擇,無論是X11還是Wayland。然後,所有要做的就是將其粘貼在所需的任何地方的中間鼠標按鈕。 (對於用右手握住老鼠的人們,為左手錄製熱鍵是有意義的。)
如果使用沒有標誌的wsi (方法可以共存,只需設置不同的熱鍵集),則將轉錄的文本發送到X11或Wayland下的剪貼板(不是主要選擇)。然後,粘貼發生在CTRL+V (用於GNOME終端的CTRL+SHIFT+V )或SHIFT+INSert鍵照常時發生。 (對於大多數人來說,右手熱鍵都可以正常工作。)
如果使用wsi -n (用自己的熱鍵選擇)在網絡上轉錄,則該腳本將嘗試將記錄的音頻發送到運行,正確設置Whisper.cpp服務器(在LAN或LAN localhost上)。然後,它將收集文本響應並格式化以粘貼使用CTRL+V (用於GNOME終端的CTRL+SHIFT+V )或SHIFT+INSert鍵(用中間鼠標按鈕粘貼使用wsi -n -p代替)。
如果使用hisperfile而不是或除了彙編的hisper.cpp之外,請使用wsi -w ...調用腳本,並且該腳本將使用預設可在嵌入式選擇的選擇的可執行操作可執行文件中使用。
對於多語言用戶,除了WSI的功能外, wsiml還提供了指定語言的功能,例如-l fr ,以及使用-t轉換為英語的選項。用戶原則上可以將多個熱鍵分配給他們轉錄或翻譯的各種語言。例如,可以設置另外兩個熱鍵,一個用於轉錄,另一種用於從法語轉換,通過分配命令wsiml -l fr和wsiml -l fr -t相應地。
實驗:用戶可以使用所提供的腳本Blooper進行連續的自動語音到文本輸入(無需按CTRL+V或單擊中間鼠標按鈕。)在上面的第二個視頻中證明了這一點。請注意,該剪貼板默認使用,文本將在鍵盤式載體下自動塗抹,但是原則上可以設置主要選擇,將模擬鼠標按鈕單擊,並且在鼠標指針的當前位置粘貼的文本(在某些任意)時間(有點任意)時間為文本。請注意,這取決於沉默檢測,這取決於您的物理環境。在嘈雜的環境中,使用熱鍵停止錄製。
我們不能任意提高閾值,因為如果一個人在演講結束時始終如一地降低聲音(淡出),則如果閾值高,它可能會被切斷。在這種情況下,將其降低到幾個%。
最好試圖通過振幅與噪聲區分(清晰地說,接近麥克風),同時最小化外部噪聲(麥克風的遮蔽位置,降噪硬件等)具有良好的語音信號水平,因此閾值可以更有效,因為SNR(語音到噪聲比率:-)有效地增加了閾值。
演講被捕穫後,將通過transcribe (whisper.cpp)進行語音識別。這將比實時發生快(尤其是使用快速CPU,或者如果您的Whisper.CPP安裝使用CUDA)。可以調整通過將-tn添加到轉錄的命令行參數中使用的處理線程的數量(請參閱whinper.cpp文檔)。然後,該腳本將解析文本以刪除非語法工件,將其格式化並使用X11或Wayland工具將其發送到主要選擇(剪貼板)。
原則上,Whisper(Whisper.cpp)是多語言的,並且使用正確的模型文件,此應用程序將輸出以正確語言轉錄的UTF-8文本。 wsiml腳本專用於多語言使用,因此用戶能夠選擇語言進行語音輸入(使用-l LC標誌,其中LC為語言代碼),還可以將所選輸入語言的語音轉換為使用-t標誌的英語。用戶可以將多個熱鍵分配給他們要轉錄或翻譯的各種語言。例如,可以設置另外兩個熱鍵,一個用於轉錄,另一種用於從法語轉換,通過分配命令wsiml -l fr和wsiml -l fr -t相應地。
請注意,使用服務器模式時,現在您有2個選擇。您可以使用預編譯的hisper.cpp服務器或下載的hisperfile(在服務器模式下)在預配置的主機和端口號上偵聽。編排腳本以相同的方式接近他們。
語音到文本的轉錄是內存和CPU密集型任務,而快速存儲進行讀取和寫入訪問只能有所幫助。這就是為什麼WSI將臨時文件和資源文件存儲在內存中,以供速度和減少SSD/HDD“磨削”: TEMPD='/dev/shm' 。這種“ TMPFS”類型的安裝點是在RAM中創建的(假設您有足夠的時間,例如至少8GB),並且可以由內核提供用於用戶空間應用程序。關閉計算機時,它會自動擦除,這很好,因為我們不需要中間文件。實際上,對於某些類型的應用程序(查看您的電子),將Systems Wide /TMP安裝點還保留在RAM中是有益的(IMHO)。將 /TMP移動到RAM可能會加快應用程序啟動。任何電子應用程序的歡迎加速。以最簡單的形式,這種過渡很容易,只需運行:
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab ,然後重新啟動Linux計算機。由於上述原因,特別是如果HDD是主要存儲媒體,也可以將Whisper.cpp所需的ASR模型文件移動到同一位置(/dev/shm)所需的ASR模型文件。這些是大文件,可以在終端會話開始時(或在系統啟動)的開頭轉移到此位置。可以使用您的.profile文件來完成此操作,以完成此操作:
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)