Quando executa um pedido de deteção de intenção, pode fornecer opcionalmente phrase_hints para dar sugestões ao reconhecedor de voz. Estas sugestões podem ajudar com o reconhecimento num estado de conversa específico.
Adaptação automática da voz
A funcionalidade de adaptação automática da voz melhora a precisão do reconhecimento de voz do seu agente através da utilização automática do estado da conversa para transmitir entidades relevantes e expressões de treino como sugestões de contexto de voz para todos os pedidos de deteção de intenção. Esta funcionalidade está desativada por predefinição.
Ative ou desative a adaptação automática da voz
Para ativar ou desativar a adaptação automática da voz:
Consola
- Abra a consola do Dialogflow CX.
- Escolha o seu projeto da GCP.
- Selecione o seu agente.
- Clique em Definições do agente.
- Clique no separador Voz e IVR.
- Ative ou desative a opção Ativar adaptação automática da voz.
- Clique em Guardar.
API
Consulte 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 do agente | Recurso do agente |
| RPC | Interface do agente | Interface do agente |
| C++ | AgentsClient | Não disponível |
| C# | AgentsClient | Não disponível |
| Ir | AgentsClient | Não disponível |
| Java | AgentsClient | AgentsClient |
| Node.js | AgentsClient | AgentsClient |
| PHP | Não disponível | Não disponível |
| Python | AgentsClient | AgentsClient |
| Ruby | Não disponível | Não disponível |
Conceção de agente para melhorias no reconhecimento de voz
Com a adaptação automática da voz ativada, pode criar o seu agente de formas que tirem partido da mesma. As secções seguintes explicam como o reconhecimento de voz pode ser melhorado com determinadas alterações às expressões de preparação e às entidades do seu agente.
Expressões de preparação
- Se definir expressões de preparação com uma expressão como "nariz entupido", uma expressão do utilizador final com um som semelhante é reconhecida de forma fiável como "nariz entupido" e não "stuff he knows" (coisas que ele sabe).
- Quando tem um parâmetro obrigatório que força o Dialogflow a apresentar pedidos de preenchimento de formulários, a adaptação automática da voz vai favorecer fortemente a entidade que está a ser preenchida.
Em todos os casos, a adaptação automática da voz está apenas a influenciar o reconhecimento de voz e não a limitá-lo. Por exemplo, mesmo que o Dialogflow esteja a pedir a um utilizador um parâmetro obrigatório, os utilizadores continuam a poder acionar outras intenções, como uma intenção de "falar com um agente" de nível superior.
Entidades do sistema
Se definir uma expressão de preparação que use a @sys.number
entidade do sistema
,
e o utilizador final disser "Quero dois",
pode ser reconhecido como "para", "também", "2" ou "dois".
Com a adaptação automática da voz ativada, o Dialogflow usa a entidade @sys.number como uma sugestão durante o reconhecimento de voz, e é mais provável que o parâmetro seja extraído como "2".
Entidades personalizadas
Se definir uma entidade personalizada para nomes de produtos ou serviços oferecidos pela sua empresa, e o utilizador final mencionar estes termos num enunciado, é mais provável que sejam reconhecidos. A expressão de preparação "Adoro o Dialogflow", em que "Dialogflow" está anotado como a entidade @product, indica à adaptação automática da fala que deve favorecer "Adoro o Dialogflow", "Adoro o Cloud Speech" e todas as outras entradas na entidade @product.
É especialmente importante definir sinónimos de entidades limpos quando usar o Dialogflow para detetar a voz. Imagine que tem duas entradas de entidades @product: "Dialogflow" e "Dataflow". Os seus sinónimos para "Dialogflow" podem ser "Dialogflow", "fluxo de diálogo", "criador de diálogos", "Speaktoit", "speak to it", "API.ai", "API dot AI". Estes são bons sinónimos porque abrangem as variações mais comuns. Não precisa de adicionar "o criador de fluxo de diálogo" porque "fluxo de diálogo" já abrange essa parte.
- As expressões do utilizador com entidades numéricas consecutivas, mas distintas, podem ser ambíguas.
Por exemplo, "Quero dois pacotes de dezasseis" pode significar 2 quantidades de 16 pacotes ou 216 quantidades de pacotes. A adaptação da voz pode ajudar a desambiguar estes casos se configurar entidades com valores escritos por extenso:
- Defina uma entidade
quantitycom entradas:zeroone...twenty - Defina uma entidade
productousizecom entradas:sixteen packtwo ounce...five liter - A adaptação da voz usa apenas sinónimos de entidades, pelo que pode definir uma entidade com o valor de referência
1e o sinónimo únicoonepara simplificar a lógica de processamento.
- Defina uma entidade
Entidades de regexp
As entidades de expressão regular podem acionar a adaptação automática da fala para sequências alfanuméricas e de dígitos, como "ABC123" ou "12345", quando configuradas e testadas corretamente.Para reconhecer estas sequências por voz, implemente todos os quatro requisitos abaixo:
1. Requisito de entrada de expressão regular
Embora seja possível usar qualquer expressão regular para extrair entidades de entradas de texto, apenas determinadas expressões indicam à adaptação automática da voz que deve dar prioridade a sequências alfanuméricas ou de dígitos escritas por extenso quando reconhece a voz.
Na entidade regexp, pelo menos uma entrada tem de seguir todas estas regras:
- Deve corresponder a alguns carateres alfanuméricos, por exemplo:
\d,\w,[a-zA-Z0-9] - Não deve 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 encontrar correspondências com carateres especiais nem sinais de pontuação, como:
` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |
Esta entrada pode ter conjuntos de carateres []
e quantificadores de repetição, como *, ?, + e {3,5}.
Veja exemplos.
2. Requisito de definição de parâmetros
Marque a entidade regexp como um parâmetro de formulário obrigatório para que possa ser recolhida durante o preenchimento do formulário. Isto permite que a adaptação automática da voz seja fortemente tendenciosa para o reconhecimento de sequências, em vez de tentar reconhecer um objetivo e uma sequência ao mesmo tempo. Caso contrário, "Onde está a minha encomenda para ABC123" pode ser reconhecido incorretamente como "Onde está a minha encomenda 4ABC123".
3. Requisito de anotação de expressões de preparação
Não use a entidade regexp para uma anotação de expressão de preparação de intenção. Isto garante que o parâmetro é resolvido como parte do preenchimento do formulário.
4. Requisito de testes
Consulte o artigo Testar a adaptação da voz.
Exemplos
Por exemplo, uma entidade regexp com uma única entrada ([a-zA-Z0-9]\s?){5,9} não aciona o reconhecedor de sequência de voz porque contém um grupo de captura.
Para corrigir este problema, basta adicionar outra entrada para [a-zA-Z0-9]{5,9}. Agora, vai beneficiar do reconhecedor de sequências quando fizer a correspondência de "ABC123", mas a NLU vai continuar a fazer a correspondência de entradas como "ABC 123" graças à regra original que permite espaços.
Os seguintes exemplos de expressões regulares adaptam-se a 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 adaptam-se a sequências de dígitos:
\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
Alternativa de regexp
O suporte incorporado da adaptação automática do discurso para entidades de expressões regulares varia consoante o idioma.
Verifique os tokens de classe de voz
para os idiomas suportados $OOV_CLASS_ALPHANUMERIC_SEQUENCE e $OOV_CLASS_DIGIT_SEQUENCE.
Se o seu idioma não for apresentado, pode contornar esta limitação. Por exemplo, se quiser que um ID de funcionário com três letras seguidas de três dígitos seja reconhecido com precisão, pode criar o seu agente com as seguintes entidades e parâmetros:
- Defina uma entidade
digitque contenha 10 entradas de entidades (com sinónimos):0, 01, 1...9, 9 - Defina uma entidade
letterque contenha 26 entradas de entidades (com sinónimos):A, AB, B...Z, Z - Defina uma entidade
employee-idque contenha uma única entrada de entidade (sem sinónimos):@letter @letter @letter @digit @digit @digit - Use
@employee-idcomo parâmetro numa expressão de preparação.
Adaptação manual da voz
A adaptação manual da voz permite-lhe configurar manualmente frases de adaptação da voz para um fluxo ou uma página. Também substitui os contextos de voz implícitos gerados pela adaptação automática da voz quando esta está ativada.
As definições de adaptação de voz ao nível do fluxo e da página têm uma relação hierárquica, o que significa que uma página herda as definições de adaptação de voz do nível do fluxo por predefinição, e o nível da página mais detalhado substitui sempre o nível do fluxo se a página tiver uma definição personalizada.
Para a definição de adaptação de voz, a definição ao nível do fluxo e a definição ao nível da página, pode ativar as opções de forma independente. Se a definição de adaptação ao nível do fluxo não estiver ativada, pode continuar a escolher Personalizar ao nível da página para ativar a adaptação manual da voz para essa página específica. Da mesma forma, se desativar a adaptação manual da voz na definição ao nível do fluxo, as páginas no fluxo com a opção Personalizar selecionada não serão afetadas.
No entanto, não é possível desativar independentemente a definição ao nível do fluxo e a definição ao nível da página. Se um fluxo tiver a adaptação manual da voz ativada, não pode desativá-la para uma página no fluxo através da opção Personalizar. Por conseguinte, se quiser ter uma utilização mista da adaptação manual da voz e da adaptação automática da voz para páginas num fluxo, não deve ativar a adaptação manual da voz ao nível do fluxo e deve usar apenas as definições de adaptação ao nível da página. Pode consultar a tabela abaixo para compreender que combinação de fluxo e definição de página deve usar para o seu caso de adaptação.
| Efeito do alvo | Utilização recomendada das definições de adaptação |
|---|---|
| Desative a adaptação automática para um fluxo | Fluxo ativado sem conjuntos de expressões (as páginas no fluxo usam por predefinição a definição do fluxo). |
| Desative a adaptação automática para uma página | Fluxo desativado e página ativada (Personalizar escolhido) sem conjuntos de expressões. |
| Use apenas a adaptação manual da voz para todas as páginas num fluxo | Fluxo ativado. Personalize as páginas que precisam de usar conjuntos de expressões diferentes do fluxo. |
| Combine a utilização da adaptação automática e manual num fluxo | Fluxo desativado. Personalize as páginas às quais quer aplicar a adaptação manual. |
| Use apenas a adaptação automática da voz para todas as páginas num fluxo | Fluxo desativado. |
Ative ou desative a adaptação manual da voz
Para ativar ou desativar a adaptação manual da voz ao nível do fluxo ou da página:
Definições do fluxo
- Abra a consola do Dialogflow CX.
- Escolha o seu projeto da GCP.
- Passe o cursor do rato sobre o fluxo na secção Fluxos.
- Clique no botão de opções .
- Selecione Definições do fluxo no menu pendente.
- Selecione a caixa de verificação Ativar adaptação manual da voz ou desmarque-a.
- Edite, adicione ou elimine conjuntos de expressões na tabela de conjuntos de expressões
- Clique em Guardar.
Definições da página
- Abra a consola do Dialogflow CX.
- Escolha o seu projeto da GCP.
- Passe o cursor do rato sobre a página na secção Páginas.
- Clique no botão de opções .
- Selecione Definições da página no menu pendente.
- A opção Usar nível do fluxo é escolhida por predefinição e, quando escolhida, as frases de adaptação ao nível do fluxo são reutilizadas para esta página. Pode escolher Personalizar para configurar frases de adaptação diferentes das definições ao nível do fluxo. Mesmo que a adaptação manual da voz esteja desativada ao nível do fluxo, pode ativar e configurar a adaptação manual da voz para uma página nesse fluxo através da opção Personalizar.
- Edite, adicione ou elimine um conjunto de expressões na tabela de conjuntos de expressões de adaptação
- Clique em Guardar.
Configuração manual do conjunto de expressões para melhorias do reconhecimento de voz
1. Palavras e expressões
Num conjunto de expressões de adaptação, pode definir expressões de uma ou várias palavras com referências opcionais a tokens de classe de voz. Por exemplo, pode adicionar expressões como "ótima taxa", "o número de seguimento é $OOV_CLASS_ALPHANUMERIC_SEQUENCE" ou "$FULLPHONENUM". Estas expressões fornecidas aumentam a probabilidade de serem transcritas em vez de outras expressões foneticamente semelhantes. Quando adiciona uma expressão com várias palavras sem qualquer aumento, a preferência é aplicada a toda a expressão e às partes contínuas na expressão. Em geral, o número de expressões deve ser pequeno e só deve adicionar expressões que o reconhecimento de voz tenha dificuldade em acertar sem a adaptação à voz. Se a conversão de voz em texto já conseguir reconhecer uma expressão corretamente, não é necessário adicionar esta expressão às definições de adaptação da voz. Se vir algumas expressões que a conversão de voz em texto reconhece frequentemente de forma incorreta numa página ou num fluxo, pode adicionar as expressões corretas às respetivas definições de adaptação.
Exemplo de correção de erros de reconhecimento
Segue-se um exemplo de como pode usar a adaptação de voz para corrigir problemas de reconhecimento. Suponhamos que está a criar um agente de negociação de dispositivos móveis e o utilizador pode dizer algo que inclua as expressões "vender telemóveis" ou "telemóvel" depois de o agente fazer a primeira pergunta "Em que é que precisa de ajuda?". Então, como podemos usar a adaptação de voz para melhorar a precisão do reconhecimento em ambas as expressões?
Se incluir ambas as expressões nas definições de adaptação, o Speech-to-Text pode continuar confuso, uma vez que têm um som semelhante. Se fornecer apenas uma das duas expressões, a conversão de voz em texto pode reconhecer incorretamente uma expressão como a outra. Para melhorar a precisão do reconhecimento de voz para ambas as expressões, tem de fornecer mais pistas de contexto à conversão de voz em texto para distinguir quando deve ouvir "vender telemóveis" e quando deve ouvir "telemóvel". Por exemplo, pode reparar que as pessoas usam frequentemente "vender telemóveis" como parte de expressões como "como vender telemóveis", "quero vender telemóveis" ou "vende telemóveis", enquanto "telemóvel" é usado em expressões como "comprar telemóvel", "fatura do telemóvel" e "serviço de telemóvel". Se fornecer estas expressões mais precisas ao modelo, em vez das expressões originais curtas "telemóvel" e "vender telemóveis", a conversão de voz em texto vai aprender que "vender telemóvel" como expressão verbal é mais provável de seguir palavras como "como", "quero" e "tens", enquanto "telemóvel" como expressão nominal é mais provável de seguir palavras como "comprar" ou ser seguido de palavras como "fatura" ou "serviço". Por conseguinte, como regra geral para configurar frases de adaptação, é geralmente melhor fornecer frases mais precisas, como "como vender telemóveis" ou "vende telemóveis", do que incluir apenas "vender telemóvel".
2. Tokens de classe de voz
Além de palavras em linguagem natural, também pode incorporar referências a tokens de classe de voz numa expressão. Os tokens de classe de voz representam conceitos comuns que seguem normalmente um determinado formato na escrita. Por exemplo, para o número da morada numa morada como "123 Main Street", as pessoas esperariam normalmente ver o formato numérico "123" de um número da morada numa morada em vez da respetiva versão por extenso "cento e vinte e três". Se esperar uma determinada formatação nos resultados da transcrição, especialmente para sequências alfanuméricas, consulte a lista de tokens de classe suportados para ver que tokens estão disponíveis para o seu idioma e exemplo de utilização.
Se a página já tiver parâmetros ou rotas de intenção com referências a entidades do sistema, aqui tem uma tabela de referência para mapeamentos entre entidades do sistema comuns e tokens de classe de voz:
| Entidades do sistema | Tokens de classe de voz |
|---|---|
@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. Valor de otimização
Se adicionar expressões sem o valor de aumento não fornecer um efeito de tendência suficientemente forte, pode usar o valor de aumento para reforçar ainda mais o efeito de tendência da adaptação da voz.
O aumento aplica um desvio adicional quando é definido para valores superiores a 0 e não superiores a 20. Quando o aumento é vazio ou 0, o efeito de parcialidade predefinido ajuda a reconhecer a expressão completa e as partes contínuas na expressão. Por exemplo, a expressão não otimizada "está aberto para vender telemóveis" ajuda a reconhecer essa expressão e também expressões semelhantes, como "vendo telemóveis" e "Olá, está aberto".
Quando é aplicado um aumento positivo, o efeito de parcialidade é mais forte, mas só se aplica à expressão exata. Por exemplo, a expressão otimizada "vender telemóveis" ajuda a reconhecer "pode vender telemóveis", mas não "vende telemóveis".
Por estes motivos, vai obter os melhores resultados se fornecer expressões com e sem aumento.
Os valores de aumento mais elevados podem resultar em menos falsos negativos, que são casos em que a palavra ou a expressão ocorreu no áudio, mas não foi corretamente reconhecida pela conversão de voz em texto (underbiasing). No entanto, o aumento também pode aumentar a probabilidade de falsos positivos, ou seja, casos em que a palavra ou a expressão aparece na transcrição, mesmo que não tenha ocorrido no áudio (sobrevalorização). Normalmente, tem de ajustar as suas expressões de parcialidade para encontrar um bom ponto de compromisso entre os dois problemas de parcialidade.
Pode saber mais sobre como ajustar o valor de aumento para expressões no documento do Cloud Speech sobre o aumento.
Quando usar a adaptação automática ou manual da voz
Em geral, se não tiver a certeza de que a adaptação de voz melhora a qualidade do reconhecimento de voz para o seu agente (não tiver padrões de erros de transcrição claros em mente), recomendamos que experimente primeiro a adaptação automática de voz antes de recorrer à adaptação manual de voz. Para decisões mais detalhadas, considere os seguintes fatores para decidir entre a adaptação automática da voz ou a adaptação manual da voz:
1. Preenchimento de formulários
A adaptação automática da fala funciona muito bem com o preenchimento de formulários, uma vez que usa o contexto da gramática ABNF para os parâmetros do formulário e aplica regras gramaticais com base nos respetivos tipos de entidades. Uma vez que a adaptação manual da fala ainda não suporta gramáticas ABNF, geralmente, a adaptação automática da fala é preferível à adaptação manual da fala para uma página de preenchimento de formulários. Ainda assim, para páginas com apenas parâmetros de entidades do sistema e entidades de expressões regulares simples suportadas por tokens de classe de voz, também pode usar a adaptação manual da voz para alcançar um efeito de tendência semelhante à adaptação automática da voz sem necessidade de ajustar entidades de expressões regulares.
2. Complexidade da transição de página ou fluxo
Para uma página ou um fluxo simples com alguns caminhos de intenção, é provável que a adaptação automática da fala gere frases de ponderação representativas e tenha um desempenho razoavelmente bom.
No entanto, se uma página ou um fluxo tiver uma grande quantidade de caminhos de intenção (para uma página, considere também o número de caminhos ao nível do fluxo) ou se alguma das intenções tiver frases de preparação não importantes excessivamente longas ou curtas (por exemplo, uma frase completa ou uma única palavra com apenas uma ou duas sílabas), é muito provável que o modelo de adaptação de voz não funcione bem com estas frases. Primeiro, deve tentar desativar a adaptação da voz para as páginas abertas com alta complexidade ativando a adaptação da voz manual com conjuntos de expressões vazios (substituição da adaptação vazia). Depois disso, avalie se existem expressões especiais não ambíguas que ainda precisam de ser fornecidas ao Speech-to-Text para melhorar a qualidade do reconhecimento.
Outro sintoma deste problema de complexidade é a apresentação de uma grande variedade de problemas de subvalorização ou sobrevalorização quando a adaptação automática da voz está ativada. Tal como no caso acima, também tem de testar com a adaptação de voz desativada para a página específica primeiro. Se os comportamentos erróneos persistirem após desativar a adaptação à voz, pode adicionar as expressões que quer corrigir às definições de adaptação à voz e até adicionar valores de aumento para reforçar ainda mais os efeitos de parcialidade quando necessário.
A testar a adaptação da voz
Quando testar as capacidades de adaptação de voz do seu agente para uma determinada expressão de preparação ou correspondência de entidade, não deve passar diretamente para o teste da correspondência com a primeira emissão de voz de uma conversa. Deve usar apenas entradas de voz ou de eventos para toda a conversa antes da correspondência que quer testar. O comportamento do seu agente quando testado desta forma será semelhante ao comportamento nas conversas de produção reais.
Limitações
Aplicam-se as seguintes limitações:
- A adaptação da voz não está disponível para todos os modelos de voz e combinações de idiomas. Consulte a página de apoio técnico de idiomas do Cloud Speech para verificar se a "adaptação de modelos" está disponível para o seu modelo de voz e combinação de idiomas.
Atualmente, a adaptação manual da voz ainda não suporta classes personalizadas nem gramática ABNF. Pode ativar a adaptação automática da voz ou usar o pedido de intenção de deteção de tempo de execução para usar estas funcionalidades de adaptação.
O mesmo valor de aumento pode ter um desempenho diferente para diferentes modelos de voz e idiomas, por isso, tenha cuidado ao configurá-los manualmente para agentes que usam vários idiomas ou modelos de voz. Atualmente, a adaptação manual da fala aplica-se a todos os idiomas num agente, pelo que os agentes multilingues só devem usar expressões independentes do idioma ou dividir cada idioma num agente separado. Uma vez que o comportamento de parcialidade predefinido (não fornecer aumento ou 0 aumento) tem normalmente um desempenho razoavelmente bom para todos os idiomas e modelos, não precisa de configurar valores de aumento específicos do idioma, a menos que seja necessária uma parcialidade mais forte para o seu exemplo de utilização de reconhecimento. Pode saber mais sobre como ajustar o valor de aumento neste guia do Cloud Speech-to-Text.
- O reconhecimento de sequências de carateres longas é difícil. O número de carateres captados num único turno está diretamente relacionado com a qualidade do áudio de entrada.
Se seguiu todas as diretrizes de entidades regexp
e tentou usar tokens de classe de voz relevantes
nas definições de adaptação de voz manual
e ainda tem dificuldades em captar a sequência completa num único turno,
pode considerar algumas alternativas mais conversacionais:
- Quando validar a sequência numa base de dados, considere fazer referências cruzadas a outros parâmetros recolhidos, como datas, nomes ou números de telefone, para permitir correspondências incompletas. Por exemplo, em vez de apenas pedir a um utilizador o número da encomenda, peça também o respetivo número de telefone. Agora, quando o webhook consulta a sua base de dados para saber o estado da encomenda, pode confiar primeiro no número de telefone e, em seguida, devolver a encomenda mais próxima para essa conta. Isto pode permitir que o Dialogflow ouça incorretamente "ABC" como "AVC", mas ainda assim devolva o estado da encomenda correto ao utilizador.
- Para sequências muito longas, considere criar um fluxo que incentive os utilizadores finais a pausarem a meio para que o bot possa confirmar à medida que avançam.