RaspberryPi 运行 Google assistant 笔记【原创】

羊舌高明
2023-12-01

 

1.SSH root 登陆 :用户 pi: 密码***  用户 root: 密码 ***
    1.1 sudo passwd root
    1.2 sudo passwd --unlock root //启用 root 账号登录
    1.4 root 用户 执行raspi-config,配置界面选择 5 interface option ,继续选择SSH
    1.5 sudo nano /etc/ssh/sshd_config 
            //新版本ssh默认关闭root登陆 可以修改一下ssh的配置文件
            // #PermitRootLogin without-password 为 PermitRootLogin yes
            
2. 声音配置:
    2.1 speaker-test -t wav //测试声音播放
    2.2 raspi-config ‘advance options’ ‘audio’ ‘3.5mm’
    2.3 执行命令 arecord -l (mic device) and aplay -l (speaker device)  记录下设备号 <card number>,<device number>
    2.4 修改/home/pi 下面的文件.asoundrc //注意/home/pi文件仅仅对 pi 用户有效, root用户需要拷贝到root文件夹下
             pcm.!default {
              type asym
              capture.pcm "mic"
              playback.pcm "speaker"
            }
            pcm.mic {
              type plug
              slave {
                pcm "hw:<card number>,<device number>"
              }
            }
         pcm.speaker {
              type plug
              slave {
            pcm "hw:<card number>,<device number>"
              }
            }
    2.5 录音 test:
            arecord --device=hw:1,0 --format=S16_LE --duration=5 --rate=44100 --file-type=raw out.raw
            arecord --format=S16_LE --duration=5 --rate=44100 --file-type=raw out.raw
    2.6 播放 test:
            aplay --format=S16_LE --rate=44100 out.raw

3. 申请Google cloud :
    3.1 创建一个项目或者选一个已经存在的项目:https://console.cloud.google.com/cloud-resource-manager
    3.2 开启Google Assistant API:https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview
    3.3 开启个人Google账号的权限,个人信息授权给设备访问:https://myaccount.google.com/activitycontrols
    3.4 注册设备模型(LIGHT for test):https://console.actions.google.com/
            new project 选择刚刚创建的Google cloud 项目
            下载生成的josn文件
            如果该项目没有注册模型,好像没有二次进入注册的选项,需要删除该项目,重新来过
            最多同时运行的设备只有2个,大于2个好像要另外申请

4. 拷贝授权文件到Raspberry pi 的 Downloads 目录:client_secret_client-id.json

5. 授予 Google Assistant 一定的权限,否则你运行项目的时候,她会一直跟你说,她需要权限才能跟你说话。

6.安装 SDK 和示例项目:
    Google 推荐在 Python 的虚拟环境运行该项目,避免对系统环境造成影响,具体运行以下命令:
    sudo apt-get update
    sudo apt-get install python3-dev python3-venv 
    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools
    source env/bin/activate
    
    上面的最后一条命令是激活虚拟环境,然后安装依赖软件包:
        sudo apt-get install portaudio19-dev libffi-dev libssl-dev
    
    安装Google SDK 新版本的依赖包:
        python -m pip install --upgrade google-assistant-library
        python -m pip install --upgrade google-assistant-sdk[samples]
    安装Google 授权工具:
        python -m pip install --upgrade google-auth-oauthlib[tool]
    
7.注册设备 & test demo: 
    7.1 注册设备:
            7.11 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
      --save --headless --client-secrets /home/pi/downloads/client_secret_client-id******.json
      7.12 Please visit this URL to authorize this application: https://*******
      7.13 Enter the authorization code:*******
      7.14 注册成功提示:credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
    7.2 test dome:
            googlesamples-assistant-pushtotalk --project-id my-***-project --device-model-id my-model-***
            如果连接成功按下enter键,开始和 Google assistant会话。
            可能的错误:
            1.mic找不到(重新配置mic和测试)
            2.项目模型未开启Google assistant功能(注意需要手动开启)

8. 硬件添加LED到树莓派的pin_25

9. 给刚才注册的模型添加:Supported traits(勾选 onoff)https://console.actions.google.com/

10. 再次运行googlesamples-assistant-pushtotalk:
        说话:‘turn on’ / ‘turn off’ 查看模型是否更新成功,成功提示如下
        INFO:root:Recording audio request.
        INFO:root:End of audio request detected
        INFO:root:Transcript of user request: "turn on".
        INFO:root:Playing assistant response.
        INFO:root:Turning device on
        INFO:root:Waiting for device executions to complete.
        INFO:root:Finished playing assistant response.
        
11. clone 更新测试代码:git clone https://github.com/googlesamples/assistant-sdk-python
        安装模块:pip install RPi.GPIO
        cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
        编辑代码:nano pushtotalk.py
        添加:
            import RPi.GPIO as GPIO                                                //添加到文件头
            device_handler = device_helpers.DeviceRequestHandler(device_id)
            GPIO.setmode(GPIO.BCM)                                       //添加
            GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)        //添加

            @device_handler.command('action.devices.commands.OnOff')
            def onoff(on):
            if on:
            logging.info('Turning device on')
            GPIO.output(25, 1)                                            //添加
            else:
            logging.info('Turning device off')
            GPIO.output(25, 0)                                            //添加

12. 执行新的测试代码://发送 语音指令 turn on/off 成功控制led灯 
        python pushtotalk.py


    
 

 类似资料: