Windows下基于 SenseVoice模型的本地語音轉文字工具
前言:
? 現在很流行Vibe Coding但是指揮大模型寫代碼其實也是一件非常累的事情,經常需要輸入大段的文字去描述問題的現象以及具體的解決方案。剛好看到有一些博主通過本地部署語音大模型實現了語音轉文字的功能,然后用語音轉文字去指導大模型干活,這確實很方便。
? 所以自己也去研究了一下可以本地部署的語音識別大模型,通過本地部署這個大模型然后再實現一個客戶端程序去與語音識別模型對接,然后全局的通過一個按鈕觸發語音識別再把識別到的信息輸入到窗口。這樣可以大大的降低人工體能的消耗非常 nice,后續還可以做一些大模型的聯動或許可以做一個自己電腦上的智能體,跟它在電腦的任何使用場景進行一些聊天。
注意:本人是在 windows 環境下部署的其他環境沒有測試過。
一、本地部署SenseVoice
-
Anaconda安裝 Anaconda Installers and Packages
-
找個目錄clone代碼,git clone --recursive https://github.com/FunAudioLLM/SenseVoice.git
-
創建并激活虛擬環境安裝依賴項
#(請注意這里一定要使用 python3.8版本不然的話運行后面會有很多錯誤,本人已經踩過坑了)
conda create -n sensevoice python=3.8
conda activate sensevoice#到SenseVoice目錄執行,安裝依賴(這里如果不是python3.8環境就會出錯了)
pip install -r requirements.txt
- 檢驗是否安裝成功:
#還是在SenseVoice目錄執行
python webui.py#運行后在 http://127.0.0.1:7860頁面可以看到官方提供的哪個測試頁面(可以錄音,但是他提供的音頻樣例我這里點擊好像是失敗的)
#如果運行提示缺什么就按照錯誤安裝就可以了,這里我好像確實安裝了一個東西才能運行起來展示,但是有點忘了,翻了很多篇文章才看到有提的。
二、語音識別客戶端程序
? 這里我花了兩天讓 Claude Code 幫我實現了一個簡單的客戶端程序,還是很效率的,如果自己開發可能要挺多天了。其實原理也比較簡單就是軟件運行的時候掛一個鉤子捕獲全局的按鈕,如果是錄音按鈕就進行語音錄制然后再存儲成文件發給語音識別模型的API就可以了。主要的問題是這里我不太熟悉 python,不知道語音識別模型的API是怎么開放的但是他在幫我看了Git文件夾之后他就給我了一個方案。這里我比較熟悉C++、C#,所以我選擇了WPF作為客戶端程序的框架。
1.環境準備
- VS2022 + .Net 9.0
2.源碼
效果附圖:按F4即可以在任意一個地方喚起語音識別,非常方便。這是我寫這個文檔的時候截的效果圖。
私聊,有償10元 分享源碼!東西不貴,只想向女朋友證明敲代碼能掙錢!
3.其他說明
(1)這里附一個腳本,能夠快速運行后端環境。需要注意修改文件夾路徑。
這里與語音識別模型連接就是通過 fastapi run --port 50000 的方式啟用后端API,這里還需要安裝一些依賴,根據錯誤提示安裝即可。
@echo off
REM 設置Anaconda的安裝路徑
set CONDA_PATH=D:\Software\AnacondaREM 完全禁用所有代理環境變量
set HTTP_PROXY=
set HTTPS_PROXY=
set http_proxy=
set https_proxy=
set ALL_PROXY=
set all_proxy=
set NO_PROXY=
set no_proxy=REM 初始化conda
call "%CONDA_PATH%\Scripts\activate.bat" "%CONDA_PATH%"REM 激活sensevoice環境
call conda activate sensevoiceREM 檢查環境是否激活成功
if %errorlevel% neq 0 (echo 錯誤:無法激活sensevoice環境echo 請確保sensevoice環境已經創建pauseexit /b 1
)echo 已激活sensevoice環境
echo 正在啟動FastAPI服務...REM 確保Python也不使用代理
python -c "import os; os.environ.pop('HTTP_PROXY', None); os.environ.pop('HTTPS_PROXY', None); os.environ.pop('http_proxy', None); os.environ.pop('https_proxy', None)"REM 運行FastAPI
fastapi run --port 50000REM 如果需要在運行結束后保持窗口打開,取消下面這行的注釋
REM pause
(2)SenseVoice里面可以設置本地大模型的目錄,就在api.py