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_granularities në mode 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_config në generation_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_codespë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_vocabularynë 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.uploaddhe 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 metimestamp_granularitiesosediarization_mode.
Çfarë vjen më pas
- Transmetoni audio në kohë reale me udhëzuesin e transkriptimit Live duke përdorur API-n Live.
- Eksploroni të kuptuarit e audios për të analizuar, përmbledhur ose pyetur përmbajtjen audio.
- Mësoni si të sintetizoni audion nga teksti duke përdorur Tekst-në-fjalë .
- Kontrolloni faqen e Çmimeve për çmimet e modeleve dhe limitet e tokenëve.
- Kontrolloni udhëzuesin e API-t të Skedarëve për detaje mbi ngarkimin dhe menaxhimin e skedarëve mediatikë.