Detección de palabras clave y alternativas de palabras

El servicio IBM Watson® Speech to Text puede identificar palabras clave especificadas por el usuario en sus resultados de transcripción. También puede sugerir palabras alternativas que sean acústicamente similares a las palabras de una transcripción. En ambos casos, las palabras clave y alternativas a palabras deben cumplir un nivel de confianza especificado por el usuario.

Detección de palabras clave

Los parámetros keywords y keywords_threshold solo están soportados con modelos de generación anterior, no con modelos de próxima generación.

La característica de detección de palabra clave detecta las series especificadas en una transcripción. El servicio puede detectar la misma palabra clave varias veces e informar de cada aparición. El servicio solo detecta las palabras clave en los resultados finales, no en los resultados provisionales. De forma predeterminada, el servicio no realiza la detección de palabras clave.

Para utilizar la detección de palabras clave, debe especificar los siguientes parámetros:

  • Utilice el parámetro keywords para especificar una matriz de las series que se van a detectar. El servicio no detecta ninguna palabra clave si omite el parámetro o si especifica una matriz vacía. Una serie de palabra clave puede incluir más de una señal. Por ejemplo, la palabra clave Speech to Text tiene tres señales. La comparación de palabras clave no distingue entre mayúsculas y minúsculas, por lo que Speech to Text equivale a speech to text.

    En el caso de inglés de EE. UU., el servicio normaliza cada palabra clave para ajustar series habladas con series escritas. Por ejemplo, normaliza los números para que se ajusten a la forma en que se pronuncian, no a la forma en que se escriben. En el caso de otros idiomas, las palabras clave se deben especificar tal como se pronuncian.

  • Utilice el parámetro keywords_threshold para especificar una probabilidad comprendida entre 0,0 y 1,0 de que haya una coincidencia de palabras clave. El umbral indica el límite inferior del nivel de confianza que debe tener el servicio para que una palabra coincida con una palabra clave. Una palabra clave solo se detecta en la transcripción si su nivel de confianza es mayor o igual que el umbral especificado.

    La especificación de un umbral bajo puede producir potencialmente muchas coincidencias. Si especifica un umbral, también debe especificar una o varias palabras clave. Omita el parámetro para que no se devuelva ninguna coincidencia.

Se aplican los siguientes límites a la detección de palabras clave:

  • Puede detectar un máximo de 1000 palabras clave con una sola solicitud.
  • Una sola palabra clave puede tener una longitud máxima de 1024 caracteres. La longitud máxima efectiva para los idiomas de doble byte puede ser menor.
  • La mayoría de los servidores HTTP y proxies imponen un límite de 8 KB en los parámetros de una solicitud. La detección de un gran número de palabras clave o de muchas palabras clave largas puede superar este límite. Si necesita comparar más palabras clave, considere la posibilidad de utilizar una solicitud HTTP de varias partes.

La detección de palabras clave es necesaria para identificar palabras clave en una secuencia de audio. No se pueden identificar palabras clave procesando una transcripción final porque la transcripción representa los mejores resultados de decodificación del servicio para el audio de entrada. No incluye las señales con puntuaciones de confianza bajas que puedan representar una palabra de interés. Por lo tanto, es posible que la aplicación de herramientas de proceso de texto a una transcripción en el lado del cliente no identifique palabras clave. Se necesita una representación más rica de los resultados de la decodificación, y dicha representación solo está disponible en el servidor.

Resultados de la detección de palabras clave

El servicio devuelve los resultados en un campo keywords_result que es un elemento de la matriz results. El campo keywords_result es un diccionario, o una matriz asociativa, de propiedades enumerables. Cada propiedad se identifica mediante una palabra clave especificada e incluye una matriz de objetos. El servicio devuelve un elemento de la matriz para cada coincidencia que encuentra para la palabra clave. El objeto de cada coincidencia incluye los campos siguientes:

  • normalized_text es la palabra clave especificada normalizada con la frase hablada que coincide con el audio de entrada.
  • start_time es la hora de inicio en segundos de la coincidencia.
  • end_time es la hora de finalización en segundos de la coincidencia.
  • confidence es el nivel de confianza del servicio en que la coincidencia representa la palabra clave especificada. La confianza debe tener al menos el valor del umbral especificado para que se incluya en los resultados.

Una palabra clave para la que el servicio no encuentra coincidencias se omite de la matriz. Es posible que no se encuentre una palabra clave si

  • El audio simplemente no incluye la palabra clave. La ausencia de la palabra clave es la explicación más obvia.

  • El umbral definido es demasiado alto. Puede que el servicio identifique la palabra, pero con un nivel bajo de confianza, en cuyo caso omite la coincidencia de los resultados.

  • Una serie de palabra clave que contiene varias señales (por ejemplo, Speech to Text) se pronuncia demasiado bajo entre sus señales. Cuando el servicio transcribe el audio, divide la secuencia en una serie de bloques. Cada bloque representa una porción continua de audio que no tiene un intervalo de silencio que supera la mitad de un segundo. Crea en una matriz de objetos de resultados que consta de estos bloques.

    El servicio solo detecta una coincidencia de una palabra clave de varias señales si

    • Las señales de la palabra clave se encuentran en el mismo bloque.
    • Las señales son adyacentes o están separadas por un intervalo que no supera 0,1 segundo.

    En este último caso, un breve relleno o expresión no léxica, como "uhm" o "bien", puede estar entre dos señales de la palabra clave. En este caso, los modelos de la generación anterior pueden insertar un marcador de duda en esta posición de la transcripción. Los modelos de última generación incluyen la vacilación real en los resultados de la transcripción. Para más información, consulte Marcadores de vacilación y vacilación en el habla.

