Chirp 2: Precisión multilingüe mejorada

Chirp 2 es la generación más reciente de los modelos específicos de ASR multilingües de Google, diseñados para satisfacer las necesidades de los usuarios en función de los comentarios y la experiencia. Mejora el modelo original de Chirp en exactitud y velocidad, y se expande a funciones nuevas clave, como marcas de tiempo a nivel de palabras, adaptación de modelos y traducción de voz.

Prueba un notebook de Colab Ver notebook en GitHub

Detalles del modelo

Chirp 2 está disponible exclusivamente en la API de Speech-to-Text v2.

Identificadores de modelo

Puedes usar Chirp 2 como cualquier otro modelo. Para ello, especifica el identificador de modelo adecuado en tu solicitud de reconocimiento cuando uses la API o el nombre del modelo en la consola de Google Cloud.

Modelo Identificador del modelo
Chirp 2 chirp_2

Métodos de la API

Como Chirp 2 está disponible exclusivamente en la API de Speech-to-Text v2, admite los siguientes métodos de reconocimiento:

Modelo Identificador del modelo Idiomas admitidos
V2 Speech.StreamingRecognize (bueno para la transmisión y el audio en tiempo real) Limitada*
V2 Speech.Recognize (bueno para audio corto < 1 min) Al mismo nivel que Chirp
V2 Speech.BatchRecognize (bueno para audio largo de 1 minuto a 8 horas) Al mismo nivel que Chirp

*Puedes encontrar la lista más reciente de idiomas y funciones compatibles para cada modelo de transcripción con la API de Locations.

Disponibilidad regional

Chirp 2 es compatible con las siguientes regiones:

Zona de Google Cloud Preparación para el lanzamiento
us-central1 DG
europe-west4 DG
asia-southeast1 Vista previa privada

Puedes encontrar la lista más reciente de regiones, idiomas y funciones compatibles de Google Cloud para cada modelo de transcripción con la API de ubicaciones, como se explica aquí.

Disponibilidad de idiomas para la transcripción

Chirp 2 admite la transcripción en los métodos de reconocimiento StreamingRecognize, Recognize y BatchRecognize. Sin embargo, la compatibilidad con idiomas difiere según el método que se use. Específicamente, BatchRecognize ofrece la compatibilidad de idiomas más amplia. StreamingRecognize admite los siguientes idiomas:

Idioma Código BCP-47
Chino (simplificado, China) cmn-Hans-CN
Chino (tradicional, Taiwán) cmn-hant-tw
Chino, Cantonés (Tradicional Hong Kong) yue-Hant-HK
inglés (Australia) en-AU
Inglés (India) en-IN
Inglés (Reino Unido) en-GB
Inglés (Estados Unidos) en-US
Francés (Canadá) fr-CA
Francés (Francia) fr-FR
Alemán (Alemania) de-DE
Italiano (Italia) it-IT
Japonés (Japón) ja-JP
Portugués (Brasil) pt-BR
Español (España) es-ES
Español (Estados Unidos) es-US

Disponibilidad de idiomas para la traducción

Estos son los idiomas compatibles con la traducción de voz. Ten en cuenta que la compatibilidad de idiomas de Chirp 2 para la traducción no es simétrica. Esto significa que, si bien es posible que podamos traducir del idioma A al idioma B, es posible que la traducción del idioma B al idioma A no esté disponible. Los siguientes pares de idiomas son compatibles con la función de traducción de voz.

Para la traducción al inglés:

