Comprensión de audio (solo para hablar)

Puedes añadir audio a las peticiones de Gemini para realizar tareas que impliquen entender el contenido del audio incluido. En esta página se explica cómo añadir audio a tus solicitudes a Gemini en Vertex AI mediante laGoogle Cloud consola y la API de Vertex AI.

Modelos admitidos

En la siguiente tabla se enumeran los modelos que admiten la interpretación de audio:

Modelo Detalles del contenido multimedia Tipos MIME
Gemini 2.5 Flash-Lite
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.5 Flash con audio nativo de la API Live
  • Duración máxima de la conversación: Aproximadamente 10 minutos
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.0 Flash con la API Live
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • Número máximo de tokens por minuto (TPM):
    • EE. UU./Asia: 1,7 M
    • UE: 0,4 M
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.0 Flash con generación de imágenes
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • Número máximo de tokens por minuto (TPM):
    • EE. UU./Asia: 1,7 M
    • UE: 0,4 M
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.5 Pro
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.5 Flash
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.0 Flash
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • Número máximo de tokens por minuto (TPM):
    • EE. UU./Asia: 3,5 M
    • UE: 3,5 M
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm
Gemini 2.0 Flash-Lite
  • Duración máxima del audio por petición: Aproximadamente 8, 4 horas o hasta 1 millón de tokens
  • Número máximo de archivos de audio por petición: 1
  • Comprensión del habla para: Resumir, transcribir y traducir audio
  • Número máximo de tokens por minuto (TPM):
    • EE. UU./Asia: 3,5 M
    • UE: 3,5 M
  • audio/x-aac
  • audio/flac
  • audio/mp3
  • audio/m4a
  • audio/mpeg
  • audio/mpga
  • audio/mp4
  • audio/opus
  • audio/pcm
  • audio/wav
  • audio/webm

La métrica de cuota es generate_content_audio_input_per_base_model_id_and_resolution.

Para ver una lista de los idiomas disponibles en los modelos de Gemini, consulta la información sobre los modelos de Google. Para obtener más información sobre cómo diseñar peticiones multimodales, consulta Diseña peticiones multimodales. Si quieres usar Gemini directamente desde tus aplicaciones móviles y web, consulta los SDKs de cliente de lógica de IA de Firebase para aplicaciones Swift, Android, web, Flutter y Unity.

Añadir audio a una solicitud

Puedes añadir archivos de audio a tus peticiones a Gemini.

Audio único

A continuación, te mostramos cómo usar un archivo de audio para resumir un pódcast.

Consola

