رونویسی زنده با Gemini Live API

رابط برنامه‌نویسی نرم‌افزار Gemini Live از تبدیل گفتار به متن با تأخیر کم و به‌صورت بلادرنگ با استفاده از مدل gemini-3.5-transcribe-live پشتیبانی می‌کند. با اتصال به رابط برنامه‌نویسی نرم‌افزار Live از طریق WebSockets یا استفاده از Google Gen AI SDK، می‌توانید ورودی صوتی پیوسته را پخش کنید و همزمان با وقوع گفتار، رونوشت‌های متنی افزایشی و بلادرنگ دریافت کنید.

با بهره‌گیری از رابط برنامه‌نویسی Gemini Live API، پلتفرم‌های توسعه‌دهندگان مانند Agora ، Fishjam ، LiveKit ، Pipecat ، Vercel و Vision Agents به توسعه‌دهندگان این امکان را می‌دهند که رابط‌های کاربری صوتی با عملکرد بالا را به راحتی بسازند و پیاده‌سازی کنند. این پلتفرم‌ها زیرساخت‌های پیچیده پخش رسانه‌ای بلادرنگ را در پشت صحنه مدیریت می‌کنند و به توسعه‌دهندگان اجازه می‌دهند تا کاملاً بر ایجاد تجربه کاربری تمرکز کنند.

عامل زنده در مقابل رونویسی زنده

در حالی که هر دو از اتصال دو طرفه پخش زنده API استفاده می‌کنند، Live Transcription به عنوان یک خط لوله تشخیص گفتار اختصاصی و با تأخیر کم عمل می‌کند، نه یک عامل مکالمه.

ویژگی عامل زنده رونویسی زنده
نقش اصلی دستیار مکالمه‌ای که گوش می‌دهد، استدلال می‌کند و پاسخ می‌دهد. خط لوله تبدیل گفتار به متن در لحظه که صدای ورودی را رونویسی می‌کند.
روش پاسخ گفتار صوتی و متن ( response_modalities=["AUDIO"] ). رونوشت‌های متنی در حال پخش ( response_modalities=["TEXT"] ).
سبک تعامل گفتگوی نوبتی با تشخیص مکث و وقفه. پردازش جریان پیوسته همزمان با صحبت‌های گوینده.
ویژگی‌های پشتیبانی‌شده فراخوانی تابع، جستجوی گوگل، دستورالعمل‌های سیستم. سوگیری گفتار ( custom_vocabulary )، تشخیص زبان، VAD دستی و ترکیبی، رونویسی هوشمند.
جریان ورودی چندوجهی: صدا، ویدئو، تصویر، متن. ورودی صدا (PCM خام ۱۶ بیتی).

شروع کنید

مثال‌های زیر نحوه‌ی باز کردن یک جلسه‌ی استریمینگ دوطرفه با gemini-3.5-transcribe-live و دریافت رونوشت‌های بلادرنگ را نشان می‌دهند.

پایتون

import asyncio
from google import genai
from google.genai import types

client = genai.Client()
model = "gemini-3.5-transcribe-live"

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(
        language_codes=[],  # Automatic language detection
    ),
)

async def main():
    async with client.aio.live.connect(model=model, config=config) as session:
        print("Session established with Live Transcription")

        # Receive transcription events
        async for response in session.receive():
            server_content = response.server_content
            if server_content and server_content.input_transcription:
                print("Transcript:", server_content.input_transcription.text)

if __name__ == "__main__":
    asyncio.run(main())

جاوا اسکریپت

import { GoogleGenAI, Modality } from '@google/genai';

const ai = new GoogleGenAI({});
const model = 'gemini-3.5-transcribe-live';

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {
    languageCodes: [], // Automatic language detection
  },
};

async function main() {
  const session = await ai.live.connect({
    model: model,
    config: config,
    callbacks: {
      onopen: () => console.log('Connected to Live Transcription'),
      onmessage: (message) => {
        const content = message.serverContent;
        if (content?.inputTranscription) {
          console.log('Transcript:', content.inputTranscription.text);
        }
      },
      onerror: (e) => console.error('Error:', e.message),
      onclose: (e) => console.log('Connection closed:', e.reason),
    },
  });
}

main();

وب‌سوکت‌ها

const API_KEY = "YOUR_API_KEY";
const MODEL_NAME = "gemini-3.5-transcribe-live";
const WS_URL = `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent?key=${API_KEY}`;

const websocket = new WebSocket(WS_URL);

