Adaptação de fala

Ao executar uma solicitação de detecção de intent, você tem a opção de fornecer phrase_hints para fornecer dicas ao reconhecedor de fala. Essas dicas podem ajudar no reconhecimento em um estado de conversa específico.

Adaptação automática de fala

O recurso de adaptação automática de fala melhora a precisão do reconhecimento de fala do seu agente usando o estado da conversa automaticamente para transmitir entidades relevantes e frases de treinamento como dicas de contexto da fala para todas as solicitações de detecção de intent. Esse recurso é desativado por padrão.

Ativar ou desativar a adaptação automática de fala

Para ativar ou desativar a adaptação automática de fala:

Console

  1. Abra o Console do Dialogflow CX.
  2. Escolha seu projeto do GCP.
  3. Selecione seu agente.
  4. Clique em Configurações do agente.
  5. Clique na guia Speech and IVR.
  6. Ative ou desative a opção Ativar a adaptação automática de fala.
  7. Clique em Save.

API

Veja os métodos get e patch/update para o tipo Agent.

Selecione um protocolo e uma versão para a referência do agente:

Protocolo V3 V3beta1
REST Recurso de agente Recurso de agente
RPC (remote procedure call) Interface do agente Interface do agente
C++ AgentsClient Indisponível
C# AgentsClient Indisponível
Go AgentsClient Indisponível
Java AgentsClient AgentsClient
Node.js AgentsClient AgentsClient
PHP Indisponível Indisponível
Python AgentsClient AgentsClient
Ruby Indisponível Indisponível

Design de agente para melhorias no reconhecimento de fala

Com a adaptação automática de fala ativada, é possível criar seu agente de forma a tirar proveito dela. As seções a seguir explicam como é possível melhorar o reconhecimento de fala com algumas alterações nas frases de treinamento, nos contextos e nas entidades do seu agente.

Frases de treinamento

  • Se você definir frases de treinamento com uma frase como "nariz entupido", uma expressão sonora do usuário similar é reconhecida como "nariz entupido" e não como "nariz entope pia".
  • Quando você tem um parâmetro obrigatório que força o Dialogflow a solicitações de preenchimento de formulário, a adaptação automática de fala tem um viés forte para a entidade que está sendo preenchida.

Em todos os casos, a adaptação automática de fala está apenas direcionando o reconhecimento de fala, não o limitando. Por exemplo, mesmo que o Dialogflow esteja solicitando ao usuário um parâmetro obrigatório, os usuários ainda poderão acionar outras intents, como uma intent "conversar com um agente" de nível superior.

Entidades do sistema

Se você definir uma frase de treinamento que use a entidade do sistema @sys.number e o usuário final disser "Quero dois", ela poderá ser reconhecida como "para", "too", "2" ou "dois".

Com a adaptação automática de fala ativada, o Dialogflow usa a entidade @sys.number como uma dica durante o reconhecimento de fala, e o parâmetro tem mais chances de ser extraído como "2".

Entidades personalizadas

  • Se você definir uma entidade personalizada para nomes de produtos ou serviços oferecidos pela sua empresa e o usuário final mencionar esses termos em enunciados, eles terão mais chances de serem reconhecidos. Uma frase de treinamento "Adoro o Dialogflow", em que "Dialogflow" é anotada como a entidade @product, adapta a adaptação automática de falas para o direcionamento de "Adoro Dialogflow", "Adoro o Cloud Speech" e todas outras entradas na entidade @product.

  • É importante definir sinônimos de entidades limpas ao usar o Dialogflow para detectar a fala. Imagine que você tenha duas entradas de entidade do @product, "Dialogflow" e "Dataflow". Seus sinônimos de "Dialogflow" podem ser "Dialogflow", "dialogue flow" ou "dialogue builder", "Speakoit", "speak to it", "API.ai", "API dot AI". Eles são bons sinônimos porque abrangem as variações mais comuns. Não é preciso adicionar "the dialogue flow builder" porque o "dialogue flow" já abrange isso.

  • Os enunciados do usuário com entidades numéricas consecutivas, mas distintas, podem ser ambíguos. Por exemplo, "Quero dois 16 pacotes" pode significar 2 quantidades de 16 pacotes ou 216 quantidades em pacotes. A adaptação de fala pode ajudar a tirar a ambiguidade desses casos se você configurar entidades com valores ortográficos:
    • Defina uma entidade quantity com entradas:
      zero
      one
      ...
      twenty
    • Defina uma entidade product ou size com entradas:
      sixteen pack
      two ounce
      ...
      five liter
    • Somente sinônimos de entidade são usados na adaptação de fala. Assim, você pode definir uma entidade com o valor de referência 1 e um único sinônimo one para simplificar a lógica de fulfillment.

