0

我将以下代码用于 AIY VOICE KIT 谷歌助手。该套件使用树莓派来运行谷歌助手。所以基本上你可以建立自己的迷你谷歌主页并控制其他树莓派或任何与 python 对话的东西。我用内置的 python 演示设置它,这样当我按下 pi 顶部的按钮时,我就可以用麦克风与谷歌交谈。这有点像用按钮说“OK google”。


#!/usr/bin/env python3
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""A demo of the Google Assistant GRPC recognizer."""

import subprocess
import aiy.cloudspeech
import argparse
import locale
import logging
import signal
import sys

from aiy.assistant.grpc import AssistantServiceClientWithLed
from aiy.board import Board

def volume(string):
    value = int(string)
    if value < 0 or value > 100:
        raise argparse.ArgumentTypeError('Volume must be in [0...100] range.')
    return value

def locale_language():
    language, _ = locale.getdefaultlocale()
    return language

def main():
    logging.basicConfig(level=logging.DEBUG)
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0))

    parser = argparse.ArgumentParser(description='Assistant service example.')
    parser.add_argument('--language', default=locale_language())
    parser.add_argument('--volume', type=volume, default=100)
    args = parser.parse_args()

    with Board() as board:
        assistant = AssistantServiceClientWithLed(board=board,
                                                  volume_percentage=args.volume,
                                                  language_code=args.language)
        while True:
            logging.info('Press button to start conversation...')
            board.button.wait_for_press()
            logging.info('Conversation started!')
            assistant.conversation()

if __name__ == '__main__':
    main()

程序运行良好。但是,如果不连接到桌面,就无法关闭它。我想修改程序,如果我按住按钮十秒钟,它将关闭。如果这有什么不同,我将使用树莓派零来运行它。谁能帮我?

4

1 回答 1

0

我为 rc.local 编写了一些 python 代码,允许我使用内置按钮将其关闭。

import subprocess
from aiy.board import Board
with Board() as board:
    board.button.wait_for_press()
    subprocess.call('sudo shutdown now', shell=True)

我希望它可以帮助任何有同样问题的人。

于 2020-11-28T13:17:00.557 回答