Dify支持語音識別,但是前提是需要本地部署音頻識別模型並開放對應的API接口。這裏把該過程進行記錄,方便後續進行回溯。
一、語音識別模型部署
在github上找到了一個funasr-api的項目,能夠很好的完成語音模型加載,並提供API接口,就不需要再自己去開發接口了。
Github地址如下:
https://github.com/Quantatirsk/funasr-api
1、下載項目源碼 funasr-api-main.zip
2、根據項目要求離線下載相關語音識別模型,包括:
|
iic/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727 iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch iic/speech_fsmn_vad_zh-cn-16k-common-pytorch iic/speech_ngram_lm_zh-cn-ai-wesp-fst iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch |
模型下載後,我們需要放置到本地緩存目錄下
|
/root/.cache/modelscope/hub/ # 最終模型位置示例: /root/.cache/modelscope/hub/iic/speech_ngram_lm_zh-cn-ai-wesp-fst |
3、安裝ffmpeg程序(需要自行在網上找教程)
4、創建python虛擬環境,並安裝依賴
|
pip install -r requirements.txt |
5、拷貝.env.example文件為 .env,並修改,如下
|
# 服務器配置 HOST=0.0.0.0 PORT=9584 DEBUG=false # 設備配置 DEVICE=cuda:0 # auto, cpu, cuda:0, npu:0 # Worker 配置 WORKERS=1 # 這裏的INFERENCE_THREAD_POOL_SIZE不能設置會auto,否則啓動會有一個報錯 # INFERENCE_THREAD_POOL_SIZE=auto # ASR 模型配置 # ASR模型加載模式: realtime, offline, all ASR_MODEL_MODE=all # 啓動時自動預加載的自定義ASR模型(逗號分隔) # 可選值: fun-asr-nano # AUTO_LOAD_CUSTOM_ASR_MODELS=fun-asr-nano # 是否啓用實時標點模型(用於中間結果展示) ASR_ENABLE_REALTIME_PUNC=true # 遠場過濾配置 ASR_ENABLE_NEARFIELD_FILTER=true ASR_NEARFIELD_RMS_THRESHOLD=0.01 ASR_NEARFIELD_FILTER_LOG_ENABLED=true # 鑑權配置 # APPTOKEN=your_token_here # APPKEY=your_key_here # 日誌配置 LOG_LEVEL=INFO LOG_FILE=logs/funasr-api.log LOG_MAX_BYTES=20971520 LOG_BACKUP_COUNT=50 |
需要注意兩點內容:
# 這裏的INFERENCE_THREAD_POOL_SIZE不能設置會auto,否則啓動會有報錯
# 嘗試啓動fun-asr-nano,但是沒有成功,還是用默認的paraformer-large,
6、執行以下命令啓動
|
python start.py |
7、使用以下命令進行本地驗證
|
curl -X POST "http://localhost:9584/v1/audio/transcriptions" \ -F "file=@/root/.cache/modelscope/hub/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online/example/asr_example.wav" \ -F "model=whisper-1" \ -F "response_format=json" |
二、Dify進行模型配置
1、點擊“設置”-“模型供應商”,選擇“OpenAI-API-compatible”,點擊“添加模型”
2、選擇模型類型為Speech2Text,填寫信息如下,點擊添加:
三、創建語音識別應用
1、新建一個聊天應用,點擊“功能”,可以看到多了一個語音轉文字,
2、打開“語音轉文字”開關,點擊“發佈”-“發佈更新”:
【重要!!!】如果只打開開關,沒有點擊“發佈更新”,直接點擊預覽,此時可以看到小話筒,但是發送語音會提示“Speech to text is not enable”。因為這個時候app_config文件中的語音識別變量還是fasle,所以記得要先點擊“發佈更新”。
3、點擊預覽,點擊小話筒,靠近説話,語音將會識別成文字,然後點擊發送,可以發送出去啦。