Fuente -> Idioma de destino Fuente -> Código de idioma de destino
Árabe (Egipto) -> Inglés ar-EG -> en-US
Árabe () -> Inglés ar-x-gulf -> en-US
Árabe (Levante) -> Inglés ar-x-levant -> en-US
Árabe (magrebí) -> Inglés ar-x-maghrebi -> en-US
Catalán (España) -> Inglés ca-ES -> en-US
Galés (Reino Unido) -> Inglés cy-GB -> en-US
Alemán (Alemania) -> Inglés de-DE -> en-US
Español (Latinoamérica) -> Inglés es-419 -> en-US
Español (España) -> Inglés es-ES -> en-US
Español (Estados Unidos) -> Inglés es-US -> en-US
Estonio (Estonia) -> Inglés et-EE -> en-US
Francés (Canadá) -> Inglés fr-CA -> en-US
Francés (Francia) -> Inglés fr-FR -> en-US
Persa (Irán) -> Inglés fa-IR -> en-US
Indonesio (Indonesia) -> Inglés id-ID -> en-US
Italiano (Italia) -> Inglés it-IT -> en-US
Japonés (Japón) -> Inglés ja-JP -> en-US
Letón (Letonia) -> Inglés lv-LV -> en-US
Mongol (Mongolia) -> Inglés mn-MN -> en-US
Holandés (Países Bajos) -> Inglés nl-NL -> en-US
Portugués (Brasil) -> Inglés pt-BR -> en-US
Ruso (Rusia) -> Inglés ru-RU -> en-US
Esloveno (Eslovenia) -> Inglés sl-SI -> en-US
Sueco (Suecia) -> Inglés sv-SE -> en-US
Tamil (India) -> Inglés ta-IN -> en-US
Turco (Turquía) -> Inglés tr-TR -> en-US
Chino (simplificado, China) -> Inglés zh-Hans-CN -> en-US

Para traducir del inglés:

Fuente -> Idioma de destino Fuente -> Código de idioma de destino
Inglés -> Árabe (Egipto) en-US -> ar-EG
Inglés -> Árabe () en-US -> ar-x-gulf
Inglés -> Árabe (Levante) en-US -> ar-x-levant
Inglés -> Árabe (magrebí) en-US -> ar-x-maghrebi
Inglés -> Catalán (España) en-US -> ca-ES
Inglés -> Galés (Reino Unido) en-US -> cy-GB
Inglés -> Alemán (Alemania) en-US -> de-DE
Inglés -> Estonio (Estonia) en-US -> et-EE
Inglés -> Persa (Irán) en-US -> fa-IR
Inglés -> Indonesio (Indonesia) en-US -> id-ID
Inglés -> Japonés (Japón) en-US -> ja-JP
Inglés -> Letón (Letonia) en-US -> lv-LV
Inglés -> Mongol (Mongolia) en-US -> mn-MN
Inglés -> Esloveno (Eslovenia) en-US -> sl-SI
Inglés -> Sueco (Suecia) en-US -> sv-SE
Inglés -> tamil (India) en-US -> ta-IN
Inglés -> Turco (Turquía) en-US -> tr-TR
Inglés -> Chino (simplificado, China) en-US -> zh-Hans-CN

Compatibilidad y limitaciones de funciones

Chirp 2 admite las siguientes funciones:

Atributo Descripción
Puntuación automática El modelo los genera automáticamente y se pueden inhabilitar de forma opcional.
Uso de mayúsculas automático El modelo los genera automáticamente y se pueden inhabilitar de forma opcional.
Adaptación de voz (polarización) Proporciona sugerencias al modelo en forma de palabras o frases simples para mejorar la precisión del reconocimiento de términos específicos o nombres propios. No se admiten tokens de clase ni clases personalizadas.
Tiempo de palabras (marcas de tiempo) El modelo los genera automáticamente y se pueden habilitar de forma opcional. Es posible que la calidad y la velocidad de la transcripción se degraden ligeramente.
Transcripción de audio independiente del idioma El modelo infiere automáticamente el idioma hablado en tu archivo de audio y transcribe en el idioma más frecuente.
Traducción específica del idioma El modelo traduce automáticamente del idioma hablado al idioma de destino.
Normalización forzada Si se define en el cuerpo de la solicitud, la API realizará reemplazos de cadenas en términos o frases específicos, lo que garantizará la coherencia en la transcripción.
Puntuaciones de confianza a nivel de palabra La API muestra un valor, pero no es realmente una puntuación de confianza. En el caso de la traducción, no se devuelven las puntuaciones de confianza.

Chirp 2 no admite las siguientes funciones:

Atributo Descripción
Diario No compatible
Reconocimiento de idioma No compatible
Filtro de lenguaje obsceno No compatible

Transcribe con Chirp 2

Descubre cómo usar Chirp 2 para tus necesidades de transcripción y traducción.

