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

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const audioFile = await ai.files.upload({
  file: "path/to/sample.mp3",
  mimeType: "audio/mp3",
});

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
});

console.log(response.text);

PUSHTIM

# First upload the file via the Files API, then pass its URI:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "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

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
    config=types.GenerateContentConfig(
        audio_transcription_config=types.AudioTranscriptionConfig(
            language_codes=[],
        )
    ),
)

JavaScript

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
  config: {
    audioTranscriptionConfig: {
      languageCodes: [],
    },
  },
});

PUSHTIM

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "audio/mp3"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "audioTranscriptionConfig": {
        "languageCodes": []
      }
    }
  }'

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

config = types.GenerateContentConfig(
    audio_transcription_config=types.AudioTranscriptionConfig(
        language_codes=["es-ES"],
    )
)

JavaScript

const config = {
  audioTranscriptionConfig: {
    languageCodes: ["es-ES"],
  },
};

PUSHTIM

{
  "generationConfig": {
    "audioTranscriptionConfig": {
      "languageCodes": ["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

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
    config=types.GenerateContentConfig(
        audio_transcription_config=types.AudioTranscriptionConfig(
            custom_vocabulary=["Gemini", "Kubernetes", "BigQuery"],
        )
    ),
)

JavaScript

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
  config: {
    audioTranscriptionConfig: {
      customVocabulary: ["Gemini", "Kubernetes", "BigQuery"],
    },
  },
});

PUSHTIM

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "audio/mp3"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "audioTranscriptionConfig": {
        "customVocabulary": ["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 diarizimin duke e vendosur diarizationTrue :

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
    config=types.GenerateContentConfig(
        audio_transcription_config=types.AudioTranscriptionConfig(
            diarization=True,
        )
    ),
)

JavaScript

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
  config: {
    audioTranscriptionConfig: {
      diarization: true,
    },
  },
});

PUSHTIM

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "audio/mp3"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "audioTranscriptionConfig": {
        "diarization": true
      }
    }
  }'

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.

Aktivizo vulat kohore duke e vendosur word_timestampTrue :

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
    config=types.GenerateContentConfig(
        audio_transcription_config=types.AudioTranscriptionConfig(
            word_timestamp=True,
        )
    ),
)

JavaScript

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
  config: {
    audioTranscriptionConfig: {
      wordTimestamp: true,
    },
  },
});

PUSHTIM

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "audio/mp3"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "audioTranscriptionConfig": {
        "wordTimestamp": true
      }
    }
  }'

Mund të kombinoni diarization dhe word_timestamp në një kërkesë të vetme për të marrë si etiketat e folësit ashtu edhe vulat kohore të fjalëve:

Python

config = types.GenerateContentConfig(
    audio_transcription_config=types.AudioTranscriptionConfig(
        diarization=True,
        word_timestamp=True,
        custom_vocabulary=["Gemini"],
    )
)

JavaScript

const config = {
  audioTranscriptionConfig: {
    diarization: true,
    wordTimestamp: true,
    customVocabulary: ["Gemini"],
  },
};

PUSHTIM

{
  "generationConfig": {
    "audioTranscriptionConfig": {
      "diarization": true,
      "wordTimestamp": true,
      "customVocabulary": ["Gemini"]
    }
  }
}

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. E nevojshme kur përdoren pulla kohore ose diarizimi i folësit.
  • SMART (Transkriptim inteligjent) : 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 VERBATIM Dalja SMART (Transkriptim i Mençur)
"Ëëë, 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

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-transcribe",
    contents=[audio_file],
    config=types.GenerateContentConfig(
        audio_transcription_config=types.AudioTranscriptionConfig(
            mode="SMART",
        )
    ),
)
print(response.text)

JavaScript

const response = await ai.models.generateContent({
  model: "gemini-3.5-transcribe",
  contents: [audioFile],
  config: {
    audioTranscriptionConfig: {
      mode: "SMART",
    },
  },
});
console.log(response.text);

PUSHTIM

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "fileData": {
              "fileUri": "YOUR_FILE_URI",
              "mimeType": "audio/mp3"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "audioTranscriptionConfig": {
        "mode": "SMART"
      }
    }
  }'

Analiza e rezultatit të transkriptimit

Teksti i plotë i transkriptit kthehet në response.text .

Kur aktivizohet word_timestamp ose diarization , API kthen gjithashtu shënime të detajuara në nivelin e fjalës dhe etiketa të folësve të bashkangjitura në pjesët kandidate.

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

Python

def extract_word_transcriptions(response):
    words = []
    for candidate in getattr(response, "candidates", []) or []:
        content = getattr(candidate, "content", None)
        for part in getattr(content, "parts", []) or []:
            transcription = getattr(part, "audio_transcription", None)
            if transcription:
                speaker = getattr(transcription, "speaker_label", "")
                for word_info in getattr(transcription, "words", []) or []:
                    word = getattr(word_info, "word", "")
                    start = getattr(word_info, "start_offset", "")
                    end = getattr(word_info, "end_offset", "")
                    words.append({
                        "word": word,
                        "speaker": speaker,
                        "start_offset": start,
                        "end_offset": end,
                    })
    return words

words = extract_word_transcriptions(response)

for w in words:
    speaker = f"[{w['speaker']}] " if w["speaker"] else ""
    timing = f"({w['start_offset']} -> {w['end_offset']}) " if w["start_offset"] and w["end_offset"] else ""
    print(f"{speaker}{timing}{w['word']}")

JavaScript

function extractWordTranscriptions(response) {
  const words = [];
  for (const candidate of response.candidates ?? []) {
    for (const part of candidate.content?.parts ?? []) {
      const transcription = part.audioTranscription;
      if (transcription) {
        const speaker = transcription.speakerLabel ?? "";
        for (const wordInfo of transcription.words ?? []) {
          words.push({
            word: wordInfo.word ?? "",
            speaker: speaker,
            startOffset: wordInfo.startOffset ?? "",
            endOffset: wordInfo.endOffset ?? "",
          });
        }
      }
    }
  }
  return words;
}

const words = extractWordTranscriptions(response);

for (const w of words) {
  const speaker = w.speaker ? `[${w.speaker}] ` : "";
  const timing = (w.startOffset && w.endOffset) ? `(${w.startOffset} -> ${w.endOffset}) ` : "";
  console.log(`${speaker}${timing}${w.word}`);
}

PUSHTIM

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "audioTranscription": {
              "speakerLabel": "spk_1",
              "words": [
                {
                  "word": "Hello",
                  "startOffset": "0.100s",
                  "endOffset": "0.450s"
                },
                {
                  "word": "world",
                  "startOffset": "0.500s",
                  "endOffset": "0.850s"
                }
              ]
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP"
    }
  ]
}

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

Konfiguroni transkriptimin duke vendosur fushat brenda objektit audio_transcription_configGenerateContentConfig :

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.
word_timestamp Boolean Caktoje në True për të përfshirë zhvendosjet e fillimit dhe mbarimit të fjalës. Nëse hiqet ose False , nuk kthehen pulla kohore të fjalës.
diarization Boolean Vendose në True për të identifikuar dhe etiketuar folës të dallueshëm.
mode Varg Modaliteti i transkriptimit. Vlerat e mbështetura: "VERBATIM" (parazgjedhur) dhe "SMART" . I papajtueshëm me vulat kohore dhe diarizacionin.

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 kalojeni skedarin e kthyer te përmbajtja e modelit.

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 ( mode: "SMART" ) nuk mund të kombinohet me word_timestamp ose diarization .

Çfarë vjen më pas