Entidades regexp

As entidades regex podem acionar a adaptação automática de fala para sequências alfanuméricas e de dígitos, como "ABC123" ou "12345", quando configuradas e testadas corretamente.

Para reconhecer essas sequências por voz, implemente os quatro requisitos abaixo:

1. Requisito de entrada RegExp

Embora qualquer expressão regular possa ser usada para extrair entidades de entradas de texto, apenas algumas expressões informarão a adaptação automática da fala à polarização para sequências alfanuméricas ou de dígitos digitadas no reconhecimento de fala.

Na entidade regexp, pelo menos uma entrada precisa seguir todas estas regras:

  • Precisa corresponder a alguns caracteres alfanuméricos, por exemplo: \d, \w, [a-zA-Z0-9]
  • Não pode conter espaços em branco   ou \s, embora \s* e \s? sejam permitidos
  • Não deve conter grupos de captura ou não captura ()
  • Não deve tentar corresponder a nenhum caractere especial ou pontuação, como: ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |

Essa entrada pode ter conjuntos de caracteres [] e quantificadores de repetição como *, ?, +, {3,5}.

Consulte Exemplos.

2. Requisito de definição de parâmetro

Marque a entidade regexp como parâmetro de formulário obrigatório para que ela seja coletada durante preenchimento. Isso permite que a adaptação automática de fala polarize o reconhecimento de sequências em vez de tentar reconhecer uma intent e uma sequência ao mesmo tempo. Caso contrário, "Onde está meu pacote para ABC123" pode ser reconhecido incorretamente como "Onde está meu pacote 4ABC123".

3. Requisito de anotação de frases de treinamento

Não use a entidade regexp para uma anotação de frase de treinamento de intent. Isso garante que o parâmetro seja resolvido como parte do preenchimento do formulário.

4. Requisito de teste

Consulte Como testar a adaptação de fala.

Examples

Por exemplo, uma entidade regexp com uma única entrada ([a-zA-Z0-9]\s?){5,9} não acionará o reconhecedor da sequência de fala porque ele contém um grupo de captura. Para corrigir isso, basta adicionar outra entrada para [a-zA-Z0-9]{5,9}. Agora você se beneficiará do reconhecedor de sequências ao fazer a correspondência de "ABC123", mas o PLN ainda vai corresponder a entradas como "ABC 123" graças à regra original que permite espaços.

Os seguintes exemplos de expressões regulares se adaptam para sequências alfanuméricas:

^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]

Os seguintes exemplos de expressões regulares se adaptam para sequências de dígitos:

\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
Solução alternativa para regex

O suporte integrado da adaptação automática de fala a entidades regexp varia de acordo com o idioma. Verifique os tokens de classe de fala para os idiomas compatíveis $OOV_CLASS_ALPHANUMERIC_SEQUENCE e $OOV_CLASS_DIGIT_SEQUENCE.

Se seu idioma não estiver listado, você poderá contornar essa limitação. Por exemplo, se você quiser que um ID de funcionário com três letras seguidas por três dígitos seja reconhecido com precisão, crie seu agente com as entidades e os parâmetros a seguir:

  • Defina uma entidade digit que contenha 10 entradas de entidade (com sinônimos):
    0, 0
    1, 1
    ...
    9, 9
  • Defina uma entidade letter que contenha 26 entradas de entidade (com sinônimos):
    A, A
    B, B
    ...
    Z, Z
  • Defina uma entidade employee-id que contenha uma única entrada de entidade (sem sinônimos):
    @letter @letter @letter @digit @digit @digit
  • Use @employee-id como parâmetro em uma frase de treinamento.

Adaptação manual de fala

A adaptação manual de fala permite que você configure manualmente frases de adaptação de fala para um fluxo ou uma página. Ele também substitui contextos de fala implícitos gerados pela adaptação de fala automática quando o segundo está ativado.

As configurações de adaptação de fala de nível de fluxo e de página têm uma relação hierárquica, o que significa que uma página herda as configurações de adaptação de fala do nível de fluxo por padrão, e o nível de página mais refinado sempre modificará o nível de fluxo se a página tiver uma configuração personalizada.

Para a configuração de adaptação de fala, a configuração no nível do fluxo e no nível da página podem ser ativadas de forma independente. Se a configuração de adaptação de nível de fluxo não estiver ativada, ainda será possível escolher Personalizar no nível da página para ativar a adaptação manual de fala para essa página específica. Da mesma forma, se você desativar a adaptação manual de fala na configuração de nível de fluxo, as páginas no fluxo com a opção Personalizar selecionada não serão afetadas.

No entanto, as configurações no nível do fluxo e da página não podem ser desativadas de forma independente. Se um fluxo tiver a adaptação manual de fala ativada, não será possível desativá-la para uma página no fluxo por meio da opção Personalizar. Portanto, se você quiser um uso misto de adaptação manual e automática de fala em páginas em um fluxo, não ative a adaptação manual no nível do fluxo. Use apenas as configurações de adaptação no nível da página. Consulte a tabela abaixo para entender qual combinação de configuração de fluxo e página usar no caso de adaptação.

Efeito desejado Uso recomendado das configurações de adaptação
Desativar a adaptação automática de um fluxo Fluxo ativado sem conjuntos de frases. As páginas dentro do fluxo por padrão usam a configuração de fluxo.
Desativar a adaptação automática de uma página Fluxo desativado e página ativada (Personalização selecionada) sem conjuntos de frases.
Usar a adaptação manual de fala apenas para todas as páginas de um fluxo Fluxo ativado. Personalize as páginas que precisam usar conjuntos de frases diferentes do fluxo.
Misturar o uso de adaptação automática e manual em um fluxo Fluxo desativado. Personalize as páginas em que você quer aplicar a adaptação manual.
Usar a adaptação automática de fala apenas para todas as páginas de um fluxo Fluxo desativado.

Ativar ou desativar a adaptação manual de fala

Para ativar ou desativar a adaptação manual de fala no nível do fluxo ou da página:

Configurações do fluxo

  1. Abra o Console do Dialogflow CX.
  2. Escolha seu projeto do GCP.
  3. Passe o cursor do mouse sobre o fluxo na seção Fluxos.
  4. Clique no botão de opções .
  5. Selecione Configurações de fluxo no menu suspenso.
  6. Marque ou desmarque a caixa de seleção Ativar adaptação manual de fala.
  7. Editar, adicionar ou excluir conjuntos de frases na tabela de conjuntos de frases
  8. Clique em Save.

Configurações da página

  1. Abra o Console do Dialogflow CX.
  2. Escolha seu projeto do GCP.
  3. Passe o cursor do mouse sobre a página na seção Páginas.
  4. Clique no botão de opções .
  5. Selecione Configurações da página no menu suspenso.
  6. A opção Usar nível do fluxo é escolhida por padrão e, quando selecionada, as frases de adaptação no nível do fluxo são reutilizadas nesta página. Escolha Personalizar para definir frases de adaptação diferentes das configurações no nível do fluxo. Mesmo que a adaptação manual de fala esteja desativada no nível do fluxo, você ainda pode ativar e configurar a adaptação manual de fala para uma página nesse fluxo por meio da opção Personalizar.
  7. Editar, adicionar ou excluir o conjunto de frases na tabela de conjuntos de frases de adaptação
  8. Clique em Save.

