天天看點

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

1、語音相關服務安裝;

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

import測試,還需要安裝語音相關庫;

ReSpeaker 4-Mics Pi HAT

http://wiki.seeedstudio.com/cn/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/

docker容器内安裝python虛拟環境:

sudo apt install python-virtualenv 
           
apt-cache search virtualenvwrapper

sudo apt-get install virtualenvwrapper
           

python三大神器之virtualenv

https://www.cnblogs.com/freely/p/8022923.html

安裝virtualenvwrapper:

pip install virtualenvwrapper
export WORKON_HOME=~/Envs  #設定環境變量
mkdir -p $WORKON_HOME #建立虛拟環境管理目錄
find / -name virtualenvwrapper.sh #找到virtualenvwrapper.sh的路徑
source 路徑 #激活virtualenvwrapper.sh
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

建立一個虛拟環境:(已經自動激活)

mkvirtualenv car_vioce
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

常用指令參考:

1、停止虛拟環境

deactivate
           

2、在虛拟環境上工作:

workon project_env
           

或者,您可以建立一個項目,它會建立虛拟環境,并在 

$WORKON_HOME

 中建立一個項目目錄。 當您使用 

workon 

project_env 時,會 

cd

 -ed 到項目目錄中。

mkproject project_env
           

virtualenvwrapper 提供環境名字的tab補全功能。當您有很多環境, 并且很難記住它們的名字時,這就顯得很有用。

workon

 也能停止您目前所在的環境,是以您可以在環境之間快速的切換。

3、删除:

rmvirtualenv project_env
           

在虛拟環境,安裝必要的服務:

sudo apt-get install python-spidev
sudo apt-get install python-gpiozero
sudo apt-get install libatlas-base-dev  
sudo apt-get install python-pyaudio       
           

在/home/smart_car目錄下:

git clone https://github.com/respeaker/4mics_hat.git
           

下載下傳完成後,cd 4mics_hat 進目錄接着安裝檔案夾内的服務:

cd 4mics_hat/
pip install ./snowboy*.whl
pip install ./webrtc*.whl  
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

傳回上級目錄,下載下傳voice-engine:

cd ..
git clone https://github.com/voice-engine/voice-engine.git
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

安裝必要的庫:

sudo apt install python-pyaudio python-numpy python-virtualenv
sudo apt-get install swig python-dev libatlas-base-dev build-essential make
           

下載下傳并安裝snoboy:

git clone --depth 1 https://github.com/Kitt-AI/snowboy.git
cd snowboy
python setup.py build
python setup.py bdist_wheel
pip install dist/snowboy*.whl
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

安裝pyaudio出現錯誤:沒有portaudio.h ,需要先安裝portaudio

sudo apt-get install portaudio19-dev
           

安裝成功後,才安裝pyaudio

python -m pip install pyaudio
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

成功後顯示版本為0.2.11

進入目錄,安裝voice-engine:

