制作自己的唤醒词
官方仅支持在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