Personalización

La personalización ayuda a libgspeech a reconocer palabras o frases específicas con más frecuencia que otras opciones que podrían sugerirse. En este documento, se explica el proceso de aumentar la probabilidad de que libgspeech reconozca las palabras o frases que necesitas cuando transcribe tus datos de audio.

Para personalizar el modelo de reconocimiento a determinadas palabras o frases, pásalas como phrases dentro del campo phrase_sets de un objeto SpeechAdaptation. Asigna el objeto SpeechAdaptation al campo adaptation del objeto RecognitionConfig en tu solicitud:

adaptation: {
  phrase_sets {
    phrases: "weather is hot"
    phrases: "weather is cold"
}

Usa clases para sesgar el modelo

Las clases representan conceptos comunes que se producen en el lenguaje natural, como valores numéricos y fechas del calendario. Mediante una clase, puedes mejorar la exactitud de la transcripción para grupos grandes de palabras que se asignan a un concepto común, pero que no siempre incluyen palabras o frases idénticas.

Por ejemplo, supongamos que tus datos de audio incluyen grabaciones de personas que dicen su dirección. Podías tener una grabación de audio de alguien que dice: “Mi casa está en 123 Main Street, la cuarta casa a la izquierda”. En este caso, deseas que se reconozca la primera secuencia de números (“123”) como una dirección en lugar de un número ordinal (“centésimo vigésimo tercero”) en Speech-to-Text. Sin embargo, no todas las personas viven en “123 Main Street”. No es práctico enumerar todas las direcciones posibles en las frases. En su lugar, puedes usar una clase para indicar que un número de calle debe reconocerse sin importar cuál sea el número.

Para usar los tokens de clase, inclúyelos en las frases de adaptación de voz. Puedes usar clases como elementos independientes en el array de frases o incorporarlas en frases de varias palabras más largas. Por ejemplo, para mejorar la transcripción de los números de dirección de tu audio de origen, usa la clase $ADDRESSNUM. Puedes indicar un número de dirección en una frase más larga mediante la inclusión del token de clase en una string: “mi dirección es $ADDRESSNUM”. Sin embargo, esta frase no será útil en los casos en los que el audio contenga una frase similar, pero no idéntica, como: “Estoy en 123 Main Street”. Para facilitar el reconocimiento de frases similares, es importante incluir, además, el token de clase de forma independiente:

adaptation: {
  phrase_sets {
    phrases: "my address is $ADDRESSNUM"
    phrases: "$ADDRESSNUM"
  }
}

Usa clases personalizadas para sesgar el modelo

Una clase personalizada es una lista personalizada de elementos o valores relacionados.

Usa clases personalizadas predefinidas

Google proporciona varias clases personalizadas predefinidas (como contacts o navigation) que recomendamos usar con Speech-to-Text integrado en el dispositivo. Es probable que estas clases personalizadas representen frases que tu aplicación podría tener y brinden una mayor exactitud de reconocimiento que tus clases personalizadas.

Las clases personalizadas predefinidas se agrupan en dos categorías a las que debes hacer referencia de manera diferente en tus solicitudes:

  • Clases personalizadas para las que necesitas proporcionar phrases y items, por ejemplo, contacts.

  • Clases personalizadas a las que hace referencia custom_class_id solo, por ejemplo, navigation.

Para usar una clase personalizada que requiera phrases y items, crea un objeto CustomClass que incluya cada valor en items y haz referencia a esta clase por su custom_class_id en tu phrases, por ejemplo:

adaptation: {
  custom_classes {
    custom_class_id: "contacts"
    items: "Asia"
    items: "Alex"
    items: "Nuno Pereira"
  }
  phrase_sets {
    phrases: "call ${contacts}"
  }
}

No es necesario que proporciones phrases y items para los comandos de navigation. En ese caso, la lista phrases es una lista proporcionada por Google de las frases más comunes que es probable que los usuarios usen en ese contexto (por ejemplo, “tomar la autopista”).

adaptation: {
  custom_classes {
    custom_class_id: "navigation"
  }
}

Usa tus propias clases personalizadas

Es posible crear clases personalizadas si tienes una necesidad empresarial específica que no las satisfacen las clases personalizadas predefinidas. Por ejemplo, se recomienda transcribir datos de audio que probablemente incluyan el nombre de cualquiera de los cientos de restaurantes regionales. Los nombres de los restaurantes son relativamente poco frecuentes en el lenguaje general y es menos probable que el modelo de reconocimiento los elija como respuesta “correcta”, a menos que especifiques los nombres en una clase personalizada. Por ejemplo:

adaptation: {
  custom_classes {
    custom_class_id: "restaurants"
    items: "sushido"
    items: "taneda sushi"
    items: "altura"
  }
  phrase_sets {
    phrases: "visit restaurants like ${restaurants}"
  }
}