Conversão de fala em texto

O Reconhecimento Automático de Fala (ASR) permite que os aplicativos ofereçam suporte à entrada de voz para casos de uso como IVR, identificação e diversos tipos de bots/assistentes de voz. Ao utilizar esse recurso, o aplicativo obtém a transcrição da fala do usuário (na forma de texto) quando espera que o usuário responda a alguma pergunta falando, em vez de digitar dígitos (DTMF); e, então, pode continuar o fluxo da chamada de acordo com sua lógica de negócios, com base no que o usuário disse.

Observação: este é um recurso pago. As tarifas exatas podem ser consultadas no Preços da Voice API página na seção “Recursos programáveis”.

Como funciona

Normalmente, o ASR é usado em conjunto com uma mensagem de áudio reproduzida para o usuário. A mensagem pode ser uma arquivo de áudio ou Conversão de texto em fala, ou uma combinação de ambos executados sequencialmente. Para ativar o ASR, o NCCO deve conter um input ação com parâmetros de fala especificados.

Exemplo de NCCO

[
  {
    "action": "talk",
    "text": "Hello!"
  },
  {
    "action": "talk",
    "text": "Please tell us, how can we help you today?",
    "bargeIn": true
  },
  {
    "eventUrl": ["https://api.example.com/callbacks/events"],
    "eventMethod": "POST",
    "action": "input",
    "type": ["speech"],
    "speech": {
      "provider": "google",
      "providerOptions": {
        "language_code": "en-US",
        "speech_contexts": [
          {
            "phrases": ["hello", "world", "speech recognition"],
            "boost": 10.0
          }
        ]
      }
    }
  }
]

O Guia de Referência da NCCO contém informações sobre todos os parâmetros possíveis que podem ser utilizados em conjunto com o ASR input Ação da NCCO.

Tipo de entrada

Conjunto type como speech apenas para entrada por voz, ou [ "dtmf", "speech" ] para aceitar tanto a fala quanto DTMF.

Provedor e opções de provedor

Ao usar a entrada por voz, você pode escolher explicitamente qual provedor de conversão de voz em texto a Vonage utilizará, configurando provider. O único valor permitido é google. Se você não definir provider, a Vonage utiliza o comportamento padrão.

Exemplo speech objeto com providerOptions:

{
  "speech": {
    "provider": "google",
    "providerOptions": {
      "language_code": "en-US",
      "speech_contexts": [
        {
          "phrases": ["hello", "world", "speech recognition"],
          "boost": 10.0
        }
      ]
    }
  }
}

Uso providerOptions para passar a configuração de conversão de fala em texto específica do provedor. Ao usar providerOptions, as chaves e os valores em providerOptions são determinados pelo provedor escolhido. Para mais detalhes, consulte a documentação sobre Google sobre como especificá-los dentro de providerOptions.

Se você omitir provider, você pode omitir providerOptions também. Se você definir provider, incluem providerOptions (pode ser um objeto vazio) {} ou null).

Importante: A Vonage impõe algumas limitações a providerOptions. No momento, só é possível definir certos model valores em providerOptions, embora a Vonage utilize um modelo padrão quando você não especifica nenhum.

Suporte ao modelo

A Vonage oferece suporte aos seguintes recursos model valores em providerOptions:

Provedor Compatível model valores Padrão model
Google latest_long, latest_short, command_and_search, phone_call, default, medical_conversation, medical_dictation, telephony, telephony_short default

Idioma (antigo)

