Sobre a interação por voz

A API Voice Interaction Service oferece uma abstração sobre diferentes apps de controle de voz em potencial. As implementações podem ser desenvolvidas seguindo as diretrizes descritas em Desenvolvimento de apps. O conteúdo deste guia de integração descreve como integrar esses apps a uma imagem de sistema específica do Android Automotive OS (AAOS).

Terminologia

Estes termos são usados neste guia:

  • Dados de assistência. Quando uma sessão de interação por voz é iniciada, o sistema pode capturar visualizações e capturas de tela e transmitir essas informações para a sessão. Os apps podem expor informações adicionais implementando Activity#onProvideAssistData() e Activity#onProvideAssistContent().
  • Push-to-talk (PTT): Botão físico de controle de voz, geralmente localizado no volante.
  • RecognitionService (RS). Serviço de reconhecimento de voz usado por apps com a API SpeechRecognizer . As VIAs precisam incluir VoiceInteractionService e RecognitionService.
  • Toque para falar (TTT). Botão de controle de voz do software, geralmente incluído como parte da interface do sistema). No Android, isso também é chamado de gesto de assistência.
  • VoiceInteractionService. Serviço de sistema leve implementado pelo desenvolvedor do VIA. O serviço selecionado é vinculado ao serviço do sistema na inicialização e está sempre em execução.
  • VoiceInteractionSession (VIS). Essa classe encapsula a lógica de negócios da interação do usuário. Ela é responsável por apresentar ao usuário o status da interação por voz, processando solicitações do VoiceInteractor e recebendo dados de assistência e captura de tela.
  • VoiceInteractionSessionService (VSS). Um serviço, parte de um VIA, responsável por processar uma sessão de interação por voz. Esse serviço é vinculado ao serviço do sistema do Android durante uma interação por voz com um usuário. Toda a lógica de negócios desta sessão é implementada na classe VoiceSession. Esse serviço só vai continuar ativo durante uma única sessão de voz do usuário.
  • App de interação por voz (VIA). App Android projetado para servir como controle de voz (chamado de assistente). Esses apps podem ser identificados pela inclusão de um VoiceInteractionService no manifesto. Apenas um desses apps pode ser selecionado como padrão por vez no sistema. Somente o app padrão será mantido ativo (vinculado de um serviço do sistema) e vai ser o receptor de eventos Push-to-Talk (PTT) ou Tap-to-Talk (TTT).

Responsabilidades

Esta tabela descreve as responsabilidades de cada parte.

Fabricantes de automóveis (OEMs) AOSP Desenvolvedores de apps
  • Crie um sistema de infoentretenimento compatível com o AAOS.
  • Implemente a entrada e a saída de áudio, incluindo opcionalmente o suporte à detecção de palavras-chave DSP.
  • Conceder permissões privilegiadas do sistema para os serviços de interação por voz.
  • Respeite os requisitos de VoiceInteractionService em relação ao acesso às telas de configurações do app.
  • Definir e desenvolver VoiceInteractionService e APIs relacionadas.
  • Fornecer documentação da API, exemplos de código e outros materiais de suporte para desenvolvedores da VIA.
  • Forneça orientação de UX com requisitos e recomendações.
  • Implemente a API VoiceInteractionService, a API RecognitionService e a API NotificationListenerService (consulte a descrição detalhada em Desenvolvimento de apps).
  • Ofereça uma interface personalizável que possa ser ajustada pelos OEMs para corresponder a cada sistema de design de carro.

Requisitos de UX

Os OEMs têm a responsabilidade final de oferecer uma boa experiência do usuário aos clientes. Os OEMs precisam garantir que todos os serviços de interação por voz pré-instalados atendam aos requisitos descritos em Assistentes pré-carregados: orientação de UX.

Experiência principal com o assistente

Um aplicativo automotivo de interação por voz (VIA) executa as seguintes ações:

  • [OBRIGATÓRIO] Responder a gatilhos de interação por voz processados pelo sistema (PTT, TTT).
  • [OBRIGATÓRIO] Mostrar uma representação visual do progresso (por exemplo, escuta, processamento e atendimento).
  • [OBRIGATÓRIO] Usar voz ou sons para indicar que entendeu e concluiu as solicitações do usuário.
  • [OBRIGATÓRIO] Servir como um reconhecedor de voz para outros apps (consulte a API SpeechRecognizer).
  • [SHOULD] Responder a um gatilho de hotword.
  • [MAIO] Exibe uma atividade de configurações em que os usuários podem definir esse VIA (por exemplo, permissões, configuração de hotword e login).
  • [MAY] Processar dados de assistência (Intent#ACTION_ASSIST)
  • [MAY] Suporte à interação por voz do teclado (tela de bloqueio).

Componentes

De modo geral, um app de interação por voz interage com estes atores:

Atores de interação por voz

Figura 1. Atores de interação por voz

Detalhes:

  • VoiceInteractionManagerService. Esse serviço do sistema é responsável por gerenciar a VIA padrão e expor a funcionalidade dela para o restante do sistema.
  • RecognitionService. Esse serviço expõe recursos de reconhecimento de fala para outros apps no sistema.
  • SoundTrigger: implementa o gerenciamento de palavras-chave e está disponível para VIAs pelo AlwaysOnHotwordDetector.
  • MediaRecorder: fornece acesso à entrada de áudio para detecção de palavras-chave (ao usar a CPU) e reconhecimento de fala.
  • PhoneWindowManager/CarInputService. Esses serviços são responsáveis (entre outras coisas) por lidar com eventos de teclas, rotear o PTT para o VIA usando VoiceInteractionManagerService.
  • User. O usuário interage com um VIA por meio de gatilhos (PTT, TTT, palavra de ativação) ou da interface do Voice Plate.
  • CarService, Notifications, Media, Telephony, ContactsProvider e assim por diante. Serviços e apps usados pela VoiceInteractionSession para cumprir os comandos do usuário.

Conceitos específicos do setor automotivo

O AAOS difere do Android nos seguintes aspectos:

  • Além das funcionalidades normais do Google Assistente, as VIAs do AAOS podem controlar funções do veículo (por exemplo, HVAC, assentos e luzes internas). Essas funcionalidades podem ser integradas usando a API CarPropertyManager (consulte mais em Ler uma propriedade do veículo), desde que os OEMs configurem o acesso corretamente, conforme descrito em Lista de permissões privilegiadas.
  • A personalização e a consistência são mais relevantes no setor automotivo do que em qualquer outro formato. Consulte Personalização para ler mais sobre a implementação dessas diretrizes.