Transkriptim audio

API-ja Gemini konverton të folurit në skedarët audio në tekst duke përdorur modelin Gemini 3.5 Transcribe ( gemini-3.5-transcribe ). Bazuar në aftësitë e të kuptuarit të audios të Gemini, ajo ofron transkriptim të saktë me identifikim automatik të gjuhës, ditarizim të folësit, pulla kohore të nivelit të fjalës dhe këshilla të personalizuara të fjalorit. Gjithashtu ofron një modalitet inteligjent transkriptimi që paraqet heqjen e rrjedhshmërisë dhe formatimin inteligjent.

Për të transkriptuar një skedar audio, ngarkoni audion dhe kalojeni te 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);

PUSHTIM

# 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"
      }
    ]
  }'

Përmbledhje

Gemini 3.5 Transcribe është i optimizuar për detyrat e konvertimit të të folurit në tekst. Ai trajton thekse të ndryshme, zhurma në sfond dhe biseda shumëgjuhëshe.

Aftësitë kryesore përfshijnë:

  • Njohja automatike e të folurit (ASR): Zbulon automatikisht gjuhët në mbi 85 vende . Trajton ndërrimin e kodit brenda fjalive dhe midis fjalive pa konfigurim manual.
  • Fjalor i personalizuar: Anon njohjen drejt termave, akronimeve dhe emrave të përveçëm specifikë të domenit duke kaluar deri në 1,000 fraza.
  • Diarizimi i folësit: Bën dallimin midis folësve të shumtë dhe i atribuon segmenteve të folura etiketa të dallueshme.
  • Vula kohore në nivel fjale: Gjeneron zhvendosje të sakta të kohës së fillimit dhe të mbarimit për secilën fjalë të njohur.
  • Transkriptim inteligjent: Pastron rrjedhshmëritë e gabuara, fjalët plotësuese, përsëritjet dhe zbaton formatimin e strukturuar.
  • Formatimi dhe normalizimi: Zbaton përdorimin e shkronjave të mëdha, pikësimin dhe normalizimin e tekstit të anasjelltë, siç është konvertimi i "njëzet e gjashtë milionë dollarëve" në "26 milionë dollarë".

Për arsyetim të përgjithshëm audio ose përgjigje pyetjesh mbi përmbajtjen audio, përdorni Kuptimi i audios . Për sintezën audio tekst-në-fjalë, përdorni Tekst-në-fjalë .

Zbulimi i gjuhës dhe këshillat

Si parazgjedhje, modeli e zbulon automatikisht gjuhën e folur. Ai ndërron dinamikisht midis gjuhëve kur folësit ndërrojnë kodin.

Për të përdorur zbulimin automatik, hiqni language_codes ose jepni një listë bosh:

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: [],
    },
  },
});

PUSHTIM

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": []
      }
    }
  }'

Nëse e dini gjuhën paraprakisht, specifikoni kodet gjuhësore BCP-47 në language_codes për të përmirësuar saktësinë e transkriptimit (shih Gjuhët e mbështetura ):

Python

generation_config = {
    "transcription_config": {
        "language_codes": ["es-ES"],
    }
}

JavaScript

const generationConfig = {
  transcription_config: {
    language_codes: ["es-ES"],
  },
};

PUSHTIM

{
  "generation_config": {
    "transcription_config": {
      "language_codes": ["es-ES"]
    }
  }
}

Fjalor i personalizuar

Mund ta drejtoni modelin e të folurit drejt fjalëve të pazakonta, zhargonit teknik, emrave të markave ose emrave të përveçëm. Jepni deri në 1,000 terma në vargun custom_vocabulary (rezultatet më të mira arrihen zakonisht me deri në 100 terma):

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"],
    },
  },
});

PUSHTIM

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"]
      }
    }
  }'

Diarizimi i folësit

Diagrami i folësit identifikon zëra të ndryshëm në regjistrim dhe etiketon çdo segment me një identifikues folësi si spk_1 ose spk_2 . Mbështeten deri në 8 folës (atribuimi për 3 ose më shumë folës është eksperimental).

Aktivizo diarization duke konfiguruar diarization_mode brenda 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",
      },
    },
  },
});

PUSHTIM

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"
        }
      }
    }
  }'

Vula kohore në nivel fjalësh

Vulat kohore të nivelit të fjalës ofrojnë zhvendosje të sakta të fillimit dhe mbarimit për çdo fjalë të njohur në transmetimin audio.

Aktivizoni vulat kohore duke konfiguruar timestamp_granularities brenda 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"],
      },
    },
  },
});

PUSHTIM

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"]
        }
      }
    }
  }'

Mund të kombinoni diarization_mode dhe timestamp_granularitiesmode për të marrë si etiketat e folësve ashtu edhe vulat kohore të fjalëve:

Python

generation_config = {
    "transcription_config": {
        "custom_vocabulary": ["Gemini"],
        "mode": {
            "type": "verbatim",
            "diarization_mode": "speaker",
            "timestamp_granularities": ["word"],
        },
    }
}