websocket.onopen = () => {
  console.log('WebSocket connected');

  const setupMessage = {
    setup: {
      model: `models/${MODEL_NAME}`,
      generationConfig: {
        responseModalities: ['TEXT'],
      },
      inputAudioTranscription: {
        languageCodes: []
      }
    }
  };
  websocket.send(JSON.stringify(setupMessage));
};

websocket.onmessage = (event) => {
  const response = JSON.parse(event.data);
  const content = response.serverContent;
  if (content?.inputTranscription) {
    console.log('Transcript:', content.inputTranscription.text);
  }
};

رونوشت‌های موقت و نهایی

همزمان با پخش جریان‌های صوتی در Live API، سرور دو فیلد رونویسی مکمل را در server_content منتشر می‌کند:

  • interim_input_transcription : فرضیه‌های جزئی گمانه‌زن و با تأخیر کم که هنگام صحبت فعال گوینده به‌روزرسانی می‌شوند. این به‌روزرسانی‌های جزئی به سرعت و با حداقل تأخیر رخ می‌دهند. interim_input_transcription برای رندر زیرنویس‌های زنده رابط کاربری واکنش‌گرا یا پیش‌نمایش زیرنویس‌ها استفاده کنید.
  • input_transcription : متن نهایی که هنگام مکث گوینده، تکمیل نوبت یا نهایی شدن گفتار منتشر می‌شود. پس از انتشار، این متن نشان‌دهنده‌ی متن معتبر مدل از آن بخش گفتار است. در حالت متن هوشمند، این متن شامل پاسخ تمیز و قالب‌بندی شده خواهد بود.

مثال زیر نحوه نمایش بخش‌های موقت استریمینگ و کامیت کردن رونوشت‌های نهایی را نشان می‌دهد:

پایتون

async def receive_transcripts(session):
    async for response in session.receive():
        server_content = response.server_content
        if not server_content:
            continue

        # Real-time interim hypothesis (updates dynamically as user speaks)
        if server_content.interim_input_transcription:
            interim_text = server_content.interim_input_transcription.text
            print(f"\r[Interim] {interim_text}", end="", flush=True)

        # Finalized transcript (emitted on speech completion)
        if server_content.input_transcription:
            final_text = server_content.input_transcription.text
            print(f"\n[Final] {final_text}")

جاوا اسکریپت

onmessage: (message) => {
  const content = message.serverContent;
  if (!content) return;

  if (content.interimInputTranscription) {
    // Update live subtitle preview on screen
    renderInterimPreview(content.interimInputTranscription.text);
  }

  if (content.inputTranscription) {
    // Append final committed transcript to chat history
    commitFinalTranscript(content.inputTranscription.text);
  }
};

وب‌سوکت‌ها

websocket.onmessage = (event) => {
  const response = JSON.parse(event.data);
  const content = response.serverContent;
  if (content?.interimInputTranscription) {
    console.log('[Interim]:', content.interimInputTranscription.text);
  }
  if (content?.inputTranscription) {
    console.log('[Final]:', content.inputTranscription.text);
  }
};

ارسال صدا

پخش تکه‌های صدا از طریق اتصال فعال به عنوان صدای خام PCM با کیفیت ۱۶ بیت.

  • فرمت صدا: PCM خام ۱۶ بیتی با فرکانس ۱۶ کیلوهرتز (مونو، لیتل اندیان).
  • اندازه قطعه: صدا را در قطعات ۱۰۰ میلی‌ثانیه‌ای (۱۰۲۴ تا ۲۰۴۸ فریم) ارسال کنید.
  • نوع MIME: audio/pcm;rate=16000 (یا نرخ نمونه‌برداری منطبق).

پایتون

# Stream a raw PCM audio chunk
await session.send_realtime_input(
    audio=types.Blob(
        data=audio_chunk_bytes,
        mime_type="audio/pcm;rate=16000"
    )
)

# Signal the end of the audio stream when finished
await session.send_realtime_input(audio_stream_end=True)

جاوا اسکریپت

// Send base64-encoded PCM audio chunk
session.sendRealtimeInput({
  audio: {
    data: audioChunkBase64,
    mimeType: 'audio/pcm;rate=16000'
  }
});

// Signal stream end
session.sendRealtimeInput({
  audioStreamEnd: true
});

وب‌سوکت‌ها

// Send base64-encoded PCM audio chunk
websocket.send(JSON.stringify({
  realtimeInput: {
    audio: {
      data: audioChunkBase64,
      mimeType: 'audio/pcm;rate=16000'
    }
  }
}));

