Mejorar los resultados de las transcripciones con la adaptación de modelos

Puedes mejorar la precisión de los resultados de las transcripciones que obtienes de Transcripción de voz de Cloud mediante la adaptación de modelos. La adaptación de modelos te permite especificar palabras y frases que Cloud STT reconocerá con más frecuencia en tus datos de audio que otras alternativas que, de otro modo, se habrían sugerido. La adaptación de modelos es especialmente útil para mejorar la precisión de la transcripción en los siguientes casos prácticos:

  • Tu audio contiene palabras o frases que es probable que aparezcan con frecuencia.
  • Es probable que tu audio contenga palabras poco frecuentes (como nombres propios) o palabras que no se usan de forma general.
  • El audio contiene ruido o no es muy claro.

Antes de leer este documento, consulta la introducción a la adaptación de modelos para obtener una descripción general de cómo funciona esta función. Para obtener información sobre los límites de frases y caracteres por solicitud de adaptación de modelo, consulta Cuotas y límites.

Código de ejemplo

La adaptación de modelos es una configuración opcional de Cloud STT que puedes usar para personalizar los resultados de la transcripción según tus necesidades. Consulta la documentación de RecognitionConfig para obtener más información sobre cómo configurar el cuerpo de la solicitud de reconocimiento.

En el siguiente ejemplo de código se muestra cómo mejorar la precisión de la transcripción mediante un recurso SpeechAdaptation: PhraseSet, CustomClass y aumento de la adaptación del modelo. Para usar un PhraseSet o un CustomClass en futuras solicitudes, anota su recurso name, que se devuelve en la respuesta cuando creas el recurso.

Para ver una lista de las clases precompiladas disponibles en tu idioma, consulta Tokens de clase admitidos.

Python

Para saber cómo instalar y usar la biblioteca de cliente de Cloud STT, consulta Bibliotecas de cliente de Cloud STT. Para obtener más información, consulta la documentación de referencia de la API Cloud STT Python.

Para autenticarte en Cloud STT, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import os

from google.cloud import speech_v1p1beta1 as speech

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


def transcribe_with_model_adaptation(
    audio_uri: str,
    custom_class_id: str,
    phrase_set_id: str,
) -> str:
    """Create `PhraseSet` and `CustomClasses` for custom item lists in input data.
    Args:
        audio_uri (str): The Cloud Storage URI of the input audio. e.g. gs://[BUCKET]/[FILE]
        custom_class_id (str): The unique ID of the custom class to create
        phrase_set_id (str): The unique ID of the PhraseSet to create.
    Returns:
        The transcript of the input audio.
    """
    # Specifies the location where the Speech API will be accessed.
    location = "global"

    # Audio object
    audio = speech.RecognitionAudio(uri=audio_uri)

    # Create the adaptation client
    adaptation_client = speech.AdaptationClient()

    # The parent resource where the custom class and phrase set will be created.
    parent = f"projects/{PROJECT_ID}/locations/{location}"

    # Create the custom class resource
    adaptation_client.create_custom_class(
        {
            "parent": parent,
            "custom_class_id": custom_class_id,
            "custom_class": {
                "items": [
                    {"value": "sushido"},
                    {"value": "altura"},
                    {"value": "taneda"},
                ]
            },
        }
    )
    custom_class_name = (
        f"projects/{PROJECT_ID}/locations/{location}/customClasses/{custom_class_id}"
    )
    # Create the phrase set resource
    phrase_set_response = adaptation_client.create_phrase_set(
        {
            "parent": parent,
            "phrase_set_id": phrase_set_id,
            "phrase_set": {
                "boost": 10,
                "phrases": [
                    {"value": f"Visit restaurants like ${{{custom_class_name}}}"}
                ],
            },
        }
    )
    phrase_set_name = phrase_set_response.name
    # The next section shows how to use the newly created custom
    # class and phrase set to send a transcription request with speech adaptation

    # Speech adaptation configuration
    speech_adaptation = speech.SpeechAdaptation(phrase_set_references=[phrase_set_name])

    # speech configuration object
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=24000,
        language_code="en-US",
        adaptation=speech_adaptation,
    )

    # Create the speech client
    speech_client = speech.SpeechClient()

    response = speech_client.recognize(config=config, audio=audio)

    for result in response.results:
        print(f"Transcript: {result.alternatives[0].transcript}")