JavaScript

const generationConfig = {
  transcription_config: {
    custom_vocabulary: ["Gemini"],
    mode: {
      type: "verbatim",
      diarization_mode: "speaker",
      timestamp_granularities: ["word"],
    },
  },
};

PUSHTIM

{
  "generation_config": {
    "transcription_config": {
      "custom_vocabulary": ["Gemini"],
      "mode": {
        "type": "verbatim",
        "diarization_mode": "speaker",
        "timestamp_granularities": ["word"]
      }
    }
  }
}

Modalitetet e transkriptimit

Gemini 3.5 Transcribe mbështet dy mënyra transkriptimi nëpërmjet parametrit të mode :

  • verbatim (parazgjedhur) : Kthen një transkript të saktë fjalë për fjalë të gjithçkaje të folur, duke ruajtur fjalët plotësuese të papërpunuara ("ëm", "ëëë", "si", "e di"), përsëritjet, pauzat dhe fillimet e rreme. Vulat kohore dhe diarizacioni i folësit konfigurohen brenda këtij modaliteti ( {"type": "verbatim", ...} ).
  • smart (Transkriptim i zgjuar) : Optimizon transkriptin për lexim duke aplikuar përpunimin inteligjent pas leximit:
    • Heqja e rrjedhshmërisë së gabuar : Heq fjalët plotësuese të bisedës, belbëzimin dhe fillimet e gabuara.
    • Vetë-korrigjimet brenda rreshtit : Zgjidh drejtpërdrejt korrigjimet me gojë (për shembull, "Takohemi të martën, në fakt jo, të mërkurën në orën dy" bëhet "Takohemi të mërkurën në orën 14:00" ).
    • Formatim automatik i strukturuar : Strukturon automatikisht mendimet e folura në paragrafë, lista të numëruara, pika, data të formatuara, monedha dhe numra.
    • Pastrim gramatikor : Zbaton pikësimin natyror, shkronjat e mëdha dhe rrjedhshmërinë e fjalive.
Audio e folur rezultat verbatim dalje smart (transkriptim inteligjent)
"Ëëë, pra për takimin, mendoj se duhet, ëëë, të ftojmë Alisën dhe, prit jo, Bobin dhe Karolën." "Ëhëm, kështu që për takimin mendoj se duhet ta ftojmë Alisën dhe të presim jo Bobin dhe Karolën." "Për takimin, mendoj se duhet të ftojmë Bobin dhe Kerolin."
"Artikulli i parë shqyrto buxhetin, pika e dytë finalizo afatin kohor, pika e tretë dërgo përmbledhjen" "pika e parë rishiko buxhetin pika e dytë finalizo afatin kohor pika e tretë dërgo përmbledhjen" "1. Rishikoni buxhetin
2. Përfundoni afatin kohor
3. Dërgo përmbledhjen

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);

PUSHTIM

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"
      }
    }
  }'

Analiza e rezultatit të transkriptimit

Teksti i plotë i transkriptit kthehet në interaction.output_text .

Kur aktivizohen timestamp_granularities ose diarization_mode , API-ja kthen gjithashtu shënime të detajuara në nivel fjalësh të bashkangjitura në përmbajtjen e ndërveprimit.

