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”,點擊“添加模型”

基於Dify實現語音識別過程記錄_API

2、選擇模型類型為Speech2Text,填寫信息如下,點擊添加:

基於Dify實現語音識別過程記錄_github_02

三、創建語音識別應用

1、新建一個聊天應用,點擊“功能”,可以看到多了一個語音轉文字,

基於Dify實現語音識別過程記錄_語音識別_03

2、打開“語音轉文字”開關,點擊“發佈”-“發佈更新”:

基於Dify實現語音識別過程記錄_github_04

【重要!!!】如果只打開開關,沒有點擊“發佈更新”,直接點擊預覽,此時可以看到小話筒,但是發送語音會提示“Speech to text is not enable”。因為這個時候app_config文件中的語音識別變量還是fasle,所以記得要先點擊“發佈更新”。

3、點擊預覽,點擊小話筒,靠近説話,語音將會識別成文字,然後點擊發送,可以發送出去啦。

基於Dify實現語音識別過程記錄_API_05