Envoyer une requête de reconnaissance à l'aide de l'adaptation de modèle

Vous pouvez améliorer la précision des résultats de transcription obtenus avec Speech-to-Text grâce à l'adaptation de modèle. La fonctionnalité d'adaptation de modèle vous permet de spécifier des mots et/ou des expressions que Speech-to-Text doit reconnaître plus souvent dans vos données audio que d'autres alternatives, qui pourraient autrement être suggérées. L'adaptation de modèle est particulièrement utile pour améliorer la précision de la transcription dans les cas d'utilisation suivants :

  1. Vos données audio contiennent des mots ou des expressions qui sont susceptibles d'apparaître fréquemment.
  2. Vos données audio contiennent probablement des mots rares (tels que des noms propres) ou des mots qui n'existent pas dans le langage courant.
  3. Vos données audio contiennent du bruit ou manquent de clarté.

Pour plus d'informations sur l'utilisation de cette fonctionnalité, consultez la page Améliorer les résultats de transcription grâce à l'adaptation de modèle. Pour en savoir plus sur les limites de nombre d'expressions et de caractères par requête d'adaptation de modèle, consultez la page Quotas et limites. Certains modèles ne sont pas compatibles avec l'adaptation vocale. Consultez la page Langues acceptées pour voir les modèles compatibles avec l'adaptation.

Exemple de code

L'adaptation vocale est une configuration facultative de Speech-to-Text qui vous permet de personnaliser les résultats de transcription en fonction de vos besoins. Pour en savoir plus sur la configuration du corps de la requête de reconnaissance, consultez la documentation sur RecognitionConfig.

L'exemple de code suivant montre comment améliorer la précision de la transcription à l'aide d'une ressource SpeechAdaptation : PhraseSet, CustomClass, et amélioration de l'adaptation de modèle. Pour utiliser un élément PhraseSet ou CustomClass dans les futures requêtes, consignez sa ressource name, qui est renvoyée dans la réponse lorsque vous créez la ressource.

Pour obtenir la liste des classes prédéfinies disponibles pour votre langue, consultez la section Jetons de classe compatibles.

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Speech-to-Text, consultez la page Bibliothèques clientes Speech-to-Text. Pour en savoir plus, consultez la documentation de référence de l'API Speech-to-Text en langage Python.

Pour vous authentifier auprès de Speech-to-Text, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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}")