Configuração manual do conjunto de frases para melhorias no reconhecimento de fala

1. Palavras e frases

Em um conjunto de frases de adaptação, é possível definir frases de uma ou várias palavras com referências opcionais a tokens de classe de fala. Por exemplo, você pode adicionar frases como "taxa excelente", "o número de rastreamento é $OOV_CLASS_ALPHANUMERIC_SEQUENCE" ou "$FULLPHONENUM". Essas frases fornecidas aumentam a probabilidade de que sejam transcritas em relação a outras frases fonéticamente semelhantes. Quando você adiciona uma frase com várias palavras sem otimização, o viés é aplicado à frase inteira e às partes contínuas na frase. Em geral, o número de frases precisa ser pequeno, e você só deve adicionar frases que o reconhecimento de fala tenha dificuldades para corrigir sem adaptação de fala. Se o Speech-to-Text já conseguir reconhecer uma frase corretamente, não será necessário adicionar essa frase às configurações de adaptação de fala. Se você perceber algumas frases que o Speech-to-Text não reconhece com frequência em uma página ou fluxo, adicione as frases corretas às configurações de adaptação correspondentes.

Exemplo de correção de erro de reconhecimento

Confira um exemplo de como usar a adaptação de fala para corrigir problemas de reconhecimento. Digamos que você esteja criando um agente de negociação de dispositivos de telefonia e o usuário pode dizer algo incluindo as frases "vender celulares" ou "celular" após o agente fazer a primeira pergunta "com o que você precisa de ajuda?". Então, como podemos usar a adaptação de fala para melhorar a precisão do reconhecimento em ambas as frases?

Se você incluir ambas as frases nas configurações de adaptação, a Speech-to-Text ainda poderá ficar confusa, porque elas são semelhantes. Se você fornecer apenas uma das duas frases, a Speech-to-Text poderá reconhecer uma frase como outra. Para melhorar a precisão do reconhecimento de fala para as duas frases, é necessário fornecer à Speech-to-Text mais dicas de contexto para distinguir entre quando ele deve ouvir "vender telefones" e quando ele deve ouvir "telefone celular". Por exemplo, é possível notar que as pessoas costumam usar "vender smartphones" como parte de expressões como "como vender smartphones", "querem vender smartphones" ou "você vende smartphones", enquanto "telefone" como parte de expressões como "comprar celular", "conta do celular" e "serviço de telefonia celular". Se você fornecer essas frases mais precisas ao modelo em vez das frases originais curtas "celular" e "vender celulares", a Speech-to-Text aprenderá que "vender telefone" como um verbo têm mais probabilidade de vir depois de palavras como "como fazer", "querer" e "você", enquanto "celular" como um substantivo tem mais probabilidade de seguir após palavras como "faturamento" ou ser seguida por palavras como "faturamento" ou "serviço". Portanto, como regra geral para configurar frases de adaptação, geralmente é melhor fornecer frases mais precisas, como "como vender smartphones" ou "você vende smartphones", do que apenas incluir "vender telefone".

2. Tokens de classe de fala

Além das palavras de linguagem natural, também é possível incorporar referências a tokens de classe de fala em uma frase. Os tokens de classe de fala representam conceitos comuns que geralmente seguem um formato específico na escrita. Por exemplo, para o número de um endereço como "Avenida Principal, 123", as pessoas normalmente veriam o formato numérico "123" em um endereço, em vez da versão totalmente escrita "cento e vinte e três". Se você espera certa formatação nos resultados da transcrição, especialmente para sequências alfanuméricas, consulte a lista de tokens de classe compatíveis para ver quais tokens estão disponíveis para seu idioma e seu caso de uso.

Se a página já tiver rotas de intent ou parâmetros com referências a entidades do sistema, esta é uma tabela de referência para mapeamentos entre entidades comuns do sistema e tokens de classe de fala:

