# 前言
本文將介紹一個即時指令喚醒的程序,可以添加任意的指令,即時錄音一旦檢測到指令語音,激活程序。同時還支持指令微調、提高指令的準確率。

安裝項目環境

本項目開發換爲:
- Anaconda 3
- Windows 11
- Python 3.11
- Pytorch 2.1.0
- CUDA 12.1

  1. 安裝Pytorch,執行下面命令,如果已經安裝了其他版本,若能正常運行,請跳過。
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
  1. 安裝其他依賴包,執行下面命令,安裝完成之後,如果還缺失其他庫,請對應安裝。
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

指令喚醒

infer_pytorch.py可以使用GPU進行推理,如果要使用CPU推理,可以infer_onnx.py,這個使用的是ONNX,在CPU可以有加速。

  1. 可以調整的參數有:sec_time爲錄製時間,單位秒;last_len爲上一部分的數據長度,單位秒;。
  2. 增加指令,需要在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

掃碼入知識星球,搜索【即時指令喚醒】獲取源碼

![](/static/files/2023-12-17/cfe1ab6365334ab296ebe12671dd7a06.png)
小夜