Realiza reconocimiento de voz en vivo

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_streaming_chirp2(
    audio_file: str
) -> cloud_speech.StreamingRecognizeResponse:
    """Transcribes audio from audio file stream using the Chirp 2 model of Google Cloud Speech-to-Text V2 API.

    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"

    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API V2 containing
        the transcription results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        content = f.read()

    # In practice, stream should be a generator yielding chunks of audio data
    chunk_length = len(content) // 5
    stream = [
        content[start : start + chunk_length]
        for start in range(0, len(content), chunk_length)
    ]
    audio_requests = (
        cloud_speech.StreamingRecognizeRequest(audio=audio) for audio in stream
    )

    recognition_config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="chirp_2",
    )
    streaming_config = cloud_speech.StreamingRecognitionConfig(
        config=recognition_config
    )
    config_request = cloud_speech.StreamingRecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        streaming_config=streaming_config,
    )

    def requests(config: cloud_speech.RecognitionConfig, audio: list) -> list:
        yield config
        yield from audio

    # Transcribes the audio into text
    responses_iterator = client.streaming_recognize(
        requests=requests(config_request, audio_requests)
    )
    responses = []
    for response in responses_iterator:
        responses.append(response)
        for result in response.results:
            print(f"Transcript: {result.alternatives[0].transcript}")

    return responses

Realiza reconocimiento de voz síncrono

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_sync_chirp2(
    audio_file: str
) -> cloud_speech.RecognizeResponse:
    """Transcribes an audio file using the Chirp 2 model of Google Cloud Speech-to-Text V2 API.
    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the transcription results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        audio_content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="chirp_2",
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        content=audio_content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

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

    return response

Realiza reconocimiento de voz por lotes

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_batch_chirp2(
    audio_uri: str,
) -> cloud_speech.BatchRecognizeResults:
    """Transcribes an audio file from a Google Cloud Storage URI using the Chirp 2 model of Google Cloud Speech-to-Text V2 API.
    Args:
        audio_uri (str): The Google Cloud Storage URI of the input audio file.
            E.g., gs://[BUCKET]/[FILE]
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the transcription results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="chirp_2",
    )

    file_metadata = cloud_speech.BatchRecognizeFileMetadata(uri=audio_uri)

    request = cloud_speech.BatchRecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        files=[file_metadata],
        recognition_output_config=cloud_speech.RecognitionOutputConfig(
            inline_response_config=cloud_speech.InlineOutputConfig(),
        ),
    )

    # Transcribes the audio into text
    operation = client.batch_recognize(request=request)

    print("Waiting for operation to complete...")
    response = operation.result(timeout=120)

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

    return response.results[audio_uri].transcript

Usa las funciones de Chirp 2

Explora cómo puedes usar las funciones más recientes con ejemplos de código:

Realiza una transcripción independiente del idioma

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_sync_chirp2_auto_detect_language(
    audio_file: str
) -> cloud_speech.RecognizeResponse:
    """Transcribes an audio file and auto-detect spoken language using Chirp 2.
    Please see https://cloud.google.com/speech-to-text/v2/docs/encoding for more
    information on which audio encodings are supported.
    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the transcription results.
    """
    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        audio_content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["auto"],  # Set language code to auto to detect language.
        model="chirp_2",
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        content=audio_content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

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

    return response

Realiza la traducción de voz

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def translate_sync_chirp2(
    audio_file: str
) -> cloud_speech.RecognizeResponse:
    """Translates an audio file using Chirp 2.
    Args:
        audio_file (str): Path to the local audio file to be translated.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the translated results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        audio_content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["fr-FR"],  # Set language code to targeted to detect language.
        translation_config=cloud_speech.TranslationConfig(target_language="fr-FR"), # Set target language code.
        model="chirp_2",
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        content=audio_content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

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

    return response

