ubuntu 16.04 環境下:Wukonchatbot——語音喚醒:hot
阿新 • • 發佈:2018-11-12
語音喚醒 and hotword
參考snowboy
支援:linux、樹莓派、moc 和windows
製作過程:
- 1.snowboy 喚醒模型製作:
- 2.環境安裝:(ubuntu)
- 3.測試你的喚醒詞
1.snowboy 喚醒模型製作:
1.官網申請賬號,可github登陸
2. 選取一個喚醒詞:比如老張
3. 按流程製作和錄音:3次
4. 測試模型
5.下載模型:備用
2.環境安裝:(ubuntu)
- SoX (audio conversion)
- PortAudio or PyAudio (audio capturing)
- SWIG 3.0.10 or above (compiling Snowboy for different languages/platforms)
- ATLAS or OpenBLAS (matrix computation)
#1.在ubuntu 16.04 下安裝
#Access Microphone:
sudo apt-get install python-pyaudio python3-pyaudio sox
pip install pyaudio
#tip:測試硬體是否能夠錄音
rec temp.wav
3.swig環境安裝
- swig版本需要:3.0.10 and以上
- 官網下載swig原始檔
#1.安裝g++依賴包() sudo apt-get install g++ #2.ubuntu 環境下預設安裝,終端輸入一下命令,可以檢視版本 g++ -version #3.安裝 pcre sudo apt-get install libpcre3 libpcre3-dev #4. 解壓 swig 原始碼 chmod 777 swig-3.0.12.tar.gz # 改變許可權 tar -xzvf swig-3.0.12.tar.gz # 解壓 #5. 配置、編譯和安裝 swig #指定安裝目錄 ./configure --prefix=/home/errolyan/swig/ #編譯 make #安裝 make install # 6.配置安裝路徑 sudo vim /etc/profile #將剛才的路徑 /home/errolyan/swig/bin新增到profile檔案的path下面:(檔案最後幾行) export SWIG_PATH=/home/errolyan/swig/bin export PATH=$SWIG_PATH:$PATH #7.重新整理環境 source /etc/profile #8.測試swig swig -version #可以看到版本資訊
4.Ubuntu 16.04 安裝OpenBLAS步驟
git clone git://github.com/xianyi/OpenBLAS
cd OpenBLAS
sudo apt-get install gfortran
sudo make FC=gfortran #tips:gfortran --version 未有版本 需要安裝 sudo apt-get install gfortran
sudo make install
然後執行以下命令:
sudo ln -s /opt/OpenBLAS/lib/libopenblas.so.0 /usr/lib/libopenblas.so.0
檢視版本資訊
g++ --version
gcc --version
gfortran --version
結果gfortran也有,在目錄/usr/lib/x86_64-linux-gnu/裡面:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
編譯例子:
gcc testOpenBlas.c -I /opt/OpenBLAS/include/ -L/opt/OpenBLAS/lib -lopenblas
4.安裝atlas和openblas(安裝一個就可以)
#Then install the atlas matrix computing library:
sudo apt-get install libatlas-base-dev
測試你的喚醒詞
新增你自己的模型檔案到固定的路徑:更改dome裡面的自己的模型路徑
#需要的檔案結構為
├── README.md
├── _snowboydetect.so
├── demo.py
├── demo2.py
├── light.py
├── requirements.txt
├── resources
│ ├── ding.wav
│ ├── dong.wav
│ ├── common.res
│ └── snowboy.umdl
├── snowboydecoder.py
├── snowboydetect.py
└── version
我的原始碼:
import snowboydecoder
import sys
import signal
interrupted = False
def signal_handler(signal, frame):
global interrupted
interrupted = True
def interrupt_callback():
global interrupted
return interrupted
#if len(sys.argv) == 1:
print("Error: need to specify model name")
print("Usage: python demo.py your.model")
#sys.exit(-1)
#model = sys.argv[1]
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector("悟空.pmdl", sensitivity=0.5, audio_gain=1)
print('Listening... Press Ctrl+C to exit')
# main loop
detector.start(detected_callback=snowboydecoder.play_audio_file,interrupt_check=interrupt_callback,sleep_time=500)
detector.terminate()