Audioverständnis (nur Sprache)

Sie können Gemini-Anfragen Audiodaten hinzufügen, um Aufgaben auszuführen, bei denen der Inhalt der enthaltenen Audiodaten zu verstehen ist. Auf dieser Seite erfahren Sie, wie Sie mithilfe der Google Cloud Console und der Vertex AI API Audio zu Ihren Anfragen an Gemini in Vertex AI hinzufügen.

Unterstützte Modelle

In der folgenden Tabelle sind die Modelle aufgeführt, die das Audioverständnis unterstützen:

Modell Details zur Audiomodalität

Gemini 1.5 Flash

Zur Modellkarte „Gemini 1.5 Flash“

Maximale Audiolänge pro Prompt: ~8,4 Stunden oder bis zu 1 Million Tokens.

Sprache kann für die Zusammenfassung, Transkription und Übersetzung von Audiodaten verstanden werden.

Gemini 1.5 Pro

Zur Modellkarte „Gemini 1.5 Pro“

Maximale Audiolänge pro Prompt: ~8,4 Stunden oder bis zu 1 Million Tokens.

Sprache kann für die Zusammenfassung, Transkription und Übersetzung von Audiodaten verstanden werden.

Eine Liste der von Gemini-Modellen unterstützten Sprachen finden Sie in den Modellinformationen der Google-Modelle. Weitere Informationen zum Entwerfen multimodaler Prompts finden Sie unter Multimodale Prompts entwerfen. Wenn Sie nach einer Möglichkeit suchen, Gemini direkt über Ihre mobilen und Web-Apps zu verwenden, finden Sie weitere Informationen in den Google AI SDKs für Android, Swift und Web.

Einer Anfrage Audio hinzufügen

Sie können Audiodateien Ihren Anfragen an Gemini hinzufügen.

Einzelnes Audio

Im Folgenden erfahren Sie, wie Sie eine Audiodatei verwenden, um einen Podcast zusammenzufassen.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell eine Streamingantwort oder eine Nicht-Streamingantwort generiert. Das Streaming umfasst Antworten auf Prompts, sobald diese generiert werden. Das heißt, sobald das Modell Ausgabetokens generiert, werden die Ausgabetokens gesendet. Eine Nicht-Streamingantwort auf Prompts wird erst gesendet, wenn alle Ausgabetokens generiert wurden.

Verwenden Sie für eine Streamingantwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode


  import vertexai
  from vertexai.generative_models import GenerativeModel, Part

  # TODO(developer): Update and un-comment below lines
  # project_id = "PROJECT_ID"

  vertexai.init(project=project_id, location="us-central1")

  model = GenerativeModel(model_name="gemini-1.5-flash-001")

  prompt = """
  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.
"""

  audio_file_uri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"
  audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")

  contents = [audio_file, prompt]

  response = model.generate_content(contents)
  print(response.text)

Audiotranskript

Im Folgenden erfahren Sie, wie Sie eine Audiodatei zum Transkribieren eines Interviews verwenden.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell eine Streamingantwort oder eine Nicht-Streamingantwort generiert. Das Streaming umfasst Antworten auf Prompts, sobald diese generiert werden. Das heißt, sobald das Modell Ausgabetokens generiert, werden die Ausgabetokens gesendet. Eine Nicht-Streamingantwort auf Prompts wird erst gesendet, wenn alle Ausgabetokens generiert wurden.

Verwenden Sie für eine Streamingantwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode


  import vertexai
  from vertexai.generative_models import GenerativeModel, Part

  # TODO(developer): Update and un-comment below lines
  # project_id = "PROJECT_ID"

  vertexai.init(project=project_id, location="us-central1")

  model = GenerativeModel(model_name="gemini-1.5-flash-001")

  prompt = """
  Can you transcribe this interview, in the format of timecode, speaker, caption.
  Use speaker A, speaker B, etc. to identify speakers.
"""

  audio_file_uri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"
  audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")

  contents = [audio_file, prompt]

  response = model.generate_content(contents)
  print(response.text)

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Go SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell eine Streamingantwort oder eine Nicht-Streamingantwort generiert. Das Streaming umfasst Antworten auf Prompts, sobald diese generiert werden. Das heißt, sobald das Modell Ausgabetokens generiert, werden die Ausgabetokens gesendet. Eine Nicht-Streamingantwort auf Prompts wird erst gesendet, wenn alle Ausgabetokens generiert wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Beispielcode

import (
	"context"
	"errors"
	"fmt"
	"io"
	"mime"
	"path/filepath"

	"cloud.google.com/go/vertexai/genai"
)