cd ..
cd voice-engine/
python setup.py install
python setup.py bdist_wheel
pip install dist/*.whl
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

安裝文本編輯工具nano:

apt-cache search nano

sudo apt-get install nano
           

cd進入voice-engine的examples目錄,用nano建立檔案snowboy_test.py :

nano snowboy_test.py
           

編寫測試代碼:

import time
from voice_engine.kws import KWS
from voice_engine.source import Source

src = Source()
kws = KWS()
src.link(kws)

def on_detected(keyword):
    print('found {}'.format(keyword))
kws.on_detected = on_detected

kws.start()
src.start()
while True:
    try:
        time.sleep(1)
    except KeyboardInterrupt:
        break
kws.stop()
src.stop()
           

如果,還出現沒有snowboy子產品的錯誤,再走一遍snowboy的安裝流程即可;

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
cd ..
cd voice-engine/examples/
python snowboy_test.py
           

裝置要先插入,并且啟動docker時設定device裝置,不然會報錯;

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

把 ReSpeaker 4-Mics Pi HAT 插入到 Raspberry Pi後,

 下載下傳并安裝驅動 運作下面指令

sudo apt-get update
sudo apt-get upgrade
git clone https://github.com/respeaker/seeed-voicecard.git
cd seeed-voicecard #下載下傳聲霸卡驅動
sudo ./install.sh #安裝聲霸卡驅動
reboot  #重新開機
           

 檢查聲霸卡名稱是否與源代碼seeed-voicecard相比對.

arecord -L
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
[email protected]:/home/smart_car/seeed-voicecard#
           

exit容器後,用docker exec進入

docker exec -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" 4acc99961df5 /bin/bash  
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

驗證通過後,打包鏡像上傳hub:

打包鏡像:

docker commit -m="smart car and downloan face_recognition github" -a="jacka654321" 4acc99961df5 jacka654321/smart_car:v1
           

登入:

docker login
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

釋出鏡像 :

将您的标記鏡像上傳到存儲庫: 

docker push username/repository:tag

docker push jacka654321/smart_car:v1
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

實際上傳速度1.1M/s,

補充說明

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
docker pull jacka654321/smart_car:v1
           

pull下來之後,

因為Xserver預設情況下不允許别的使用者的圖形程式的圖形顯示在目前螢幕上. 如果需要别的使用者的圖形顯示在目前螢幕上, 則應以目前登陸的使用者, 也就是切換身份前的使用者執行如下指令

sudo xhost +
           

啟動容器:挂載 USB攝像頭 和 樹莓派攝像頭

sudo docker run -it --device /dev/vchiq --device /dev/video0 --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" jacka654321/smart_car:v1
           

測試:

xarclock
           

右上角

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

調用USB攝像頭:

基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

從樹莓派py檔案,到容器:

docker cp /home/pi/Desktop/cv_test1/bdtct.py 01ab7d0c67f7:/home/test
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

運作測試:

python bdtct.py
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

開機後進入容器:

sudo xhost +
           
sudo docker start 01ab7d0c67f7
           
docker exec -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" 01ab7d0c67f7 /bin/bash  
           

這是因為預設情況下container是不能通路任何其他裝置的。但是通過"privileged",container就擁有了通路任何其他裝置的權限。

  當操作者執行docker run --privileged時,Docker将擁有通路host所有裝置的權限,同時Docker也會在apparmor或者selinux做一些設定,使container可以容易的通路那些運作在container外部的裝置。

docker exec -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --privileged 01ab7d0c67f7 /bin/bash  
           

追加挂載opencv目錄和測試檔案夾cv_test1:

sudo docker run -it --device /dev/vchiq --device /dev/video0 --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="/usr/local/share/OpenCV:/usr/local/share/OpenCV" --volume="/home/pi/Desktop/cv_test1:/home/pi/Desktop/cv_test1" jacka654321/smart_car:v1
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境

docker run --privileged:

sudo docker run -it --privileged --device /dev/vchiq --device /dev/video0 --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="/usr/local/share/OpenCV:/usr/local/share/OpenCV" --volume="/home/pi/Desktop/cv_test1:/home/pi/Desktop/cv_test1" jacka654321/smart_car:v1
           

docker外部接入控制

Docker基本指令與使用 —— Docker容器的網絡連接配接(四)

https://www.cnblogs.com/Hai--D/p/7017933.html

Docker 使用實體網絡IP位址 及四種網絡模式

https://blog.csdn.net/fgf00/article/details/52575500/

安裝ping

apt-get install iputils-ping
           

安裝ifconfig

apt-get install -y net-tools
           

修改docker0預設配置設定的ip位址:

sudo ifconfig docker0 192.168.31.118 netmask 255.255.255.0
           

下載下傳pipework

wget  -O pipework-master.zip https://codeload.github.com/jpetazzo/pipework/zip/master
unzip pipework-master.zip 
sudo cp -p pipework-master/pipework /usr/local/bin/
           
sudo pipework br0 ca3cbce8c865 192.168.31.10/[email protected]
           
基于聲音和視訊的人跟随自動駕駛汽車- smart_car 語音視訊控制環境