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
- Asegúrate de haberte registrado en una cuenta de Google Cloud y creado un proyecto.
- Ve a Speech en la consola de Google Cloud.
- Habilita la API si aún no está habilitada.
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.
Visita la página de transcripciones y haz clic en Transcripción nueva.
Abre el menú desplegable Lugar de trabajo y haz clic en Nuevo lugar de trabajo para crear un lugar de trabajo de transcripción.
Desde la barra lateral de navegación Crear un lugar de trabajo nuevo, haz clic en Explorar.
Haz clic para crear un bucket nuevo.
Ingresa un nombre para tu bucket y haz clic en Continuar.
Haz clic en Crear para crear un bucket de Cloud Storage.
Una vez que se haya creado el bucket, haz clic en Seleccionar para seleccionarlo.
Haz clic en Crear para terminar de crear tu lugar de trabajo para la consola de la API de Speech-to-Text V2.
Realiza una transcripción en tu audio real.
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).
Haz clic en Continuar para ir a Opciones de transcripción.
Selecciona el lenguaje de voz que planeas usar para el reconocimiento con Chirp de tu reconocedor creado previamente.
En el menú desplegable del modelo, selecciona Chirp - Modelo de voz universal.
En el menú desplegable Reconocimiento, selecciona el reconocedor que creaste recientemente.
Haz clic en Enviar para ejecutar tu primera solicitud de reconocimiento mediante Chirp.
Visualiza el resultado de la transcripción de Chirp 2.
En la página Transcripciones, haz clic en el nombre de la transcripción para ver su resultado.
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.
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
Console
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
¿Qué sigue?
- Practica transcribir archivos de audio cortos.
- Obtén más información sobre cómo transcribir audio con transmisión continua.
- Obtén información sobre cómo transcribir archivos de audio largos.
- Para mejorar el rendimiento y la exactitud, así como ver otras sugerencias, consulta la documentación de prácticas recomendadas.