如何安裝Snowboy (python3) 在Raspberry Pi
簡單介紹Snowboy
Snowboy是一個可自定義的熱門詞(hotword)檢測引擎,可以創建自己的熱門詞,例如用"OK Google"喚醒,個人使用沒有商業用途是免費的,背後是使用深度神經網絡。
有以下幾個特點:
- 高度可自訂:你可以在官網上或使用API自由定義你自己的熱門詞(hotword)。
- 總是傾聽但保護您的隱私:Snowboy不需連網,也不會將您的語音傳輸到雲端。
- 輕量級和嵌入式:它甚至可以在Raspberry Pi上運行,在最弱的Pi(單核700MHz ARMv6)上消耗不到10%的CPU。
- Apache授權!
目前Snowboy支援:
- all versions of Raspberry Pi(with Raspbian based on Debian Jessie 8.0)
- 64bit Mac OS X
- 64bit Ubuntu 14.04
- iOS
- Android
- ARM64 (aarch64, Ubuntu 16.04)
*目前還不支援Windows
支援以下程式語言環境:
- C/C++
- Java/Android
- Go (thanks to @brentnd and@deadprogram)
- Node (thanks to @evancohen and@nekuz0r)
- Perl (thanks to @iboguslavsky)
- Python2/Python3
- iOS/Swift3 (thanks to@grimlockrocks)
- iOS/Object-C (thanks to@patrickjquinn)
GitHub上面有預先編譯好的Python範例:
如果要依自己的環境/語言編譯可參考
GitHub,接下來編譯教學是在以下環境中:
- Raspberry Pi 3B+ 開發板
- Raspbian 作業系統
- Python 3
1. 安裝套件
>> sudo apt-get install python-pyaudiopython3-pyaudio sox libpcre3 libpcre3-dev libatlas-base-dev &&
pip install pyaudio
2. 編譯支持的swig版本(3.0.10或更高版本)
# 創建一個新資料夾並在終端機打開它
>> wget http://downloads.sourceforge.net/swig/swig-3.0.10.tar.gz &&
tar -xvzf swig-3.0.10.tar.gz &&
cd swig-3.0.10/ &&
./configure --prefix=/usr \
--without-clisp \
--without-maximum-compile-warnings &&
make &&
make install &&
install -v -m755 -d/usr/share/doc/swig-3.0.10 &&
cp -v -R Doc/* /usr/share/doc/swig-3.0.10&&
cd ..
*如發生權限不足可先進去root後執行
>> sudo su
3. 編譯
>> git clonehttps://github.com/Kitt-AI/snowboy &&
cd snowboy/swig/Python3 && make
打開 /snowboy/examples/Python3/snowboydecoder.py,
並把 ” from . importsnowboydetect” 改成 ” importsnowboydetect” ,存檔。
4. 如何使用
複製 /snowboy/swig/Python3 內檔案到你的專案(Makefile可不需要)。
複製 /snowboy 內resourses 資料夾到你的專案。
複製 /snowboy/examples/Python3 內snowboydecoder.py檔案到你的專案。
專案內會有如下圖這些檔案:
5. 測試
在 /resources/models 裡有訓練好的熱門詞(hotword)通用模型(.umdl),或登入
官網訓練自己的模型(.pmdl)下載後放入。
複製 /snowboy/examples/Python3 內的demo.py檔案到你的專案。
開啟終端機執行
python3 demo.py [.umdl或.pmdl模型檔路徑]
>> python3 demo.py resources/models/hello.pmdl
說出你的熱門詞(hotword),當它偵測到後會顯示出來並發出”叮”一聲。
Raspberry pi 音訊的部分可參考官方文檔去設定。
以上參考來源: