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 diarization në True :
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_timestamp në True :
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_config në GenerateContentConfig :
| 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_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 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 meword_timestamposediarization.
Ç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ë.