# 前言
本文將介紹一個即時指令喚醒的程序,可以添加任意的指令,即時錄音一旦檢測到指令語音,激活程序。同時還支持指令微調、提高指令的準確率。
安裝項目環境¶
本項目開發換爲:
- Anaconda 3
- Windows 11
- Python 3.11
- Pytorch 2.1.0
- CUDA 12.1
- 安裝Pytorch,執行下面命令,如果已經安裝了其他版本,若能正常運行,請跳過。
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
- 安裝其他依賴包,執行下面命令,安裝完成之後,如果還缺失其他庫,請對應安裝。
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
指令喚醒¶
infer_pytorch.py可以使用GPU進行推理,如果要使用CPU推理,可以infer_onnx.py,這個使用的是ONNX,在CPU可以有加速。
- 可以調整的參數有:
sec_time爲錄製時間,單位秒;last_len爲上一部分的數據長度,單位秒;。 - 增加指令,需要在
instruct.txt添加指令。
輸出日誌:
支持指令:['向上', '向下', '向左', '向右', '停止', '開火']
請發出指令...
觸發指令:【開火】
觸發指令:【停止】
微調指令模型¶
微調指令模型的代碼在finetune目錄下,微調前切換到finetune目錄,具體的訓練過程看下面操作。
製作數據¶
運行record_data.py代碼,啓動錄音程序,默認錄製2秒鐘,建議錄製完成之後,再錄製1秒鐘的音頻,注意錄製1秒鐘時間非常短,按下回車之後要立馬開始說話。其實自定義數據可以參考生成的dataset目錄。
輸出日誌:
請輸入指令內容:向上
請輸入錄入次數:10
第1次錄音,按回車開始說話:
開始錄音......
錄音已結束!
第2次錄音,按回車開始說話:
生成訓練數據列表¶
運行generate_data_list.py代碼,生成訓練數據列表。
訓練模型¶
執行下面命令訓練模型,如果是Windows,需要把參數並接爲一行,並刪除\。
funasr-train \
++model=../models/paraformer-zh \
++train_data_set_list=dataset/train.jsonl \
++valid_data_set_list=dataset/validation.jsonl \
++dataset_conf.batch_type="token" \
++dataset_conf.batch_size=10000 \
++train_conf.max_epoch=5 \
++train_conf.log_interval=1
++train_conf.keep_nbest_models=5 \
++train_conf.avg_nbest_model=3 \
++output_dir="./outputs"
合併模型¶
運行merge_model.py代碼,將訓練好的模型合併成一個模型../models/paraformer-zh-finetune。
掃碼入知識星球,搜索【即時指令喚醒】獲取源碼¶
