Mejora los resultados de la transcripción con la adaptación de modelos

La exactitud de los resultados de transcripción que obtienes de Cloud Speech-to-Text a través de la adaptación de voz se puede mejorar. La adaptación de modelos permite especificar palabras y frases que Cloud STT reconocerá con mayor frecuencia en los datos de audio que otras alternativas que se podrían sugerir de otro modo. La adaptación de modelos es útil, en particular, para mejorar la exactitud de la transcripción en los casos de uso que se indican a continuación:

  • El audio contiene palabras o frases que suelen aparecer con frecuencia.
  • El audio es probable que contenga palabras poco comunes, como nombres propios, o palabras que no existen en general.
  • El audio contiene ruido o no se oye con claridad.

Antes de leer este documento, consulta la Introducción a la adaptación de modelos con el objetivo de obtener una descripción general de cómo se ejecuta esta función. Para obtener información sobre los límites de frases y caracteres por solicitud de adaptación de modelos, consulta Cuotas y límites.

Muestra de código

La adaptación del modelo es un parámetro de configuración opcional de Cloud STT que puedes usar para personalizar los resultados de 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 la siguiente muestra de código, se indica cómo mejorar la exactitud de la transcripción con un recurso SpeechAdaptation: PhraseSet, CustomClass y mejora de la adaptación de modelos. Para usar un PhraseSet o una CustomClass en solicitudes futuras, toma nota de su recurso name, que se muestra en la respuesta cuando creas el recurso.

Para obtener una lista de las clases precompiladas disponibles para tu idioma, consulta Tokens de clases compatibles.

Python

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

Para autenticarte en Cloud STT, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para 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}")