// Signal stream end
websocket.send(JSON.stringify({
  realtimeInput: {
    audioStreamEnd: true
  }
}));

ویژگی‌های رونویسی

تشخیص خودکار زبان

به طور پیش‌فرض، حذف language_codes یا تنظیم language_codes=[] شناسایی خودکار زبان را فعال می‌کند. این مدل به صورت پویا زبان گفتاری را در میان گفتارها، از جمله مکالمات چندزبانه و تغییر کد، تشخیص می‌دهد.

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(
        language_codes=[],
    ),
)

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {
    languageCodes: [],
  },
};

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    inputAudioTranscription: {
      languageCodes: [],
    },
  },
};
websocket.send(JSON.stringify(setupMessage));

راهنمایی زبان خاص

کدهای زبانی BCP-47 صریح (مثلاً ["es-ES"] برای اسپانیایی یا ["fr-FR"] برای فرانسوی) ارائه دهید تا تشخیص به سمت زبان‌های خاص متمایل شود (به زبان‌های پشتیبانی‌شده مراجعه کنید).

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(
        language_codes=["es-ES"],
    ),
)

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {
    languageCodes: ['es-ES'],
  },
};

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    inputAudioTranscription: {
      languageCodes: ['es-ES'],
    },
  },
};
websocket.send(JSON.stringify(setupMessage));

سوگیری واژگان سفارشی

فهرستی از حداکثر ۱۰۰۰ عبارت، اسم خاص، نام‌های تجاری یا اصطلاحات فنی در custom_vocabulary ارائه دهید تا تشخیص گفتار را به سمت اصطلاحات خاص متمایل کند (بهترین نتایج معمولاً با حداکثر ۱۰۰ اصطلاح حاصل می‌شود).

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(
        language_codes=[],
        custom_vocabulary=["Gemini", "Kubernetes", "BigQuery"],
    ),
)

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {
    languageCodes: [],
    customVocabulary: ['Gemini', 'Kubernetes', 'BigQuery'],
  },
};

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    inputAudioTranscription: {
      languageCodes: [],
      customVocabulary: ['Gemini', 'Kubernetes', 'BigQuery'],
    },
  },
};
websocket.send(JSON.stringify(setupMessage));

رونویسی هوشمند

قالب‌بندی خروجی رونویسی را با استفاده از پارامتر mode در input_audio_transcription پیکربندی کنید:

  • VERBATIM (پیش‌فرض) : متن دقیقی از هر آنچه گفته می‌شود تولید می‌کند و کلمات پرکننده خام ("امم"، "اوه"، "مثلاً") ، تکرارها و شروع‌های نادرست را حفظ می‌کند.
  • SMART (رونویسی هوشمند) : رونوشت را برای خوانایی تمیز و ساختارمند می‌کند:

    • رفع ناروانی گفتار : کلمات پرکننده، لکنت زبان و شروع‌های نادرست گفتار را حذف می‌کند.
    • خود-اصلاحی‌های درون‌خطی : اصلاحات گفتاری را به طور طبیعی انجام می‌دهد.
    • قالب‌بندی ساختاریافته : فهرست‌ها، نقاط بولت، اعداد، تاریخ‌ها و پاراگراف‌بندی‌ها را به‌طور خودکار قالب‌بندی می‌کند.
    • دستور زبان و حروف بزرگ : از حروف بزرگ طبیعی و اصلاح علائم نگارشی استفاده می‌کند.

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(
        mode="SMART",
    ),
)

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {
    mode: 'SMART',
  },
};

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    inputAudioTranscription: {
      mode: 'SMART',
    },
  },
};
websocket.send(JSON.stringify(setupMessage));

استراتژی‌های تشخیص فعالیت صوتی (VAD)

VAD خودکار (پیش‌فرض)

به طور پیش‌فرض، تشخیص خودکار فعالیت صوتی سمت سرور، زمان شروع و پایان صحبت گوینده را تشخیص می‌دهد.

VAD ترکیبی

VAD ترکیبی، تشخیص خودکار شروع گفتار سمت سرور را با تشخیص پایان گفتار سمت کلاینت ترکیب می‌کند تا تبدیل گفتار به گفتار نهایی بدون تأخیر انجام شود:

  1. VAD خودکار سمت سرور همچنان فعال است تا با استفاده از پدگذاری صوتی پیشوند، شروع گفتار را به طور دقیق تشخیص دهد و از کوتاه شدن کلمه جلویی جلوگیری کند.
  2. تشخیص سکوت توسط VAD سمت کلاینت : وقتی یک VAD محلی روی دستگاه تشخیص می‌دهد که گوینده صحبت خود را متوقف کرده است، کلاینت بلافاصله یک سیگنال audio_stream_end ارسال می‌کند.
  3. نهایی‌سازی سریع : سرور audio_stream_end به عنوان یک اعلان نهایی‌سازی نوبت فوری رفتار می‌کند، زمان انتظار سکوت پیش‌فرض سمت سرور را دور می‌زند و رونوشت نهایی را با حداقل تأخیر برمی‌گرداند.
  4. پشتیبان : اگر VAD سمت کلاینت نتواند فعال شود، VAD سمت سرور به عنوان پشتیبان خودکار عمل می‌کند.

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    input_audio_transcription=types.AudioTranscriptionConfig(),
)

async with client.aio.live.connect(model=model, config=config) as session:
    # Stream audio chunks...
    await session.send_realtime_input(
        audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
    )

    # When client-side VAD detects end of speech, send audio_stream_end:
    await session.send_realtime_input(audio_stream_end=True)

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  inputAudioTranscription: {},
};

// Stream audio...
session.sendRealtimeInput({
  audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' }
});

// When client VAD detects end of speech, send audioStreamEnd:
session.sendRealtimeInput({
  audioStreamEnd: true
});

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    inputAudioTranscription: {},
  },
};
websocket.send(JSON.stringify(setupMessage));

// Stream audio...
websocket.send(JSON.stringify({
  realtimeInput: {
    audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' }
  }
}));

// When client VAD detects end of speech, send audioStreamEnd:
websocket.send(JSON.stringify({
  realtimeInput: {
    audioStreamEnd: true
  }
}));

VAD دستی (فشار برای صحبت)

برای رابط‌های واکی‌تاکی یا دکمه‌های فشاری، VAD خودکار را به‌طور کامل غیرفعال کنید و مرزهای چرخش را به‌طور صریح با استفاده از activity_start و activity_end کنترل کنید:

پایتون

config = types.LiveConnectConfig(
    response_modalities=["TEXT"],
    realtime_input_config=types.RealtimeInputConfig(
        automatic_activity_detection=types.AutomaticActivityDetection(
            disabled=True
        )
    ),
    input_audio_transcription=types.AudioTranscriptionConfig(),
)

async with client.aio.live.connect(model=model, config=config) as session:
    # Button pressed: signal speech start
    await session.send_realtime_input(activity_start=types.ActivityStart())

    # Stream audio chunks...
    await session.send_realtime_input(audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000"))

    # Button released: signal speech end
    await session.send_realtime_input(activity_end=types.ActivityEnd())

جاوا اسکریپت

const config = {
  responseModalities: [Modality.TEXT],
  realtimeInputConfig: {
    automaticActivityDetection: {
      disabled: true,
    },
  },
  inputAudioTranscription: {},
};

// Signal speech start
session.sendRealtimeInput({ activityStart: {} });

// Stream audio...

// Signal speech end
session.sendRealtimeInput({ activityEnd: {} });

وب‌سوکت‌ها

const setupMessage = {
  setup: {
    model: 'models/gemini-3.5-transcribe-live',
    generationConfig: {
      responseModalities: ['TEXT'],
    },
    realtimeInputConfig: {
      automaticActivityDetection: {
        disabled: true,
      },
    },
    inputAudioTranscription: {},
  },
};
websocket.send(JSON.stringify(setupMessage));

// Button pressed: signal speech start
websocket.send(JSON.stringify({
  realtimeInput: {
    activityStart: {},
  },
}));

// Stream audio...
websocket.send(JSON.stringify({
  realtimeInput: {
    audio: { data: chunkBase64, mimeType: 'audio/pcm;rate=16000' },
  },
}));

// Button released: signal speech end
websocket.send(JSON.stringify({
  realtimeInput: {
    activityEnd: {},
  },
}));

توکن‌های زودگذر در برنامه‌های کلاینت

برای برنامه‌های کلاینت-به-سرور (مانند برنامه‌های موبایل یا وب که مستقیماً از میکروفون پخش می‌شوند)، از توکن‌های موقت استفاده کنید تا از افشای کلید API خود در کد کلاینت جلوگیری کنید.

قبل از شروع اتصال کلاینت، یک توکن موقت محدود روی سرور خود ایجاد کنید:

پایتون

import datetime
from google import genai

client = genai.Client()
expire_time = datetime.datetime.now(tz=datetime.timezone.utc) + datetime.timedelta(minutes=30)

token = client.auth_tokens.create(
    config={
        "uses": 1,
        "expire_time": expire_time,
        "live_connect_constraints": {
            "model": "gemini-3.5-transcribe-live",
            "config": {
                "response_modalities": ["TEXT"],
                "input_audio_transcription": {
                    "language_codes": [],
                },
            },
        },
    }
)

جاوا اسکریپت

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

const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();

const token = await client.authTokens.create({
  config: {
    uses: 1,
    expireTime: expireTime,
    liveConnectConstraints: {
      model: 'gemini-3.5-transcribe-live',
      config: {
        responseModalities: ['TEXT'],
        inputAudioTranscription: {
          languageCodes: [],
        },
      },
    },
  },
});

استراحت

curl -X POST "https://generativelanguage.googleapis.com/v1beta/auth_tokens" \
  -H "x-goog-api-key: ${GEMINI_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "uses": 1,
    "expireTime": "YYYY-MM-DDTHH:MM:SSZ",
    "liveConnectConstraints": {
      "model": "models/gemini-3.5-transcribe-live",
      "config": {
        "responseModalities": ["TEXT"],
        "inputAudioTranscription": {
          "languageCodes": []
        }
      }
    }
  }'