Entidades do sistema Tokens de classe de fala
@sys.date $MONTH $DAY $YEAR
@sys.date-time $MONTH $DAY $YEAR
@sys.date-period $MONTH $DAY $YEAR
@sys.time $TIME
@sys.time-period $TIME
@sys.age $OPERAND
@sys.number $OPERAND
@sys.number-integer $OPERAND
@sys.cardinal $OPERAND
@sys.ordinal $OPERAND
@sys.percentage $OPERAND
@sys.duration $OPERAND
@sys.currency-name $MONEY
@sys.unit-currency $MONEY
@sys.phone-number $FULLPHONENUM
@sys.zip-code $POSTALCODE ou $OOV_CLASS_POSTALCODE
@sys.address $ADDRESSNUM $STREET $POSTALCODE
@sys.street-address $ADDRESSNUM $STREET $POSTALCODE
@sys.temperature $OOV_CLASS_TEMPERATURE
@sys.number-sequence $OOV_CLASS_DIGIT_SEQUENCE
@sys.flight-number $OOV_CLASS_ALPHANUMERIC_SEQUENCE

3. Aumente o valor

Se a adição de frases sem o valor de otimização não fornecer um efeito de polarização forte o suficiente, use o valor de otimização para fortalecer ainda mais o efeito de polarização de adaptação de fala.

O aumento aplica um viés extra quando definido para valores maiores que 0 e não mais que 20. Quando a otimização está vazia ou é 0, o efeito de polarização padrão ajuda a reconhecer a frase inteira e as partes contínuas na frase. Por exemplo, uma frase não otimizada "você está aberto para vender smartphones" ajuda a reconhecer essa frase e também frases semelhantes, como "Eu vendo smartphones" e "Oi você está aberto".

Quando um aumento positivo é aplicado, o efeito de polarização é mais forte, mas ele só se aplica à frase exata. Por exemplo, uma frase otimizada "vender smartphones" ajuda a reconhecer "você consegue vender smartphones", mas não "você vende smartphones"?

Por esses motivos, você terá os melhores resultados se fornecer frases com e sem otimização.

Valores de otimização maiores podem resultar em menos falsos negativos, que são casos em que a palavra ou frase ocorreu no áudio, mas não foi reconhecida corretamente pela Speech-to-Text (subestimada). No entanto, a otimização também pode aumentar a probabilidade de falsos positivos, ou seja, casos em que a palavra ou frase aparece na transcrição, mesmo que não tenha ocorrido no áudio (excesso de viés). Normalmente, você precisa ajustar suas frases de polarização para encontrar um bom ponto de compensação entre os dois problemas de polarização.

Saiba mais sobre como ajustar o valor de otimização para frases no documento do Cloud Speech sobre otimização.

Quando usar a adaptação automática ou manual de fala

Em geral, se você não tiver certeza se a adaptação de fala melhorará a qualidade do reconhecimento de fala para seu agente (não há padrões claros de erro de transcrição em mente), recomendamos que tente a adaptação automática de fala primeiro antes de recorrer à adaptação manual de fala. Para decisões mais detalhadas, considere os seguintes fatores para decidir entre a adaptação automática de fala ou a adaptação manual de fala:

1. Preenchimento de formulário

A adaptação automática de fala funciona muito bem com o preenchimento de formulários, já que usa o contexto gramatical ABNF para os parâmetros do formulário e aplica regras gramaticais com base nos tipos de entidade. Como a adaptação manual de fala ainda não é compatível com gramáticas ABNF, a adaptação automática de fala geralmente é preferível em relação à adaptação manual de fala para uma página de preenchimento de formulário. Ainda para páginas com apenas parâmetros de entidade do sistema e entidades regexp simples compatíveis com tokens de classe de fala, também é possível usar a adaptação manual de fala para ter um efeito de polarização semelhante ao da adaptação automática de fala, sem a necessidade de ajustar entidades regexp.

2. Complexidade da transição de página ou fluxo

Para uma página ou fluxo simples com algumas rotas de intent, a adaptação automática de fala provavelmente gerará frases de polarização representativas e terá um bom desempenho.