O idioma esperado da fala do usuário deve ser especificado como o language parâmetro (en-US (por padrão).

Ao usar provider e providerOptions, os idiomas e formatos de idioma suportados são determinados pelo provedor escolhido. Para mais detalhes, consulte a documentação de Google (language_code) sobre como especificá-los dentro de providerOptions.

Idiomas suportados

Ao usar provider e providerOptions, os idiomas e formatos de idioma suportados são determinados pelo provedor escolhido. Para mais detalhes, consulte a documentação de Google (language_code) sobre como especificá-los dentro de providerOptions.

Idioma {filter} Código
Africâner (África do Sul) af-ZA
Albanês (Albânia) sq-AL
Amárico (Etiópia) am-ET
Árabe (Argélia) ar-DZ
Árabe (Bahrein) ar-BH
Árabe (Egito) ar-EG
Árabe (Iraque) ar-IQ
Árabe (Israel) ar-IL
Árabe (Jordânia) ar-JO
Árabe (Kuwait) ar-KW
Árabe (Líbano) ar-LB
Árabe (Marrocos) ar-MA
Árabe (Omã) ar-OM
Árabe (Catar) ar-QA
Árabe (Arábia Saudita) ar-SA
Árabe (Estado da Palestina) ar-PS
Árabe (Tunísia) ar-TN
Árabe (Emirados Árabes Unidos) ar-AE
Armênio (Armênia) hy-AM
Azerbaijano (Azerbaijão) az-AZ
Básquico (Espanha) eu-ES
Bengali (Bangladesh) bn-BD
Bengali (Índia) bn-IN
Búlgaro (Bulgária) bg-BG
Birmanês (Mianmar) my-MM
Catalão (Espanha) ca-ES
Chinês, cantonês (tradicional, Hong Kong) yue-hant-HK
Chinês, mandarim (simplificado, China) zh (cmn-hans-cn)
Chinês, mandarim (tradicional, Taiwan) zh-TW (cmn-hant-TW)
Croata (Croácia) hr-HR
Tcheco (República Tcheca) cs-CZ
Dinamarquês (Dinamarca) da-DK
Holandês (Bélgica) nl-BE
Holandês (Países Baixos) nl-NL
Inglês (Austrália) en-AU
Inglês (Canadá) en-CA
Inglês (Gana) en-GH
Inglês (Índia) en-IN
Inglês (Irlanda) en-IE
Inglês (Quênia) en-KE
Inglês (Nova Zelândia) en-NZ
Inglês (Nigéria) en-NG
Inglês (Filipinas) en-PH
Inglês (Cingapura) en-SG
Inglês (África do Sul) en-ZA
Inglês (Tanzânia) en-TZ
Inglês (Reino Unido) en-GB
Inglês (Estados Unidos) en-US
Estoniano (Estônia) et-EE
Filipino fil-PH
Finlandês (Finlândia) fi-FI
Francês (Canadá) fr-CA
Francês (França) fr-FR
galego (Espanha) gl-ES
Georgiano (Geórgia) ka-GE
Alemão (Alemanha) de-DE
Grego (Grécia) el-GR
Gujarati (Índia) gu-IN
Hebraico (Israel) he-IL
Hindi (Índia) hi-IN
Húngaro (Hungria) hu-HU
Islandês (Islândia) is-IS
Indonésio (Indonésia) id-ID
Italiano (Itália) it-IT
Japonês (Japão) ja-JP
Javanês (Indonésia) jv-ID
Kannada (Índia) kn-IN
Khmer (Camboja) km-KH
Coreano (Coreia do Sul) ko-KR
Laos (Laos) lo-LA
Letão (Letônia) lv-LV
Lituano (Lituânia) lt-LT
Macedônio (Macedônia do Norte) mk-MK
Malaio (Malásia) ms-MY
Malayalam (Índia) ml-IN
Marata (Índia) mr-IN
Mongol (Mongólia) mn-MN
Nepalês (Nepal) ne-NP
Norueguês Bokmål (Noruega) nb-NO
Persa (Irã) fa-IR
Polonês (Polônia) pl-PL
Português (Brasil) pt-BR
Português (Portugal) pt-PT
Punjabi (Gurmukhi, Índia) pa-guru-IN
Romeno (Romênia) ro-RO
Russo (Rússia) ru-RU
Sérvio (Sérvia) sr-RS
Cingalês (Sri Lanka) si-LK
Eslovaco (Eslováquia) sk-SK
Esloveno (Eslovênia) sl-SI
Espanhol (Argentina) es-AR
Espanhol (Bolívia) es-BO
Espanhol (Chile) es-CL
Espanhol (Colômbia) es-CO
Espanhol (Costa Rica) es-CR
Espanhol (República Dominicana) es-DO
Espanhol (Equador) es-EC
Espanhol (El Salvador) es-SV
Espanhol (Guatemala) es-GT
Espanhol (Honduras) es-HN
Espanhol (México) es-MX
Espanhol (Nicarágua) es-NI
Espanhol (Panamá) es-PA
Espanhol (Paraguai) es-PY
Espanhol (Peru) es-PE
Espanhol (Porto Rico) es-PR
Espanhol (Espanha) es-ES
Espanhol (Estados Unidos) es-US
Espanhol (Uruguai) es-UY
Espanhol (Venezuela) es-VE
Sundanês (Indonésia) su-ID
Suaili (Quênia) sw-KE
Suaili (Tanzânia) sw-TZ
Sueco (Suécia) sv-SE
Tâmil (Índia) ta-IN
Tâmil (Malásia) ta-MY
Tâmil (Cingapura) ta-SG
Tâmil (Sri Lanka) ta-LK
Telugu (Índia) te-IN
Tailandês (Tailândia) th-TH
Turco (Turquia) tr-TR
Ucraniano (Ucrânia) uk-UA
Urdu (Índia) ur-IN
Urdu (Paquistão) ur-PK
Uzbeque (Uzbequistão) uz-UZ
Vietnamita (Vietnã) vi-VN
Zulu (África do Sul) zu-ZA

Contexto (antigo)

Algumas dicas podem ser fornecidas por meio do context parâmetro de matriz para melhorar a qualidade do reconhecimento. Os valores definidos podem ser as palavras ou frases esperadas do usuário, por exemplo, ['one', 'two', 'three'] ou ['support', 'order starship'].

Ao usar provider e providerOptions, a configuração desse parâmetro é determinada pelo provedor escolhido. Para mais detalhes, consulte a documentação de Google (speech_contexts[]) sobre como especificá-lo dentro de providerOptions.

Intrometer-se

Se o usuário não estiver ligando pela primeira vez, ele talvez já saiba qual pergunta fazer, de modo que pode começar a falar antes mesmo de a mensagem de áudio terminar. Para dar suporte a isso, bargeIn parâmetro do TTS (ou stream - (seja qual for a ação utilizada para a mensagem) deve ser ativada.

Recomenda-se que a mensagem inicial de TTS/áudio seja uma breve saudação inicial, sem ativar o bargeIn opção para melhorar a experiência do usuário. Se bargeIn Se estiver ativado para a saudação inicial, o usuário pode interrompê-lo inadvertidamente sem sequer ouvir o aviso, já que o ruído de fundo pode ser interpretado pelo aplicativo como uma interação ativa nesses primeiros momentos.

Salvar áudio

O áudio da fala pode ser armazenado, se desejado. Para obter a gravação, o saveAudio Se o parâmetro tiver que ser definido, então o recording_url será incluído na carga útil da solicitação de retorno de chamada. Isso pode ser útil para comparar a transcrição com o áudio original. Use o Baixar uma gravação trecho de código para baixar o áudio.

Exemplo de carga útil de evento

Assim que o NCCO input Quando a ação for concluída, o callback de entrada será enviado:

{
  "speech": {
    "recording_url": "https://api-us.nexmo.com/v1/files/ee94a327-ab6b-4bef-86bf-cadca33343e9",
    "timeout_reason": "end_on_silence_timeout",
    "results": [
      {
        "confidence": "1.0",
        "text": "one two three four five six seven eight nine ten"
      }
    ]
  },
  "dtmf": {
    "digits": null,
    "timed_out": false
  },
  "uuid": "529aa8f0-0ad8-42b0-ad61-b76dca18bb52",
  "conversation_uuid": "CON-7347b08d-5f51-478f-bfb2-e8c3fd39509f",
  "timestamp": "2020-02-07T11:42:40.933Z"
}

No corpo da resposta, espera-se um novo NCCO, contendo as próximas ações do fluxo da chamada com base na lógica do aplicativo e nas entradas do usuário (speech.results.text). Veja também Referência sobre Webhooks para mais detalhes.