زبان‌های پشتیبانی‌شده

زبان‌های زیر و کدهای زبان BCP-47 برای Gemini 3.5 Transcribe Live پشتیبانی می‌شوند:

زبان کد 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
بلاروسی 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

مرجع پارامتر

رونویسی زنده را با استفاده از فیلدهای input_audio_transcription و realtime_input_config پیکربندی کنید:

پارامتر نوع توضیحات
language_codes آرایه‌ای از رشته‌ها کدهای زبان BCP-47 (مثلاً ["en-US"] ). اگر حذف یا خالی باشد ( [] )، مدل به طور خودکار زبان را تشخیص داده و گفتار چندزبانه را مدیریت می‌کند.
custom_vocabulary آرایه‌ای از رشته‌ها تا ۱۰۰۰ اصطلاح، کلمات اختصاری، نام‌های تجاری یا اسم‌های خاص سفارشی برای سوگیری در تشخیص گفتار.
mode رشته حالت آوانویسی: "VERBATIM" (پیش‌فرض) یا "SMART" (رونویسی هوشمند). وقتی روی "SMART" تنظیم شود، مدل کلمات پرکننده را حذف می‌کند، فهرست‌ها را قالب‌بندی می‌کند و ناروانی‌ها را اصلاح می‌کند.
automatic_activity_detection.disabled بولی برای غیرفعال کردن تشخیص خودکار فعالیت صوتی و ارسال دستی سیگنال‌های activityStart و activityEnd ، روی true تنظیم کنید.

فیلدهای پاسخ سرور

میدان توضیحات
server_content.interim_input_transcription فرضیه رونویسی جزئی موقت با تأخیر کم که به طور مداوم در حالی که کاربر به طور فعال صحبت می‌کند، منتشر می‌شود.
server_content.input_transcription متن ورودی نهایی و معتبر، پس از پایان نوبت سخنرانی منتشر می‌شود.

محدودیت‌ها

  • مدت زمان جلسه: جلسات رونویسی زنده از پخش مداوم تا 10 دقیقه پشتیبانی می‌کنند.
  • تنظیم تاریخ گوینده: تنظیم تاریخ گوینده در جلسات پخش زنده پشتیبانی نمی‌شود. برای تنظیم تاریخ گوینده، از نقطه پایانی رونویسی صوتی غیر استریمینگ استفاده کنید.
  • مهرهای زمانی سطح کلمه: مهرهای زمانی سطح کلمه در Live API پشتیبانی نمی‌شوند. Live API مهرهای زمانی سطح گفتار ( interim_input_transcription و input_transcription ) را منتشر می‌کند.
  • واژگان سفارشی: شما می‌توانید تا ۱۰۰۰ اصطلاح را در custom_vocabulary ارائه دهید، اما بهترین نتایج معمولاً با حداکثر ۱۰۰ اصطلاح حاصل می‌شود.
  • سازگاری با حالت: رونویسی هوشمند ( "mode": "SMART" ) کلمات پرکننده را حذف کرده و متن را با هدف مشخص قالب‌بندی می‌کند، اما نمی‌تواند با حاشیه‌نویسی کلمات ترکیب شود.

قدم بعدی چیست؟