跳转至

制作自己的唤醒词

《HomeAssistant智能家居实战篇》视频

mycroft precise项目

官方仅支持在linux系统下制作自己的关键词

初始安装

  • 克隆源代码

git clone https://github.com/mycroftai/mycroft-precise

  • 安装必要的基础软件

sudo apt-get install python3-pip libopenblas-dev python3-scipy cython libhdf5-dev python3-h5py portaudio19-dev

  • 安装

cd mycroft-precise

./setup.sh

初始训练

  • 进入运行环境

cd mycroft-precise

source .venv/bin/activate

  • 录音

precise-collect

  • 构建音频文件存放目录

    mkdir -p xxxx/wake-word mkdir -p xxxx/not-wake-word mkdir -p xxxx/test/wake-word mkdir -p xxxx/test/not-wake-word

将录音获得的文件,放置在对应的目录中。

  • 初始训练

precise-train -e 60 xxxx.net xxxx/

注:如果碰到hdf5库报错TypeError: a bytes-like object is required, not 'str',可以安装低版本hdf5(pip install h5py==2.10.0

测试

  • 实时匹配

precise-listen xxxx.net

降低误判率(1)

  • 非唤醒词收集

precise-listen xxxx.net -d xxxx/not-wake-word

  • 重新训练

precise-train xxxx.net xxxx/ -e 600

降低误判率(2)

  • 获得噪音文件

mkdir -p data/random

cd data/random

wget http://downloads.tuxfamily.org/pdsounds/pdsounds_march2009.7z

sudo apt-get install p7zip

p7zip -d pdsounds_march2009.7z

cd ../..

  • 转换格式

    SOURCE_DIR=data/random/mp3 DEST_DIR=data/random

    for i in $SOURCE_DIR/.mp3; do echo "Converting $i..."; fn=${i##/}; ffmpeg -i "$i" -acodec pcm_s16le -ar 16000 -ac 1 -f wav "$DEST_DIR/${fn%.*}.wav"; done

  • 训练

precise-train-incremental xxxx.net xxxx/ -r data/random/

一般训练原则

  • 正确发音不能被匹配时,就增加正确样本的量,放置在wake-word目录中;
  • 当错误发音被匹配时,就将错误发音添加到not-wake-word目录中
  • 如果训练过程中,准确率陷入某个较低的瓶颈值,就将所有生成的模型文件删除(不删除声音样本),然后重新训练

模型转换

precise-convert xxxx.net

在voice_assistant中配置

  • 将模型文件放置在/share/voice_assistant目录中
  • 配置

wake_word_model: /share/voice_assistant/xxxx.pb

返回课程目录↩