// audioPrompt is a sample prompt type consisting of one audio asset, and a text question.
type audioPrompt struct {
	// audio is a Google Cloud Storage path starting with "gs://"
	audio string
	// question asked to the model
	question string
}

// transcribeAudio generates a response into w, based upon the prompt
// and audio provided.
// audio is a Google Cloud Storage path starting with "gs://"
func transcribeAudio(w io.Writer, prompt audioPrompt, projectID, location, modelName string) error {
	// prompt := audioPrompt{
	// 	audio: "gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
	// 	question: `
	// 		Can you transcribe this interview, in the format of timecode, speaker, caption.
	// 		Use speaker A, speaker B, etc. to identify speakers.
	// 	`,
	// },
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)

	// Optional: set an explicit temperature
	model.SetTemperature(0.4)

	// Given an audio file URL, prepare audio file as genai.Part
	img := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext(prompt.audio)),
		FileURI:  prompt.audio,
	}

	res, err := model.GenerateContent(ctx, img, genai.Text(prompt.question))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}

	fmt.Fprintf(w, "generated transcript:\n%s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

C#

Bevor Sie dieses Beispiel anwenden, folgen Sie den C#-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI C# API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class AudioInputTranscription
{
    public async Task<string> TranscribeAudio(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001")
    {

        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        string prompt = @"Can you transcribe this interview, in the format of timecode, speaker, caption.
Use speaker A, speaker B, etc. to identify speakers.";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                        new Part { FileData = new() { MimeType = "audio/mp3", FileUri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3" } }
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

Modellparameter festlegen

Die folgenden Modellparameter können für multimodale Modelle festgelegt werden:

Top-P

Der Wert „Top-P“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Die Tokens werden von den wahrscheinlichsten (siehe „Top-K“) bis zu den unwahrscheinlichsten Werten ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem „Top-P“-Wert entspricht. Beispiel: Wenn die Tokens A, B und C eine Wahrscheinlichkeit von 0,3, 0,2 und 0,1 haben und der „Top-P“-Wert 0.5 ist, wählt das Modell anhand der Temperatur entweder A oder B als das nächste Token und C als Kandidaten ausschließen.

Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.

Temperatur

Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Dies passiert, wenn topP und topK angewendet werden. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich gut für Prompts, die eine weniger offene oder kreative Antwort erfordern, während höhere Temperaturen zu vielfältigeren oder kreativeren Ergebnissen führen können. Eine Temperatur von 0 bedeutet, dass immer die Tokens mit der höchsten Wahrscheinlichkeit ausgewählt werden. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich.

Wenn das Modell eine zu allgemeine oder zu kurze Antwort zurückgibt, oder wenn das Modell eine Fallback-Antwort ausgibt, versuchen Sie, die Temperatur zu erhöhen.

Gültige Parameterwerte

Parameter Gemini 1.5 Pro Gemini 1.5 Flash
Top-P 0 - 1,0 (Standard 0,95) 0 - 1,0 (Standard 0,95)
Temperatur 0 - 2,0 (Standard 1,0) 0 - 2,0 (Standard 1,0)

Audioanforderungen

Gemini 1.5 Flash und Gemini 1.5 Pro unterstützen die folgenden Audio-MIME-Typen.

Audio-MIME-Typ Gemini 1.5 Flash Gemini 1.5 Pro
AAC - audio/aac
FLAC - audio/flac
MP3 - audio/mp3
MPA - audio/m4a
MPEG - audio/mpeg
MPGA - audio/mpga
MP4 - audio/mp4
OPUS - audio/opus
PCM - audio/pcm
WAV - audio/wav
WEBM - audio/webm

Beschränkungen

Multimodale Gemini-Modelle sind zwar in vielen multimodalen Anwendungsfällen nützlich, aber es ist wichtig, die Einschränkungen der Modelle zu verstehen:

  • Nichtsprachliche Geräuscherkennung: Die Modelle, die Audio unterstützen, können dazu führen, dass Töne, die keine Sprache sind, falsch erkannt werden.
  • Zeitstempel nur für Audio: Modelle, die Audio unterstützen, können keine akkuraten Zeitstempel für Anfragen mit Audiodateien generieren. Dies schließt Zeitstempel für die Segmentierung und die zeitliche Lokalisierung ein. Zeitstempel können akkurat für Eingaben generiert werden, die Video mit Audio enthalten.
  • Transkription und Satzzeichen: Von Gemini 1.5 Flash zurückgegebene Transkriptionen enthalten möglicherweise keine Satzzeichen.

Nächste Schritte