Ja se si të nxirrni dhe përsërisni mbi vulat kohore të fjalëve dhe kthesat e folësve:

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}`);
}

PUSHTIM

{
  "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.450s"
            },
            {
              "type": "word_info",
              "text": "world",
              "speaker": "spk_1",
              "start_offset": "0.500s",
              "end_offset": "0.850s"
            }
          ]
        }
      ]
    }
  ]
}

Gjuhët e mbështetura

Gjuhët dhe kodet gjuhësore BCP-47 të mëposhtme mbështeten për Gemini 3.5 Transcribe:

Gjuha Kodi BCP-47 Gjuha Kodi BCP-47
Afrikanisht af-ZA Japonez ja-JP
Amarike am-ET Javanisht jv-ID
Arabisht (Egjipt) ar-EG Kabuverdianu kea-CV
armenisht hy-AM Kannada kn-IN
Asamezisht as-IN Kazake kk-KZ
Azerbajxhanisht az-AZ Koreane ko-KR
Bjellorusisht be-BY kirgizisht ky-KG
Bengalisht (Bangladesh) bn-BD letonisht lv-LV
Bengalisht (Indi) bn-IN Lingala ln-CD
boshnjak bs-BA lituanisht lt-LT
bullgar bg-BG maqedonase mk-MK
Bullgarisht (arumunë) rup-BG Malajisht ms-MY
birmanisht my-MM Malajalamisht ml-IN
Kantoneze (Tradicionale) yue-Hant-HK maltezisht mt-MT
Katalanisht ca-ES Kinezishtja Mandarin (e Thjeshtuar) cmn-Hans-CN
Cebuanisht ceb Marathi mr-IN
Khmer Qendrore km-KH mongolisht mn-MN
Kroatisht hr-HR Nepalisht ne-NP
Çeke cs-CZ Norvegjisht nb-NO
danez da-DK Orija or-IN
holandez nl-NL polak pl-PL
Anglisht (Britania e Madhe) en-GB Portugalisht (Brazil) pt-BR
Anglisht (India) en-IN Portugalisht (Portugali) pt-PT
Anglisht (Shtetet e Bashkuara) en-US Punjabi pa-IN
Estonisht et-EE Punjabi (shkrimi Gurmukhi) pa-Guru-IN
Farsi fa-IR rumanisht ro-RO
Filipinase fil-PH ruse ru-RU
finlandez fi-FI serbisht sr-RS
frëngjisht fr-FR Sindhi (shkrimi arab) sd-Arab-IN
galike gl-ES Sllovakisht sk-SK
gjeorgjian ka-GE sllovenisht sl-SI
gjermanisht de-DE Spanjisht (Amerika Latine) es-419
grek el-GR Spanjisht (Shtetet e Bashkuara) es-US
Guxharatisht gu-IN Suahili (Kenia) sw-KE
Hausisht ha-NG suedeze sv-SE
Hebraisht he-IL Taxhikisht tg-TJ
Hindisht hi-IN Teluguisht te-IN
hungareze hu-HU Tajlandeze th-TH
Islandeze is-IS turk tr-TR
Anglisht indiane en-IN ukrainas uk-UA
Indonezisht id-ID Uzbekisht uz-UZ
italiane it-IT Vietnamez vi-VN

Referenca e parametrit

Konfiguro transkriptimin duke vendosur fusha brenda objektit transcription_configgeneration_config :

Fushë Lloji Përshkrimi
language_codes Matricë vargjesh Kodet e gjuhës BCP-47 (p.sh., ["en-US"] ). Nëse lihen jashtë ose janë bosh ( [] ), modeli e zbulon automatikisht gjuhën dhe merret me ndërrimin e kodit.
custom_vocabulary Matricë vargjesh Deri në 1,000 terma, akronime ose emra të përveçëm të personalizuar për të shtrembëruar njohjen e të folurit.
mode Objekti ose vargu Konfigurimi i modalitetit të transkriptimit. Pranon "smart" ose një objekt të modalitetit fjalë për fjalë ( {"type": "verbatim", ...} ). Parazgjedhja është transkriptimi fjalë për fjalë.
mode.type Varg (Vetëm në modalitetin fjalë për fjalë) Identifikuesi i modalitetit. Gjithmonë i vendosur në "verbatim" .
mode.timestamp_granularities Matricë vargjesh (Vetëm në modalitetin fjalë për fjalë) Granulariteti i vulave kohore që do të kthehen. Kaloni ["word"] për të aktivizuar zhvendosjet e fillimit dhe mbarimit të fjalës.
mode.diarization_mode Varg (Vetëm në modalitetin fjalë për fjalë) Modaliteti i diarizimit. Kaloni "speaker" për të identifikuar dhe etiketuar folës të dallueshëm.

Praktikat më të mira

  • Siguroni audio të pastër: Sigurohuni që regjistrimet audio të kenë ndarje të qartë të zërit dhe të shmangni prerjet e rënda.
  • Jepni sugjerime gjuhësore kur i dini: Nëse e dini paraprakisht gjuhën e audios, specifikoni language_codes për të maksimizuar saktësinë.
  • Fjalor i personalizuar i synuar: Përfshi vetëm terma të dallueshëm domeni, emra markash ose emra të përveçëm në custom_vocabulary në vend të fjalëve të zakonshme të përditshme.
  • Përdorni API-n e Skedarëve për regjistrime të mëdha: Për skedarët më të gjatë se disa sekonda, ngarkoni skedarin duke përdorur client.files.upload dhe kalojini modelit URI-në e skedarit të kthyer.

Kufizime

  • Kohëzgjatja e audios: Kërkesat standarde unary mbështesin skedarë audio deri në 1 orë. Përpunimi i audios është i kufizuar në 30 minuta kur aktivizohen veçori si ditarizimi i folësit ose vulat kohore në nivel fjale.
  • Vula kohore në nivel fjale: Aktivizimi i vulave kohore në nivel fjale mund të degradojë saktësinë e përgjithshme të transkriptimit.
  • Diarizimi i folësit: Diarizimi i folësit mbështet deri në 8 folës. Atribuimi i folësit për 3 ose më shumë folës është eksperimental.
  • Fjalor i personalizuar: Mund të jepni deri në 1,000 terma në custom_vocabulary , por rezultatet më të mira zakonisht arrihen me deri në 100 terma.
  • Pajtueshmëria e modalitetit: Transkriptimi inteligjent ( "smart" ) nuk mund të kombinohet me timestamp_granularities ose diarization_mode .

Çfarë vjen më pas