Para enviar una petición multimodal mediante la Google Cloud consola, sigue estos pasos:

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en Crear petición.

  3. Opcional: Configura el modelo y los parámetros:

    • Modelo: selecciona un modelo.
  4. Opcional: Para configurar parámetros avanzados, haga clic en Avanzado y configure lo siguiente:

    Haz clic para desplegar las configuraciones avanzadas

    • Top-K: usa el control deslizante o el cuadro de texto para introducir un valor de top-K.

      Top-K cambia la forma en que el modelo selecciona los tokens de salida. Un valor de K superior de 1 significa que el siguiente token seleccionado es el más probable de todos los tokens del vocabulario del modelo (también llamado decodificación voraz), mientras que un valor de K superior de 3 significa que el siguiente token se selecciona de entre los tres tokens más probables mediante la temperatura.

      En cada paso de selección de tokens, se muestrean los K tokens principales con las probabilidades más altas. Después, los tokens se filtran en función de la probabilidad P máxima y el token final se selecciona mediante un muestreo de temperatura.

      Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias.

    • Top-P: usa el control deslizante o el cuadro de texto para introducir un valor de top-P. Los tokens se seleccionan de más probable a menos probable hasta que la suma de sus probabilidades sea igual al valor de top-P. Para obtener los resultados menos variables, define top_p como 0.
    • Número máximo de respuestas: usa el control deslizante o el cuadro de texto para introducir el número de respuestas que quieres generar.
    • Respuestas graduales: habilita esta opción para imprimir las respuestas a medida que se generan.
    • Umbral del filtro de seguridad: selecciona el umbral de probabilidad de que veas respuestas que puedan ser dañinas.
    • Habilitar Grounding: Grounding no se admite en las peticiones multimodales.
    • Región: selecciona la región que quieras usar.
    • Temperatura: usa el control deslizante o el cuadro de texto para introducir un valor de temperatura.

          
      The temperature is used for sampling during response generation, which occurs when topP
      and topK are applied. Temperature controls the degree of randomness in token selection.
      Lower temperatures are good for prompts that require a less open-ended or creative response, while
      higher temperatures can lead to more diverse or creative results. A temperature of 0
      means that the highest probability tokens are always selected. In this case, responses for a given
      prompt are mostly deterministic, but a small amount of variation is still possible.
      
      

      If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature.

      </li> <li>**Output token limit**: Use the slider or textbox to enter a value for the max output limit. Maximum number of tokens that can be generated in the response. A token is approximately four characters. 100 tokens correspond to roughly 60-80 words.

      Specify a lower value for shorter responses and a higher value for potentially longer responses.

      </li> <li>**Add stop sequence**: Optional. Enter a stop sequence, which is a series of characters that includes spaces. If the model encounters a stop sequence, the response generation stops. The stop sequence isn't included in the response, and you can add up to five stop sequences.</li> </ul>

  5. Haz clic en Insertar contenido multimedia y selecciona una fuente para el archivo.

    Subir

    Selecciona el archivo que quieras subir y haz clic en Abrir.

    Por URL

    Introduzca la URL del archivo que quiera usar y haga clic en Insertar.

    Cloud Storage

    Selecciona el contenedor y, a continuación, el archivo del contenedor que quieras importar y haz clic en Seleccionar.

    Google Drive

    1. Elige una cuenta y da tu consentimiento para que Vertex AI Studio acceda a ella la primera vez que selecciones esta opción. Puedes subir varios archivos que tengan un tamaño total de hasta 10 MB. Un archivo no puede superar los 7 MB.
    2. Haz clic en el archivo que quieras añadir.
    3. Haz clic en Seleccionar.

      La miniatura del archivo se muestra en el panel Petición. También se muestra el número total de tokens. Si los datos de tu petición superan el límite de tokens, los tokens se truncarán y no se incluirán en el procesamiento de tus datos.

  6. Escribe tu petición de texto en el panel Petición.

  7. Opcional: Para ver el ID de token a texto y los IDs de token, haz clic en el recuento de tokens del panel Petición.

  8. Haz clic en Enviar.

  9. Opcional: Para guardar tu petición en Mis peticiones, haz clic en Guardar.

  10. Opcional: Para obtener el código de Python o un comando curl para tu petición, haz clic en Crear con código > Obtener código.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
prompt = """
Provide a concise summary of the main points in the audio file.
"""
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        prompt,
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
            mime_type="audio/mpeg",
        ),
    ],
)
print(response.text)
# Example response:
# Here's a summary of the main points from the audio file:

# The Made by Google podcast discusses the Pixel feature drops with product managers Aisha Sheriff and De Carlos Love.  The key idea is that devices should improve over time, with a connected experience across phones, watches, earbuds, and tablets.

Go