Habilita las marcas de tiempo a nivel de palabra

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_sync_chirp2_with_timestamps(
    audio_file: str
) -> cloud_speech.RecognizeResponse:
    """Transcribes an audio file using the Chirp 2 model of Google Cloud Speech-to-Text V2 API, providing word-level timestamps for each transcribed word. 
    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the transcription results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        audio_content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="chirp_2",
        features=cloud_speech.RecognitionFeatures(
            enable_word_time_offsets=True, # Enabling word-level timestamps
        )
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        content=audio_content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

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

    return response

Mejora la exactitud con la adaptación de modelos

import os

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech
from google.api_core.client_options import ClientOptions

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def transcribe_sync_chirp2_model_adaptation(
    audio_file: str
) -> cloud_speech.RecognizeResponse:
    """Transcribes an audio file using the Chirp 2 model with adaptation, improving accuracy for specific audio characteristics or vocabulary.
    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response from the Speech-to-Text API containing
        the transcription results.
    """

    # Instantiates a client
    client = SpeechClient(
        client_options=ClientOptions(
            api_endpoint="us-central1-speech.googleapis.com",
        )
    )

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        audio_content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="chirp_2",
        # Use model adaptation
        adaptation=cloud_speech.SpeechAdaptation(
          phrase_sets=[
              cloud_speech.SpeechAdaptation.AdaptationPhraseSet(
                  inline_phrase_set=cloud_speech.PhraseSet(phrases=[
                    {
                        "value": "alphabet",
                    },
                    {
                          "value": "cell phone service",
                    }
                  ])
              )
          ]
        )
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{PROJECT_ID}/locations/us-central1/recognizers/_",
        config=config,
        content=audio_content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

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

    return response

Usa Chirp 2 en la consola de Google Cloud

  1. Asegúrate de haberte registrado en una cuenta de Google Cloud y creado un proyecto.
  2. Ve a Speech en la consola de Google Cloud.
  3. Habilita la API si aún no está habilitada.
  4. Asegúrate de tener un lugar de trabajo de la consola de STT. Si aún no tienes uno, debes crear un lugar de trabajo.

    1. Visita la página de transcripciones y haz clic en Transcripción nueva.

    2. Abre el menú desplegable Lugar de trabajo y haz clic en Nuevo lugar de trabajo para crear un lugar de trabajo de transcripción.

    3. Desde la barra lateral de navegación Crear un lugar de trabajo nuevo, haz clic en Explorar.

    4. Haz clic para crear un bucket nuevo.

    5. Ingresa un nombre para tu bucket y haz clic en Continuar.

    6. Haz clic en Crear para crear un bucket de Cloud Storage.

    7. Una vez que se haya creado el bucket, haz clic en Seleccionar para seleccionarlo.

    8. Haz clic en Crear para terminar de crear tu lugar de trabajo para la consola de la API de Speech-to-Text V2.

  5. Realiza una transcripción en tu audio real.

    Captura de pantalla de la página de creación de la transcripción de Speech-to-Text, que muestra la selección o carga del archivo.

    En la página Nueva transcripción, selecciona el archivo de audio mediante la carga (Carga local) o especificando un archivo de Cloud Storage existente (Cloud Storage).

  6. Haz clic en Continuar para ir a Opciones de transcripción.

    Captura de pantalla de la página de creación de transcripciones de Speech-to-Text que muestra la selección de un modelo de Chirp y el envío de un trabajo de transcripción.
    1. Selecciona el lenguaje de voz que planeas usar para el reconocimiento con Chirp de tu reconocedor creado previamente.

    2. En el menú desplegable del modelo, selecciona Chirp - Modelo de voz universal.

    3. En el menú desplegable Reconocimiento, selecciona el reconocedor que creaste recientemente.

    4. Haz clic en Enviar para ejecutar tu primera solicitud de reconocimiento mediante Chirp.

  7. Visualiza el resultado de la transcripción de Chirp 2.

    1. En la página Transcripciones, haz clic en el nombre de la transcripción para ver su resultado.

    2. En la página Detalles de la transcripción, visualiza el resultado de la transcripción. También tienes la opción de reproducir el audio en el navegador.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

  1. Optional: Revoke the authentication credentials that you created, and delete the local credential file.

    gcloud auth application-default revoke
  2. Optional: Revoke credentials from the gcloud CLI.

    gcloud auth revoke

Console

  • In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  • In the project list, select the project that you want to delete, and then click Delete.
  • In the dialog, type the project ID, and then click Shut down to delete the project.
  • gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    ¿Qué sigue?