IBM Cloud Docs
Détection des mots clés et propositions de mots alternatifs

Détection des mots clés et propositions de mots alternatifs

Le service IBM Watson® Speech to Text peut identifier des mots clés spécifiés par l'utilisateur dans ses résultats de transcription. Il peut également suggérer des mots alternatifs qui sont acoustiquement similaires aux mots d'une transcription. Dans les deux cas, les mots clés et les mots alternatifs doivent répondre à un niveau de confiance défini par l'utilisateur.

Détection de mots clés (Keyword spotting)

Les paramètres keywords et keywords_threshold sont pris en charge uniquement avec des modèles de génération précédente, et non avec les modèles nouvelle génération.

La fonction de détection de mots clés (keyword spotting) détecte des chaînes spécifiées dans une transcription. Le service peut détecter le même mot clé plusieurs fois et signaler chaque occurrence. Le service détecte les mots clés uniquement dans les résultats finaux et non pas dans les résultats intermédiaires. Par défaut, le service ne détecte pas les mots clés.

Pour utiliser la détection de mots clés, vous devez spécifier les deux paramètres suivants :

  • Utilisez le paramètre keywords pour indiquer un tableau de chaînes à détecter. Le service ne détecte pas les mots clés si vous omettez ce paramètre ou indiquez un tableau vide. Une chaîne de mots clés peut inclure plusieurs sèmes. Par exemple, le mot clé Speech to Text comporte trois sèmes. La fonction de mise en correspondance de mots clés (Keyword matching) est insensible à la casse, par conséquent, Speech to Text équivaut en fait à speech to text.

    Pour l'anglais américain, le service normalise chaque mot clé pour établir une correspondance entre mots parlés et chaînes écrites. Par exemple, il normalise les nombres pour mettre en corrélation leur prononciation par rapport à leur écriture. Pour d'autres langues, les mots clés doivent être spécifiés comme ils se prononcent.

  • Utilisez le paramètre keywords_threshold pour spécifier une probabilité entre 0,0 et 1,0 pour une occurrence de mot clé. Le seuil indique la limite inférieure du niveau de confiance que le service doit avoir pour qu'un mot corresponde au mot clé. Un mot clé est détecté dans la transcription uniquement si son niveau de confiance est supérieur ou égal au seuil spécifié.

    La spécification d'un seuil faible peut produire un grand nombre d'occurrences. Si vous spécifiez un seuil, vous devez également indiquer un ou plusieurs mots clés. Omettez ce paramètre pour qu'aucune occurrence ne soit renvoyée.

Les limites suivantes s'appliquent à la fonction de détection de mots clés :

  • Vous pouvez détecter jusqu'à 1000 mots clés maximum dans une seule demande.
  • Un seul mot clé peut avoir une longueur maximale de 1 024 caractères. La longueur effective maximale pour les langues codées sur deux octets peut être plus courte.
  • La plupart des serveurs HTTP et des proxy imposent une limite de 8 ko sur les paramètres d'une demande. La détection d'un très grand nombre de mots clés ou de nombreux mots clés longs peut dépasser cette limite. Si vous devez faire correspondre davantage de mots clés, pensez à utiliser une demande HTTP multiparties.

La détection de mots clés est nécessaire pour identifier des mots clés dans un flux audio. Vous ne pouvez pas identifier de mots clés en traitant une transcription finale car cette transcription représente les meilleurs résultats de décodage du service pour l'entrée audio. Elle n'inclut pas les sèmes avec des cotes de confiance plus faibles pouvant représenter un mot qui vous intéresse. Ainsi, l'application d'outils de traitement de texte à une transcription côté client risque de ne pas identifier les mots clés. Une représentation enrichie des résultats de décodage est nécessaire, et cette représentation n'est disponible qu'au niveau du serveur.

Résultats de la détection de mots clés

Le service renvoie les résultats dans une zone keywords_result correspondant à un élément du tableau results. La zone keywords_result correspond à un dictionnaire ou un tableau associatif, de propriétés dénombrables. Chaque propriété est identifiée par un mot clé indiqué et comprend un tableau d'objets. Le service renvoie un élément du tableau pour chaque occurrence du mot clé qu'il a détectée. L'objet de chaque occurrence comprend les zones suivantes :

  • normalized_text est le mot clé normalisé dans l'expression parlée concordante dans l'entrée audio.
  • start_time est le début en secondes de l'occurrence.
  • end_time est la fin en secondes de l'occurrence.
  • confidence est le niveau de confiance du service pour que l'occurrence représente le mot clé spécifié. Cette cote doit être au moins équivalente au seuil indiqué pour figurer dans les résultats.

