天天看点

基于声音和视频的人跟随自动驾驶汽车- 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 语音视频控制环境