No entanto, se uma página ou um fluxo tiver uma grande quantidade de rotas de intent (para uma página, considere também o número de rotas no nível do fluxo) ou se alguma das intents tiver frases de treinamento muito longas ou curtas (por exemplo, uma frase inteira ou uma única palavra com apenas uma ou duas sílabas), é muito provável que o modelo de adaptação de fala não funcione bem com essas frases. Primeiro, tente desativar a adaptação de fala nas páginas abertas com alta complexidade ativando a adaptação manual de fala com conjuntos de frases vazios (substituição de adaptação vazia). Depois, avalie se há frases especiais não ambíguas que ainda precisam ser fornecidas ao Speech-to-Text para melhorar a qualidade do reconhecimento.

Outro sintoma desse problema de complexidade é observar uma ampla gama de problemas de subestimação ou superestimação quando a adaptação automática de fala está ativada. Assim como no caso acima, também é necessário testar com a adaptação de fala desativada para a página específica primeiro. Se os comportamentos incorretos persistirem após a desativação da adaptação de fala, adicione as frases que você quer corrigir às configurações de adaptação de fala e até mesmo adicione valores de otimização para fortalecer ainda mais os efeitos de polarização, quando necessário.

Como testar a adaptação de fala

Ao testar os recursos de adaptação de fala do seu agente para uma correspondência específica de frase ou entidade de treinamento, não vá diretamente para o teste com a primeira expressão de uma conversa. Use apenas entradas de eventos ou voz para toda a conversa antes da correspondência que você quer testar. Quando testado dessa maneira, o comportamento do agente será semelhante ao comportamento das conversas de produção reais.

Limitações

Considere as seguintes limitações:

  • A adaptação de fala não está disponível para todos os modelos de fala e combinações de idiomas. Consulte a página de suporte da linguagem do Cloud Speech para verificar se a "adaptação do modelo" está disponível para sua combinação de modelo de fala e linguagem.
  • Atualmente, a adaptação manual de fala ainda não é compatível com classes personalizadas ou gramática ABNF. Você pode ativar a adaptação automática de fala ou usar a solicitação de intent de detecção de tempo de execução para usar esses recursos de adaptação.

  • O mesmo valor de otimização pode ter um desempenho diferente para modelos de fala e idiomas diferentes. Portanto, tenha cuidado ao configurá-los manualmente para agentes que usam vários idiomas ou modelos de fala. Atualmente, a adaptação manual de fala se aplica a todos os idiomas em um agente. Portanto, agentes multilíngues devem usar apenas frases independentes de idioma ou dividir cada idioma em um agente separado. Como o comportamento de polarização padrão (não fornecer otimização ou 0 otimização) geralmente tem um bom desempenho para todas as linguagens e modelos, não é necessário configurar valores de otimização específicos de idioma, a menos que um direcionamento mais forte seja necessário para seu caso de uso de reconhecimento. Saiba mais sobre como ajustar o valor de otimização neste guia da Cloud Speech-to-Text.

  • Reconhecer sequências de caracteres longas é um desafio. O número de caracteres que são capturados em um único turno está diretamente relacionado à qualidade do áudio de entrada. Se você seguiu todas as diretrizes de entidades regexp e tentou usar tokens de classe de fala relevantes nas configurações de adaptação manual de fala, e ainda está com dificuldades para capturar a sequência inteira de uma só vez, considere mais algumas alternativas de conversa:
    • Ao validar a sequência em relação a um banco de dados, faça referência cruzada a outros parâmetros coletados, como datas, nomes ou números de telefone, para permitir correspondências incompletas. Por exemplo, em vez de apenas solicitar o número de pedido ao usuário, peça também um número de telefone. Agora, quando o webhook consultar o banco de dados para verificar o status do pedido, ele poderá depender do número de telefone e retornar o pedido correspondente mais próximo dessa conta. Isso pode permitir que o Dialogflow escute "ABC" como "AVC" e ainda retorne o status correto do pedido ao usuário.
    • Para sequências mais longas, crie um fluxo que incentive os usuários finais a pausar no meio para que o bot possa confirmar durante o processo.