Ejemplo de detección de palabras clave

La siguiente solicitud de ejemplo establece el parámetro keywords en una matriz codificada por URL de tres series (colorado, tornado y tornadoes) y el parámetro keywords_threshold en 0.5:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

El servicio encuentra apariciones calificadas de colorado y tornadoes:

{
  "result_index": 0,
  "results": [
    {
      "keywords_result": {
        "colorado": [
          {
            "normalized_text": "Colorado",
            "start_time": 4.94,
            "confidence": 0.91,
            "end_time": 5.62
          }
        ],
        "tornadoes": [
          {
            "normalized_text": "tornadoes",
            "start_time": 1.52,
            "confidence": 1.0,
            "end_time": 2.15
          }
        ]
      },
      "alternatives": [
        {
          "confidence": 0.96,
          "transcript": "several tornadoes touch down as a line of
severe thunderstorms swept through Colorado on Sunday "
        }
      ],
      "final": true
    }
  ]
}

Alternativas a palabras

El parámetro word_alternatives_threshold solo está soportado con los modelos de generación anterior, no con los modelos de próxima generación.

La característica de alternativas de palabras (también conocida como Redes de confusión) informa de hipótesis para alternativas acústicamente similares para palabras del audio de entrada. Por ejemplo, la palabra Austin puede ser la mejor hipótesis para una palabra del audio. Pero la palabra Boston es otra hipótesis posible en el mismo intervalo de tiempo. Las hipótesis comparten una hora de inicio y de finalización comunes, pero tienen distintas ortografías y generalmente distintas puntuaciones de confianza.

De forma predeterminada, el servicio no indica alternativas a palabras. Para indicar que desea recibir hipótesis alternativas, utilice el parámetro word_alternatives_threshold para especificar una probabilidad comprendida entre 0,0 y 1,0. El umbral indica el límite inferior del nivel de confianza que debe tener el servicio en una hipótesis para que la devuelva como una alternativa a una palabra. Solo se devuelve una hipótesis si su nivel de confianza es mayor o igual que el umbral especificado.

Se puede considerar que las alternativas a palabras constituyen una línea de tiempo para una transcripción dividida en intervalos más pequeños, o bandejas. Cada bandeja puede tener una o varias hipótesis con distintas ortografías y diferentes niveles de confianza. El parámetro word_alternatives_threshold controla la densidad de los resultados que devuelve el servicio. La especificación de un umbral bajo puede producir potencialmente muchas hipótesis.

Resultados de alternativas a palabras

El servicio devuelve los resultados en un campo word_alternatives que es un elemento de la matriz results. El campo word_alternatives es una matriz de objetos, cada uno de los cuales proporciona los campos siguientes para una palabra alternativa:

  • start_time indica la hora en segundos en que comienza la palabra para la que se devuelven hipótesis en el audio de entrada.
  • end_time indica la hora en segundos en que finaliza la palabra para la que se devuelven hipótesis en el audio de entrada.
  • alternatives es una matriz de objetos de hipótesis. Cada objeto incluye un valor de confidence que indica la puntuación de confianza del servicio para la hipótesis y un valor word que identifica la hipótesis. La confianza debe tener al menos el valor del umbral especificado para que se incluya en los resultados. El servicio ordena las alternativas por nivel de confianza.

Ejemplos de alternativas a palabras

En la siguiente solicitud de ejemplo se especifica un valor de word_alternatives_threshold bastante bajo de 0.10. El audio de entrada simple incluye palabras con homónimos comunes y diferentes interpretaciones acústicas posibles.

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

Debido al bajo umbral, el servicio devuelve varias hipótesis y puntuaciones de confianza para algunas de las palabras, junto con los tiempos de inicio y de finalización de todas las palabras. La transcripción final reconoce correctamente el audio de entrada.

{
   "result_index": 0,
   "results": [
      {
         "final": true,
         "alternatives": [
            {
               "transcript": "yes I ate that tuna ",
               "confidence": 0.82
            }
         ],
         "word_alternatives": [
            {
               "start_time": 0.0,
               "end_time": 0.31,
               "alternatives": [
                  {
                     "word": "yes",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.31,
               "end_time": 0.46,
               "alternatives": [
                  {
                     "word": "I",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.46,
               "end_time": 0.63,
               "alternatives": [
                  {
                     "word": "ate",
                     "confidence": 0.89
                  },
                  {
                     "word": "eat",
                     "confidence": 0.11
                  }
               ]
            },
            {
               "start_time": 0.63,
               "end_time": 0.77,
               "alternatives": [
                  {
                     "word": "that",
                     "confidence": 0.72
                  },
                  {
                     "word": "the",
                     "confidence": 0.27
                  }
               ]
            },
            {
               "start_time": 0.77,
               "end_time": 1.2,
               "alternatives": [
                  {
                     "word": "tuna",
                     "confidence": 0.94
                  }
               ]
            }
         ]
      }
   ]
}