Consulta cómo instalar o actualizar Go.

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithAudio shows how to generate text using an audio input.
func generateWithAudio(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: `Provide the summary of the audio file.
Summarize the main points of the audio concisely.
Create a chapter breakdown with timestamps for key sections or topics discussed.`},
			{FileData: &genai.FileData{
				FileURI:  "gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
				MIMEType: "audio/mpeg",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// Here is a summary and chapter breakdown of the audio file:
	//
	// **Summary:**
	//
	// The audio file is a "Made by Google" podcast episode discussing the Pixel Feature Drops, ...
	//
	// **Chapter Breakdown:**
	//
	// *   **0:00 - 0:54:** Introduction to the podcast and guests, Aisha Sharif and DeCarlos Love.
	// ...

	return nil
}

REST

Después de configurar tu entorno, puedes usar REST para probar una petición de texto. En el siguiente ejemplo se envía una solicitud al endpoint del modelo del editor.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • FILE_URI: URI o URL del archivo que se va a incluir en la petición. Entre los valores aceptados se incluyen los siguientes:
    • URI del segmento de Cloud Storage: el objeto debe ser de lectura pública o estar en el mismo proyecto Google Cloud que envía la solicitud. En gemini-2.0-flash y gemini-2.0-flash-lite, el límite de tamaño es de 2 GB.
    • URL HTTP: la URL del archivo debe ser de lectura pública. Puedes especificar un archivo de vídeo, un archivo de audio y hasta 10 archivos de imagen por solicitud. Los archivos de audio, vídeo y documentos no pueden superar los 15 MB.
    • URL del vídeo de YouTube: el vídeo de YouTube debe ser propiedad de la cuenta que has usado para iniciar sesión en la Google Cloud consola o debe ser público. Solo se admite una URL de vídeo de YouTube por solicitud.

    Cuando especifiques un fileURI, también debes especificar el tipo de contenido multimedia (mimeType) del archivo. Si Controles de Servicio de VPC está habilitado, no se admite especificar una URL de archivo multimedia para fileURI.

    Si no tienes ningún archivo de audio en Cloud Storage, puedes usar el siguiente archivo disponible públicamente: gs://cloud-samples-data/generative-ai/audio/pixel.mp3 con el tipo MIME audio/mp3. Para escuchar este audio, abre el archivo MP3 de muestra.

  • MIME_TYPE: el tipo de contenido multimedia del archivo especificado en los campos data o fileUri. Entre los valores aceptados se incluyen los siguientes:

    Haz clic para desplegar los tipos de MIME

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT
    Las instrucciones de texto que se deben incluir en la petición. Por ejemplo: Please provide a summary for the audio. Provide chapter titles, be concise and short, no need to provide chapter summaries. Do not make up any information that is not part of the audio and do not be verbose.

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente.

Fíjate en lo siguiente de la URL de este ejemplo:
  • Usa el método generateContent para solicitar que la respuesta se devuelva una vez que se haya generado por completo. Para reducir la percepción de latencia de los usuarios, transmite la respuesta a medida que se genera mediante el método streamGenerateContent.
  • El ID del modelo multimodal se encuentra al final de la URL, antes del método (por ejemplo, gemini-2.0-flash). Es posible que esta muestra también admita otros modelos.

Transcripción de audio

A continuación, se explica cómo usar un archivo de audio para transcribir una entrevista. Para habilitar la interpretación de marcas de tiempo en archivos de solo audio, habilita el parámetro audioTimestamp en GenerationConfig.

Consola

Para enviar una petición multimodal mediante la Google Cloud consola, sigue estos pasos:

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en Crear petición.

  3. Opcional: Configura el modelo y los parámetros:

    • Modelo: selecciona un modelo.
  4. Opcional: Para configurar parámetros avanzados, haga clic en Avanzado y configure lo siguiente:

    Haz clic para desplegar las configuraciones avanzadas

    • Top-K: usa el control deslizante o el cuadro de texto para introducir un valor de top-K.

      Top-K cambia la forma en que el modelo selecciona los tokens de salida. Un valor de K superior de 1 significa que el siguiente token seleccionado es el más probable de todos los tokens del vocabulario del modelo (también llamado decodificación voraz), mientras que un valor de K superior de 3 significa que el siguiente token se selecciona de entre los tres tokens más probables mediante la temperatura.

      En cada paso de selección de tokens, se muestrean los K tokens principales con las probabilidades más altas. Después, los tokens se filtran en función de la probabilidad P máxima y el token final se selecciona mediante un muestreo de temperatura.

      Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias.

    • Top-P: usa el control deslizante o el cuadro de texto para introducir un valor de top-P. Los tokens se seleccionan de más probable a menos probable hasta que la suma de sus probabilidades sea igual al valor de top-P. Para obtener los resultados menos variables, define top_p como 0.
    • Número máximo de respuestas: usa el control deslizante o el cuadro de texto para introducir el número de respuestas que quieres generar.
    • Respuestas graduales: habilita esta opción para imprimir las respuestas a medida que se generan.
    • Umbral del filtro de seguridad: selecciona el umbral de probabilidad de que veas respuestas que puedan ser dañinas.
    • Habilitar Grounding: Grounding no se admite en las peticiones multimodales.
    • Región: selecciona la región que quieras usar.
    • Temperatura: usa el control deslizante o el cuadro de texto para introducir un valor de temperatura.

          
      The temperature is used for sampling during response generation, which occurs when topP
      and topK are applied. Temperature controls the degree of randomness in token selection.
      Lower temperatures are good for prompts that require a less open-ended or creative response, while
      higher temperatures can lead to more diverse or creative results. A temperature of 0
      means that the highest probability tokens are always selected. In this case, responses for a given
      prompt are mostly deterministic, but a small amount of variation is still possible.
      
      

      If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature.

      </li> <li>**Output token limit**: Use the slider or textbox to enter a value for the max output limit. Maximum number of tokens that can be generated in the response. A token is approximately four characters. 100 tokens correspond to roughly 60-80 words.

      Specify a lower value for shorter responses and a higher value for potentially longer responses.

      </li> <li>**Add stop sequence**: Optional. Enter a stop sequence, which is a series of characters that includes spaces. If the model encounters a stop sequence, the response generation stops. The stop sequence isn't included in the response, and you can add up to five stop sequences.</li> </ul>

  5. Haz clic en Insertar contenido multimedia y selecciona una fuente para el archivo.

    Subir

    Selecciona el archivo que quieras subir y haz clic en Abrir.

    Por URL

    Introduzca la URL del archivo que quiera usar y haga clic en Insertar.

    Cloud Storage

    Selecciona el contenedor y, a continuación, el archivo del contenedor que quieras importar y haz clic en Seleccionar.

    Google Drive

    1. Elige una cuenta y da tu consentimiento para que Vertex AI Studio acceda a ella la primera vez que selecciones esta opción. Puedes subir varios archivos que tengan un tamaño total de hasta 10 MB. Un archivo no puede superar los 7 MB.
    2. Haz clic en el archivo que quieras añadir.
    3. Haz clic en Seleccionar.

      La miniatura del archivo se muestra en el panel Petición. También se muestra el número total de tokens. Si los datos de tu petición superan el límite de tokens, los tokens se truncarán y no se incluirán en el procesamiento de tus datos.

  6. Escribe tu petición de texto en el panel Petición.

  7. Opcional: Para ver el ID de token a texto y los IDs de token, haz clic en el recuento de tokens del panel Petición.

  8. Haz clic en Enviar.

  9. Opcional: Para guardar tu petición en Mis peticiones, haz clic en Guardar.

  10. Opcional: Para obtener el código de Python o un comando curl para tu petición, haz clic en Crear con código > Obtener código.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
prompt = """
Transcribe the interview, in the format of timecode, speaker, caption.
Use speaker A, speaker B, etc. to identify speakers.
"""
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        prompt,
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
            mime_type="audio/mpeg",
        ),
    ],
    # Required to enable timestamp understanding for audio-only files
    config=GenerateContentConfig(audio_timestamp=True),
)
print(response.text)
# Example response:
# [00:00:00] **Speaker A:** your devices are getting better over time. And so ...
# [00:00:14] **Speaker B:** Welcome to the Made by Google podcast where we meet ...
# [00:00:20] **Speaker B:** Here's your host, Rasheed Finch.
# [00:00:23] **Speaker C:** Today we're talking to Aisha Sharif and DeCarlos Love. ...
# ...