Un mot clé dont le service ne détecte aucune occurrence est omis dans le tableau. Il est possible de ne pas détecter un mot clé dans les cas suivants :

  • Le mot clé ne figure tout simplement pas dans l'audio. L'absence du mot clé est l'explication la plus plausible.

  • La valeur du seuil est trop élevée. Le service peut identifier le mot clé mais à un niveau de confiance moins élevé, auquel cas il omet l'occurrence dans les résultats.

  • Une chaîne de mots clés contenant plusieurs sèmes (par exemple, Speech to Text) est prononcée avec trop de moments de silence entre les différents sèmes qui la composent. Lorsque le service transcrit l'audio, il découpe le flux en une série de blocs. Chaque bloc représente un segment audio continu sans intervalle de silence dépassant une demi-seconde. Il construit un tableau des objets de résultat constitué de ces blocs.

    Le service fait correspondre un mot clé à plusieurs sèmes uniquement si

    • Les sèmes du mot clé figurent dans le même bloc.
    • Les sèmes sont adjacents ou séparés par un écart inférieur ou égal à 0,1 seconde.

    Dans ce dernier cas, un bref élément de remplissage ou un énoncé non lexical, tel que « euh » ou « eh bien », peut se trouver entre deux jetons du mot clé. Dans ce cas, les modèles de génération antérieure peuvent insérer un marqueur d'hésitation à cette position de la transcription. Les modèles de nouvelle génération intègrent l'hésitation réelle dans les résultats de transcription. Pour plus d'informations, voir les marqueurs d'hésitation et d'hésitation de la parole.

Exemple de détection de mots clés

L'exemple de requête suivant définit le paramètre keywords sur un tableau codé en URL de trois chaînes (colorado, tornado et tornadoes) et le paramètre keywords_threshold sur 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"

Le service recherche les occurrences de colorado et 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
    }
  ]
}

Autres propositions de mots (Word alternatives)

Le paramètre word_alternatives_threshold est pris en charge uniquement avec des modèles de génération précédente, et non avec les modèles nouvelle génération.

La fonction de remplacement de mots (également connue sous le nom de Réseaux de confusion) rapporte des hypothèses pour des solutions de remplacement acoustiquement similaires pour les mots de l'audio en entrée. Par exemple, le mot Austin peut être la meilleure hypothèse d'un mot dans l'audio. Mais le mot Boston est une autre hypothèse possible dans le même intervalle de temps. Les hypothèses partagent un début commun et une fin commune mais ont différentes orthographes et en général différentes cotes de confiance.

Par défaut, le service ne signale pas d'autres propositions de mots. Pour indiquer que vous voulez recevoir d'autres propositions d'hypothèses, utilisez le paramètre word_alternatives_threshold pour indiquer une probabilité entre 0,0 et 1,0. Le seuil indique la limite inférieure du niveau de confiance que le service doit avoir dans une hypothèse pour la renvoyer comme autre proposition de mot. Une hypothèse n'est renvoyée que si le niveau de confiance est supérieur ou égal au seuil spécifié.

Vous pouvez envisager les autres propositions de mots (word alternatives) comme une chronologie d'une transcription qui est découpée en intervalles plus petits ou en casiers. Chaque casier peut avoir une ou plusieurs hypothèses avec différentes orthographes et différents niveaux de confiance. Le paramètre word_alternatives_threshold contrôle la densité des résultats renvoyés par le service. La spécification d'un seuil faible peut produire un grand nombre d'hypothèses.

Résultats des autres propositions de mots

Le service renvoie les résultats dans une zone word_alternatives correspondant à un élément du tableau results. La zone word_alternatives est un tableau d'objets, dont chaque objet fournit les zones suivantes pour une autre proposition de mot :

  • start_time indique le début en secondes d'un mot pour lequel des hypothèses sont renvoyées dans l'entrée audio.
  • end_time indique la fin en secondes d'un mot pour lequel des hypothèses sont renvoyées dans l'entrée audio.
  • alternatives est un tableau d'objets d'hypothèse. Chaque objet comprend une zone confidence qui indique la cote de confiance de l'hypothèse du service et une zone word qui identifie l'hypothèse. Cette cote doit être au moins équivalente au seuil indiqué pour figurer dans les résultats. Le service classe les propositions par confiance.

Exemple d'autres propositions de mots

L'exemple de demande suivant indique un seuil word_alternatives_threshold assez bas correspondant à 0.10. L'entrée audio simple comprend des mots avec des homonymes communs et différentes interprétations acoustiques possibles.

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"

En raison du seuil bas, le service renvoie plusieurs hypothèses et cotes de confiance pour certains mots, ainsi que le début et la fin de tous les mots. La retranscription finale reconnaît correctement l'entrée audio.

{
   "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
                  }
               ]
            }
         ]
      }
   ]
}