Gemini API преобразует речь из аудиофайлов в текст с помощью модели Gemini 3.5 Transcribe (gemini-3.5-transcribe). Благодаря возможностям Gemini по распознаванию аудио она обеспечивает точную расшифровку с автоматическим определением языка, диаризацией говорящих, временными метками на уровне слов и подсказками из пользовательского словаря. Также доступен режим умной расшифровки с удалением запинок и умным форматированием.
Чтобы расшифровать аудиофайл, загрузите его и передайте в gemini-3.5-transcribe:
Python
from google import genai
client = genai.Client()
audio_file = client.files.upload(file="path/to/sample.mp3")
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const audioFile = await client.files.upload({
file: "path/to/sample.mp3",
config: { mime_type: "audio/mp3" },
});
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
});
console.log(interaction.output_text);
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
# First upload the file via the Files API, then pass its URI:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
]
}'
Обзор
Gemini 3.5 Transcribe оптимизирована для преобразования речи в текст. Он справляется с различными акцентами, фоновым шумом и многоязычными разговорами.
Основные возможности:
- Автоматическое распознавание речи (ASR). Автоматически определяет языки в более чем 85 регионах. Обрабатывает переключение кода внутри предложения и между предложениями без ручной настройки.
- Пользовательский словарь. Позволяет улучшить распознавание терминов, аббревиатур и имен собственных, характерных для определенной сферы деятельности. Для этого можно передать до 1000 фраз.
- Диаризация речи. Распознавание разных говорящих и присвоение им меток.
- Временные метки на уровне слов. Генерирует точные смещения по времени начала и конца для каждого распознанного слова.
- Умная расшифровка. Удаляет запинки, слова-паразиты и повторы, а также применяет структурированное форматирование.
- Форматирование и нормализация. Применяет заглавные буквы, пунктуацию и обратную нормализацию текста, например преобразует "двадцать шесть миллионов долларов" в "26 млн долларов".
Для общего анализа аудио или ответов на вопросы по аудиоконтенту используйте Распознавание аудио. Для синтеза речи используйте Text-to-Speech.
Распознавание языка и подсказки
По умолчанию модель определяет язык речи автоматически. Она динамически переключается между языками, когда говорящие переходят с одного языка на другой.
Чтобы использовать автоматическое определение, опустите language_codes или укажите пустой список:
Python
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
generation_config={
"transcription_config": {
"language_codes": [],
}
},
)
JavaScript
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
generation_config: {
transcription_config: {
language_codes: [],
},
},
});
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
GenerationConfig: &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
LanguageCodes: []string{},
},
},
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
],
"generation_config": {
"transcription_config": {
"language_codes": []
}
}
}'
Если вы знаете язык заранее, укажите коды языков BCP-47 в language_codes, чтобы повысить точность расшифровки (см. Поддерживаемые языки):
Python
generation_config = {
"transcription_config": {
"language_codes": ["es-ES"],
}
}
JavaScript
const generationConfig = {
transcription_config: {
language_codes: ["es-ES"],
},
};
Проложить маршрут
package main
import (
"google.golang.org/genai/interactions/models/interactions"
)
func main() {
generationConfig := &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
LanguageCodes: []string{"es-ES"},
},
}
_ = generationConfig
}
REST
{
"generation_config": {
"transcription_config": {
"language_codes": ["es-ES"]
}
}
}
Пользовательский словарь
Вы можете направить речевую модель на редкие слова, технический жаргон, названия брендов или имена собственные. Укажите до 1000 терминов в массиве custom_vocabulary (лучшие результаты обычно достигаются при использовании до 100 терминов):
Python
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
generation_config={
"transcription_config": {
"custom_vocabulary": ["Gemini", "Kubernetes", "BigQuery"],
}
},
)
JavaScript
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
generation_config: {
transcription_config: {
custom_vocabulary: ["Gemini", "Kubernetes", "BigQuery"],
},
},
});
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
GenerationConfig: &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
CustomVocabulary: []string{"Gemini", "Kubernetes", "BigQuery"},
},
},
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
],
"generation_config": {
"transcription_config": {
"custom_vocabulary": ["Gemini", "Kubernetes", "BigQuery"]
}
}
}'
Разделение говорящих
Диаризация позволяет распознавать разные голоса в записи и помечать каждый сегмент идентификатором говорящего, например spk_1 или spk_2. Поддерживается до восьми говорящих (атрибуция для трех и более говорящих находится на стадии эксперимента).
Чтобы включить разделение говорящих, настройте diarization_mode в mode:
Python
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
generation_config={
"transcription_config": {
"mode": {
"type": "verbatim",
"diarization_mode": "speaker",
},
}
},
)
JavaScript
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
generation_config: {
transcription_config: {
mode: {
type: "verbatim",
diarization_mode: "speaker",
},
},
},
});
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
GenerationConfig: &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
Mode: genai.Ptr(interactions.NewTranscriptionConfigMode(interactions.NewTranscriptionMode(interactions.VerbatimTranscriptionMode{
DiarizationMode: genai.Ptr("speaker"),
}))),
},
},
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
],
"generation_config": {
"transcription_config": {
"mode": {
"type": "verbatim",
"diarization_mode": "speaker"
}
}
}
}'
Временные метки на уровне слов
Временные метки на уровне слов содержат точные смещения начала и конца для каждого распознанного слова в аудиопотоке.
Чтобы включить временные метки, настройте timestamp_granularities в mode:
Python
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
generation_config={
"transcription_config": {
"mode": {
"type": "verbatim",
"timestamp_granularities": ["word"],
},
}
},
)
JavaScript
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
generation_config: {
transcription_config: {
mode: {
type: "verbatim",
timestamp_granularities: ["word"],
},
},
},
});
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
GenerationConfig: &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
Mode: genai.Ptr(interactions.NewTranscriptionConfigMode(interactions.NewTranscriptionMode(interactions.VerbatimTranscriptionMode{
TimestampGranularities: []string{"word"},
}))),
},
},
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
],
"generation_config": {
"transcription_config": {
"mode": {
"type": "verbatim",
"timestamp_granularities": ["word"]
}
}
}
}'
Вы можете объединить diarization_mode и timestamp_granularities в mode, чтобы получить и ярлыки говорящих, и временные метки слов:
Python
generation_config = {
"transcription_config": {
"mode": {
"type": "verbatim",
"diarization_mode": "speaker",
"timestamp_granularities": ["word"],
},
}
}
JavaScript
const generationConfig = {
transcription_config: {
mode: {
type: "verbatim",
diarization_mode: "speaker",
timestamp_granularities: ["word"],
},
},
};
Проложить маршрут
package main
import (
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
)
func main() {
generationConfig := &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
Mode: genai.Ptr(interactions.NewTranscriptionConfigMode(interactions.NewTranscriptionMode(interactions.VerbatimTranscriptionMode{
DiarizationMode: genai.Ptr("speaker"),
TimestampGranularities: []string{"word"},
}))),
},
}
_ = generationConfig
}
REST
{
"generation_config": {
"transcription_config": {
"mode": {
"type": "verbatim",
"diarization_mode": "speaker",
"timestamp_granularities": ["word"]
}
}
}
}
Режимы расшифровки
Gemini 3.5 Transcribe поддерживает два режима расшифровки, которые задаются параметром mode:
verbatim(по умолчанию). Возвращает точную дословную расшифровку всего сказанного, сохраняя слова-паразиты ("эм", "ну", "типа", "знаешь"), повторы, паузы и фальстарты. Временные метки и разделение говорящих настраиваются в этом режиме ({"type": "verbatim", ...}).smart(Умная расшифровка). Оптимизирует расшифровку для чтения, применяя интеллектуальную постобработку:- Удаление запинок. Удаляет слова-паразиты, заикания и ложные начала.
- Исправление ошибок. Если вы оговорились и исправили себя, например сказали "Давай встретимся во вторник, нет, в среду в два", в заметке будет записано "Давай встретимся в среду в 14:00".
- Автоматическое структурирование. Gemini автоматически разбивает устную речь на абзацы, нумерованные и маркированные списки, а также форматирует даты, валюты и числа.
- Исправление грамматики. Применяет естественную пунктуацию, регистр букв и структуру предложений.
| Голосовое аудио | verbatim выход |
Вывод smart (умная расшифровка) |
|---|---|---|
| "На встречу нужно пригласить Алису и… нет, Боба и Кэрол". | "Так, на встречу нужно пригласить Алису, нет, Боба и Кэрол". | "Думаю, на встречу нужно пригласить Боба и Кэрол". |
| "Первый пункт: проверить бюджет. Второй пункт: утвердить сроки. Третий пункт: отправить сводку". | "первый пункт: проверить бюджет; второй пункт: утвердить сроки; третий пункт: отправить сводку" | "1. Проверьте бюджет. 2. Определитесь со сроками. 3. Отправить сводку" |
Python
interaction = client.interactions.create(
model="gemini-3.5-transcribe",
input=[
{
"type": "audio",
"uri": audio_file.uri,
"mime_type": audio_file.mime_type,
}
],
generation_config={
"transcription_config": {
"mode": "smart",
}
},
)
print(interaction.output_text)
JavaScript
const interaction = await client.interactions.create({
model: "gemini-3.5-transcribe",
input: [
{
type: "audio",
uri: audioFile.uri,
mime_type: audioFile.mimeType,
},
],
generation_config: {
transcription_config: {
mode: "smart",
},
},
});
console.log(interaction.output_text);
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
audioFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-transcribe"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.AudioContent{
URI: genai.Ptr(audioFile.URI),
MimeType: interactions.AudioContentMimeType(audioFile.MIMEType).ToPointer(),
}),
}),
GenerationConfig: &interactions.GenerationConfig{
TranscriptionConfig: &interactions.TranscriptionConfig{
Mode: genai.Ptr(interactions.NewTranscriptionConfigMode(interactions.TranscriptionConfigModeEnumSmart)),
},
},
}),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.Interaction.GetOutputText())
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-transcribe",
"input": [
{
"type": "audio",
"uri": "YOUR_FILE_URI",
"mime_type": "audio/mp3"
}
],
"generation_config": {
"transcription_config": {
"mode": "smart"
}
}
}'
Анализ расшифровки
Полный текст расшифровки возвращается в поле interaction.output_text.
Если включен параметр timestamp_granularities или diarization_mode, API также возвращает подробные аннотации на уровне слов, прикрепленные к контенту взаимодействия.
Вот как извлечь временные метки слов и реплики говорящих и выполнить итерацию по ним:
Python
def extract_word_annotations(interaction):
words = []
for step in getattr(interaction, "steps", []) or []:
for content in getattr(step, "content", []) or []:
for annotation in getattr(content, "annotations", []) or []:
if getattr(annotation, "type", None) == "word_info":
words.append(annotation)
return words
words = extract_word_annotations(interaction)
for w in words:
speaker = f"[{w.speaker}] " if getattr(w, "speaker", None) else ""
start = getattr(w, "start_offset", "")
end = getattr(w, "end_offset", "")
timing = f"({start} -> {end}) " if start and end else ""
print(f"{speaker}{timing}{w.text}")
JavaScript
function extractWordAnnotations(interaction) {
const words = [];
for (const step of interaction.steps ?? []) {
for (const content of step.content ?? []) {
for (const annotation of content.annotations ?? []) {
if (annotation.type === "word_info") {
words.push(annotation);
}
}
}
}
return words;
}
const words = extractWordAnnotations(interaction);
for (const w of words) {
const speaker = w.speaker ? `[${w.speaker}] ` : "";
const timing = (w.start_offset && w.end_offset) ? `(${w.start_offset} -> ${w.end_offset}) ` : "";
console.log(`${speaker}${timing}${w.text}`);
}
Проложить маршрут
package main
import (
"fmt"
"google.golang.org/genai/interactions/models/interactions"
)
func extractWordAnnotations(interaction *interactions.Interaction) []*interactions.WordInfo {
var words []*interactions.WordInfo
if interaction == nil {
return words
}
for _, step := range interaction.Steps {
if step.ModelOutputStep != nil {
for _, content := range step.ModelOutputStep.Content {
if content.TextContent != nil {
for _, annotation := range content.TextContent.Annotations {
if annotation.WordInfo != nil {
words = append(words, annotation.WordInfo)
}
}
}
}
}
}
return words
}
func main() {
var interaction *interactions.Interaction
words := extractWordAnnotations(interaction)
for _, w := range words {
speaker := ""
if w.Speaker != nil && *w.Speaker != "" {
speaker = fmt.Sprintf("[%s] ", *w.Speaker)
}
timing := ""
if w.StartOffset != nil && w.EndOffset != nil {
timing = fmt.Sprintf("(%s -> %s) ", *w.StartOffset, *w.EndOffset)
}
fmt.Printf("%s%s%s\n", speaker, timing, w.GetText())
}
}
REST
{
"id": "interactions/abc123xyz",
"status": "completed",
"steps": [
{
"id": "step_001",
"type": "model_output",
"content": [
{
"type": "text",
"text": "Hello world",
"annotations": [
{
"type": "word_info",
"text": "Hello",
"speaker": "spk_1",
"start_offset": "0.100s",
"end_offset": "0.400s"
},
{
"type": "word_info",
"text": "world",
"speaker": "spk_1",
"start_offset": "0.500s",
"end_offset": "0.800s"
}
]
}
]
}
]
}
Поддерживаемые языки
Gemini 3.5 Transcribe поддерживает следующие языки и коды языков BCP-47:
| Язык | Код BCP-47 | Язык | Код BCP-47 |
|---|---|---|---|
| Африкаанс | af-ZA |
Японский | ja-JP |
| Амхарский | am-ET |
Яванский | jv-ID |
| арабский (Египет) | ar-EG |
Кабувердиану | kea-CV |
| Армянский | hy-AM |
Каннада | kn-IN |
| Ассамский | as-IN |
Казахский | kk-KZ |
| Азербайджанский | az-AZ |
Корейский | ko-KR |
| Belarusian | be-BY |
Киргизский | ky-KG |
| Бенгальский (Бангладеш) | bn-BD |
Латвийский | lv-LV |
| Бенгальский (Индия) | bn-IN |
Лингала | ln-CD |
| Боснийский | bs-BA |
Литовский | lt-LT |
| Болгарский | bg-BG |
Македонский | mk-MK |
| Болгарский (аромунский) | rup-BG |
Малайский | ms-MY |
| Бирманский | my-MM |
Малаялам | ml-IN |
| Кантонский (традиционный) | yue-Hant-HK |
Мальтийский | mt-MT |
| Каталанский | ca-ES |
Севернокитайский (упрощенный) | cmn-Hans-CN |
| Себуанский | ceb |
Маратхи | mr-IN |
| Стандартный кхмерский | km-KH |
Монгольский | mn-MN |
| Хорватский | hr-HR |
Непальский | ne-NP |
| Чешский | cs-CZ |
Норвежский | nb-NO |
| Датский | da-DK |
Ория | or-IN |
| Нидерландский | nl-NL |
Польский | pl-PL |
| Английский (Великобритания) | en-GB |
Португальский (Бразилия) | pt-BR |
| Английский (Индия) | en-IN |
Португальский (Португалия) | pt-PT |
| Английский (США) | en-US |
Пенджабский | pa-IN |
| Эстонский | et-EE |
Панджаби (гурмукхи) | pa-Guru-IN |
| Фарси | fa-IR |
Румынский | ro-RO |
| Филиппинский | fil-PH |
Русский | ru-RU |
| Финский | fi-FI |
Сербский | sr-RS |
| Французский | fr-FR |
Синдхи (арабское письмо) | sd-Arab-IN |
| Галисийский | gl-ES |
Словацкий | sk-SK |
| Грузинский | ka-GE |
Словенский | sl-SI |
| Немецкий | de-DE |
Испанский (Латинская Америка) | es-419 |
| Греческий | el-GR |
Испанский (США) | es-US |
| Гуджарати | gu-IN |
суахили (Кения) | sw-KE |
| Хауса | ha-NG |
Шведский | sv-SE |
| Иврит | he-IL |
Таджикский | tg-TJ |
| хинди | hi-IN |
Телугу | te-IN |
| Венгерский | hu-HU |
Тайский | th-TH |
| Исландский | is-IS |
Турецкий | tr-TR |
| Английский (Индия) | en-IN |
Украинский | uk-UA |
| Индонезийский | id-ID |
Узбекский | uz-UZ |
| Итальянский | it-IT |
Вьетнамский | vi-VN |
Поддерживаемые аудиоформаты
Gemini 3.5 Transcribe поддерживает следующие MIME-типы аудиоформатов:
- WAV –
audio/wav - MP3 –
audio/mp3 - AIFF –
audio/aiff - AAC –
audio/aac - OGG –
audio/ogg - FLAC –
audio/flac - MPEG –
audio/mpeg - M4A –
audio/m4a - L16 –
audio/l16 - Opus –
audio/opus - ALAW –
audio/alaw - MULAW –
audio/mulaw - WebM –
audio/webm
Полный список поддерживаемых MIME-типов и схем параметров можно найти в справочнике по Interactions API.
Справка по параметрам
Настройте расшифровку, задав поля в объекте transcription_config в generation_config:
| Поле | Тип | Описание |
|---|---|---|
language_codes |
Массив строк | Коды языков по стандарту BCP-47 (например, ["en-US"]). Если они не указаны или поле пустое ([]), модель автоматически определяет язык и переключает код. |
custom_vocabulary |
Массив строк | До 1000 пользовательских терминов, аббревиатур или имен собственных для улучшения распознавания речи. Несовместимо с разделением по говорящим и временными метками на уровне слов. |
mode |
Объект или строка | Конфигурация режима расшифровки. Принимает "smart" или объект дословного режима ({"type": "verbatim", ...}). По умолчанию используется дословная расшифровка. |
mode.type |
Строка | (Только для режима точного соответствия) Идентификатор режима. Всегда имеет значение "verbatim". |
mode.timestamp_granularities |
Массив строк | (Только для дословного режима.) Детализация возвращаемых временных меток. Передайте ["word"], чтобы включить смещения начала и конца слов. Несовместимо с пользовательским словарем. |
mode.diarization_mode |
Строка | (Только для дословного режима.) Режим диаризации. Передайте "speaker", чтобы распознавать и помечать разных говорящих. Несовместимо с пользовательским словарем. |
Рекомендации
- Предоставляйте чистые аудиозаписи. Убедитесь, что на аудиозаписях голоса четко разделены и нет сильного клиппинга.
- Указывайте язык, если он известен. Если вы заранее знаете язык аудио, укажите
language_codes, чтобы повысить точность. - Целевой пользовательский словарь. Включайте в
custom_vocabularyтолько отдельные термины, названия брендов или имена собственные, а не обычные повседневные слова. - Используйте Files API для больших записей. Для файлов длиннее нескольких секунд загрузите файл с помощью
client.files.uploadи передайте возвращенный URI файла модели.
Ограничения
- Продолжительность аудио. Стандартные унарные запросы поддерживают аудиофайлы продолжительностью до 1 часа. Если включены такие функции, как диаризация говорящих или временные метки на уровне слов, обработка аудио ограничена 30 минутами.
- Временные метки на уровне слов. Если включить эту функцию, общая точность расшифровки может снизиться.
- Разделение говорящих. Поддерживается до восьми говорящих. Определение говорящего для трех и более человек работает в экспериментальном режиме.
- Пользовательский словарь. В
custom_vocabularyможно добавить до 1000 терминов,но наилучшие результаты обычно достигаются, если их не больше 100. Вы не можете использоватьcustom_vocabularyвместе с разделением по говорящим или временными метками на уровне слов. API отклоняет запросы, в которыхcustom_vocabularyуказан вместе с любой из этих функций. - Совместимость режимов. Умную расшифровку (
"smart") нельзя использовать вместе сtimestamp_granularitiesилиdiarization_mode.
Дальнейшие действия
- Передавайте аудио в реальном времени с помощью руководства по Прямой расшифровке, используя Live API.
- Распознавание аудио позволяет анализировать аудиоконтент, создавать его краткий пересказ и задавать вопросы по нему.
- Узнайте, как синтезировать аудио из текста с помощью Text-to-Speech.
- Цены и лимиты токенов для моделей указаны на странице с ценами.
- Подробную информацию о загрузке медиафайлов и управлении ими можно найти в руководстве по Files API.