Go

Consulta cómo instalar o actualizar Go.

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateAudioTranscript shows how to generate an audio transcript.
func generateAudioTranscript(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: `Transcribe the interview, in the format of timecode, speaker, caption.
Use speaker A, speaker B, etc. to identify speakers.`},
			{FileData: &genai.FileData{
				FileURI:  "gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
				MIMEType: "audio/mpeg",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// 00:00:00, A: your devices are getting better over time.
	// 00:01:13, A: And so we think about it across the entire portfolio from phones to watch, ...
	// ...

	return nil
}

REST

Después de configurar tu entorno, puedes usar REST para probar una petición de texto. En el siguiente ejemplo se envía una solicitud al endpoint del modelo del editor.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: .
  • FILE_URI: URI o URL del archivo que se va a incluir en la petición. Entre los valores aceptados se incluyen los siguientes:
    • URI del segmento de Cloud Storage: el objeto debe ser de lectura pública o estar en el mismo proyecto Google Cloud que envía la solicitud. En gemini-2.0-flash y gemini-2.0-flash-lite, el límite de tamaño es de 2 GB.
    • URL HTTP: la URL del archivo debe ser de lectura pública. Puedes especificar un archivo de vídeo, un archivo de audio y hasta 10 archivos de imagen por solicitud. Los archivos de audio, vídeo y documentos no pueden superar los 15 MB.
    • URL del vídeo de YouTube: el vídeo de YouTube debe ser propiedad de la cuenta que has usado para iniciar sesión en la Google Cloud consola o debe ser público. Solo se admite una URL de vídeo de YouTube por solicitud.

    Cuando especifiques un fileURI, también debes especificar el tipo de contenido multimedia (mimeType) del archivo. Si Controles de Servicio de VPC está habilitado, no se admite especificar una URL de archivo multimedia para fileURI.

    Si no tienes ningún archivo de audio en Cloud Storage, puedes usar el siguiente archivo disponible públicamente: gs://cloud-samples-data/generative-ai/audio/pixel.mp3 con el tipo MIME audio/mp3. Para escuchar este audio, abre el archivo MP3 de muestra.

  • MIME_TYPE: el tipo de contenido multimedia del archivo especificado en los campos data o fileUri. Entre los valores aceptados se incluyen los siguientes:

    Haz clic para desplegar los tipos de MIME

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT
    Las instrucciones de texto que se deben incluir en la petición. Por ejemplo: Can you transcribe this interview, in the format of timecode, speaker, caption. Use speaker A, speaker B, etc. to identify speakers.

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  },
  "generatationConfig": {
    "audioTimestamp": true
  }
}
EOF

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  },
  "generatationConfig": {
    "audioTimestamp": true
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente.

Fíjate en lo siguiente de la URL de este ejemplo:
  • Usa el método generateContent para solicitar que la respuesta se devuelva una vez que se haya generado por completo. Para reducir la percepción de latencia de los usuarios, transmite la respuesta a medida que se genera mediante el método streamGenerateContent.
  • El ID del modelo multimodal se encuentra al final de la URL, antes del método (por ejemplo, gemini-2.0-flash). Es posible que esta muestra también admita otros modelos.

Definir parámetros de modelo opcionales

Cada modelo tiene un conjunto de parámetros opcionales que puedes definir. Para obtener más información, consulte Parámetros de generación de contenido.

Limitaciones

Aunque los modelos multimodales de Gemini son potentes en muchos casos de uso multimodal, es importante conocer sus limitaciones:

  • Reconocimiento de sonidos que no son de voz: los modelos que admiten audio pueden cometer errores al reconocer sonidos que no son de voz.
  • Marcas de tiempo de solo audio: para generar marcas de tiempo precisas en archivos de solo audio, debes configurar el parámetro audio_timestamp en generation_config.

Siguientes pasos