Tính năng chép lời trực tiếp bằng Gemini Live API

Gemini Live API hỗ trợ tính năng chép lời nói thành văn bản theo thời gian thực với độ trễ thấp bằng cách sử dụng mô hình gemini-3.5-transcribe-live. Bằng cách kết nối với Live API qua WebSockets hoặc sử dụng Google Gen AI SDK, bạn có thể truyền trực tuyến dữ liệu đầu vào âm thanh liên tục và nhận được bản chép lời văn bản gia tăng theo thời gian thực khi lời nói xuất hiện.

Bằng cách tận dụng Gemini Live API, các nền tảng dành cho nhà phát triển như Agora, Fishjam, LiveKit, Pipecat, VercelVision Agents giúp nhà phát triển dễ dàng xây dựng và triển khai các giao diện dựa trên giọng nói có hiệu suất cao. Các nền tảng này quản lý cơ sở hạ tầng truyền phát trực tiếp nội dung nghe nhìn phức tạp ở chế độ nền, cho phép nhà phát triển hoàn toàn tập trung vào việc tạo ra trải nghiệm người dùng.

Nhân viên hỗ trợ trực tiếp so với tính năng chép lời trực tiếp

Mặc dù cả hai đều sử dụng kết nối truyền trực tuyến hai chiều Live API, nhưng tính năng Chép lời trực tiếp hoạt động như một quy trình nhận dạng lời nói chuyên dụng, có độ trễ thấp thay vì là một tác nhân đàm thoại.

Tính năng Nhân viên hỗ trợ trực tiếp Chép lời trực tiếp
Vai trò chính Trợ lý đàm thoại có thể lắng nghe, suy luận và phản hồi. Quy trình chuyển lời nói thành văn bản theo thời gian thực, giúp chép lời âm thanh đến.
Phương thức phản hồi Âm thanh lời nói và văn bản (response_modalities=["AUDIO"]). Bản chép lời văn bản truyền trực tuyến (response_modalities=["TEXT"]).
Kiểu tương tác Hội thoại theo lượt có tính năng phát hiện tạm dừng và gián đoạn. Xử lý theo luồng liên tục khi người nói trò chuyện.
Tính năng được hỗ trợ Gọi hàm, Google Tìm kiếm, hướng dẫn hệ thống. Thiên vị lời nói (custom_vocabulary), phát hiện ngôn ngữ, VAD thủ công và kết hợp, phiên âm thông minh.
Luồng dữ liệu đầu vào Đa phương thức: âm thanh, video, hình ảnh, văn bản. Đầu vào âm thanh (PCM 16 bit thô).

Bắt đầu

Các ví dụ sau đây minh hoạ cách mở một phiên truyền phát trực tiếp hai chiều bằng gemini-3.5-transcribe-live và nhận bản chép lời theo thời gian thực.

Python

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

JavaScript

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

WebSockets

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

Bản chép lời tạm thời và bản chép lời hoàn chỉnh

Khi âm thanh truyền vào Live API, máy chủ sẽ phát ra 2 trường chép lời bổ sung trong server_content:

  • interim_input_transcription: giả thuyết một phần mang tính suy đoán, có độ trễ thấp được cập nhật trong khi người nói đang tích cực trò chuyện. Những bản cập nhật một phần này diễn ra nhanh chóng với độ trễ tối thiểu. Sử dụng interim_input_transcription để hiển thị phụ đề trực tiếp thích ứng trên giao diện người dùng hoặc xem trước phụ đề.
  • input_transcription: bản chép lời hoàn chỉnh được phát ra khi người nói tạm dừng, lượt nói kết thúc hoặc lời nói hoàn tất. Sau khi được phát, văn bản này sẽ đại diện cho bản chép lời chính thức của mô hình về đoạn lời nói đó. Ở chế độ chép lời thông minh, nội dung này sẽ bao gồm cả câu trả lời đã được làm sạch và định dạng.

Ví dụ sau đây minh hoạ cách hiển thị các kết quả nhận dạng lời nói tạm thời trong quá trình phát trực tiếp và xác nhận các bản chép lời cuối cùng:

Python

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

JavaScript

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

WebSockets

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

Đang gửi âm thanh

Truyền trực tuyến các đoạn âm thanh qua kết nối đang hoạt động dưới dạng âm thanh PCM 16 bit thô.

  • Định dạng âm thanh: PCM 16 bit thô ở tốc độ 16 kHz (đơn âm, little-endian).
  • Kích thước đoạn: Gửi âm thanh theo các đoạn 100 mili giây (từ 1.024 đến 2.048 khung hình).
  • Loại MIME: audio/pcm;rate=16000 (hoặc tốc độ lấy mẫu phù hợp).

Python

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

JavaScript

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

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

WebSockets

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

Tính năng chép lời

Tự động phát hiện ngôn ngữ

Theo mặc định, việc bỏ qua language_codes hoặc đặt language_codes=[] sẽ bật tính năng tự động nhận dạng ngôn ngữ. Mô hình này tự động phát hiện ngôn ngữ được nói trong các câu, bao gồm cả cuộc trò chuyện đa ngôn ngữ và việc chuyển đổi ngôn ngữ.

Python

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

JavaScript

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

WebSockets

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

Gợi ý bằng ngôn ngữ cụ thể

Cung cấp mã ngôn ngữ BCP-47 rõ ràng (ví dụ: ["es-ES"] cho tiếng Tây Ban Nha hoặc ["fr-FR"] cho tiếng Pháp) để ưu tiên nhận dạng theo các ngôn ngữ cụ thể (xem phần Ngôn ngữ được hỗ trợ).

Python

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

JavaScript

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

WebSockets

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

Điều chỉnh từ vựng tuỳ chỉnh

Cung cấp danh sách gồm tối đa 1.000 cụm từ, danh từ riêng, tên thương hiệu hoặc thuật ngữ chuyên môn trong custom_vocabulary để điều chỉnh tính năng nhận dạng giọng nói theo thuật ngữ cụ thể (thường đạt được kết quả tốt nhất với tối đa 100 thuật ngữ).

Python

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

JavaScript

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

WebSockets

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

Chép lời thông minh

Định cấu hình định dạng đầu ra của bản chép lời bằng cách sử dụng tham số mode trong input_audio_transcription:

  • VERBATIM (mặc định): Tạo bản chép lời chính xác theo nghĩa đen của mọi nội dung được nói, giữ nguyên các từ đệm thô ("ừm", "ờ", "như"), nội dung lặp lại và câu bắt đầu sai.
  • SMART (Chép lời thông minh): Dọn dẹp và sắp xếp bản chép lời để dễ đọc:

    • Xoá lỗi diễn đạt: Xoá từ đệm, lỗi nói lắp và lỗi bắt đầu.
    • Tự sửa lỗi nội dòng: Giải quyết các lỗi chính tả một cách tự nhiên.
    • Định dạng có cấu trúc: Tự động định dạng danh sách, dấu đầu dòng, số, ngày và dấu ngắt đoạn.
    • Ngữ pháp và cách viết hoa: Áp dụng cách viết hoa và dấu chấm câu tự nhiên.

Python

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

JavaScript

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

WebSockets

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

Các chiến lược Phát hiện hoạt động giọng nói (VAD)

VAD tự động (Mặc định)

Theo mặc định, tính năng Tự động phát hiện hoạt động thoại phía máy chủ sẽ phát hiện thời điểm người nói bắt đầu và dừng nói.

VAD kết hợp

VAD kết hợp kết hợp tính năng tự động phát hiện điểm bắt đầu của lời nói phía máy chủ với tính năng phát hiện điểm kết thúc của lời nói phía máy khách để hoàn tất lượt lời thoại mà không có độ trễ:

  1. Tính năng VAD tự động phía máy chủ vẫn được bật để phát hiện chính xác điểm bắt đầu của lời nói bằng khoảng đệm âm thanh tiền tố, ngăn chặn tình trạng cắt bớt từ đầu.
  2. VAD phía máy khách phát hiện thấy khoảng lặng: Khi VAD cục bộ trên thiết bị phát hiện thấy người nói đã ngừng nói, máy khách sẽ gửi ngay tín hiệu audio_stream_end.
  3. Hoàn tất nhanh: Máy chủ coi audio_stream_end là một lời nhắc hoàn tất lượt trò chuyện ngay lập tức, bỏ qua thời gian chờ im lặng mặc định phía máy chủ và trả về bản chép lời đã hoàn tất với độ trễ tối thiểu.
  4. Dự phòng: Nếu VAD phía ứng dụng không kích hoạt được, thì VAD phía máy chủ sẽ hoạt động như một cơ chế dự phòng tự động.

Python

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)

JavaScript

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

WebSockets

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 thủ công (Nhấn để nói)

Đối với giao diện bộ đàm hoặc nút nhấn để nói, hãy tắt hoàn toàn tính năng VAD tự động và kiểm soát rõ ràng ranh giới lượt nói bằng cách sử dụng activity_startactivity_end:

Python

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

JavaScript

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

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

// Stream audio...

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

WebSockets

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

Mã thông báo tạm thời trong các ứng dụng khách

Đối với các ứng dụng từ máy khách đến máy chủ (chẳng hạn như ứng dụng di động hoặc ứng dụng web phát trực tuyến ngay từ micrô), hãy sử dụng mã thông báo tạm thời để tránh để lộ khoá API trong mã ứng dụng.

Tạo mã thông báo tạm thời có ràng buộc trên máy chủ trước khi bắt đầu kết nối ứng dụng:

Python

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

JavaScript

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

REST

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

Ngôn ngữ được hỗ trợ

Gemini 3.5 Transcribe Live hỗ trợ các ngôn ngữ và mã ngôn ngữ BCP-47 sau đây:

Ngôn ngữ Mã BCP-47 Ngôn ngữ Mã BCP-47
Tiếng Hà Lan ở Nam Phi af-ZA Tiếng Nhật ja-JP
Tiếng Amhara am-ET Tiếng Java jv-ID
Tiếng Ả Rập (Ai Cập) ar-EG Kabuverdianu kea-CV
Tiếng Armenia hy-AM Tiếng Kannada kn-IN
Tiếng Assam as-IN Tiếng Kazakh kk-KZ
Tiếng Azerbaijan az-AZ Tiếng Hàn ko-KR
Tiếng Belarus be-BY Tiếng Kyrgyz ky-KG
Tiếng Bengali (Bangladesh) bn-BD Tiếng Latvia lv-LV
Tiếng Bengal (Ấn Độ) bn-IN Tiếng Lingala ln-CD
Tiếng Bosnia bs-BA Tiếng Lithuania lt-LT
Tiếng Bungary bg-BG Tiếng Macedonia mk-MK
Tiếng Bulgaria (tiếng Aromania) rup-BG Tiếng Malay ms-MY
Tiếng Miến Điện my-MM Tiếng Malayalam ml-IN
Tiếng Quảng Đông (Phồn thể) yue-Hant-HK Tiếng Malta mt-MT
Tiếng Catalan ca-ES Tiếng Trung phổ thông (Giản thể) cmn-Hans-CN
Tiếng Cebuano ceb Tiếng Marathi mr-IN
Tiếng Khmer km-KH Tiếng Mông Cổ mn-MN
Tiếng Croatia hr-HR Tiếng Nepal ne-NP
Tiếng Séc cs-CZ Tiếng Na Uy nb-NO
Tiếng Đan Mạch da-DK Tiếng Oriya or-IN
Tiếng Hà Lan nl-NL Tiếng Ba Lan pl-PL
Tiếng Anh (Anh) en-GB Tiếng Bồ Đào Nha (Brazil) pt-BR
Tiếng Anh (Ấn Độ) en-IN Tiếng Bồ Đào Nha (Bồ Đào Nha) pt-PT
Tiếng Anh (Mỹ) en-US Tiếng Punjab pa-IN
Tiếng Estonia et-EE Tiếng Punjab (chữ Gurmukhi) pa-Guru-IN
Tiếng Farsi fa-IR Tiếng Rumani ro-RO
Tiếng Philippines fil-PH Tiếng Nga ru-RU
Tiếng Phần Lan fi-FI Tiếng Serbia sr-RS
Tiếng Pháp fr-FR Tiếng Sindhi (chữ Ả Rập) sd-Arab-IN
Tiếng Galicia gl-ES Tiếng Slovak sk-SK
Tiếng Gruzia ka-GE Tiếng Slovenia sl-SI
Tiếng Đức de-DE Tiếng Tây Ban Nha (Mỹ La Tinh) es-419
Tiếng Hy Lạp el-GR Tiếng Tây Ban Nha (Mỹ) es-US
Tiếng Gujarat gu-IN Tiếng Swahili (Kenya) sw-KE
Tiếng Hausa ha-NG Tiếng Thuỵ Điển sv-SE
Tiếng Do Thái he-IL Tiếng Tajik tg-TJ
Tiếng Hindi hi-IN Tiếng Telugu te-IN
Tiếng Hungary hu-HU Tiếng Thái th-TH
Tiếng Iceland is-IS Tiếng Thổ Nhĩ Kỳ tr-TR
Tiếng Anh Ấn Độ en-IN Tiếng Ukraina uk-UA
Tiếng Indonesia id-ID Tiếng Uzbek uz-UZ
Tiếng Ý it-IT Tiếng Việt vi-VN

Tài liệu tham khảo về tham số

Định cấu hình tính năng chép lời trực tiếp bằng cách sử dụng các trường trong input_audio_transcriptionrealtime_input_config:

Tham số Loại Mô tả
language_codes Mảng chuỗi Mã ngôn ngữ BCP-47 (ví dụ: ["en-US"]). Nếu bạn bỏ qua hoặc để trống ([]), mô hình sẽ tự động phát hiện ngôn ngữ và xử lý lời nói bằng nhiều ngôn ngữ.
custom_vocabulary Mảng chuỗi Tối đa 1.000 thuật ngữ tuỳ chỉnh, từ viết tắt, tên thương hiệu hoặc danh từ riêng để hỗ trợ tính năng nhận dạng giọng nói.
mode Chuỗi Chế độ chép lời: "VERBATIM" (mặc định) hoặc "SMART" (Chép lời thông minh). Khi được đặt thành "SMART", mô hình sẽ loại bỏ các từ đệm, định dạng danh sách và sửa lỗi nói vấp.
automatic_activity_detection.disabled Boolean Đặt thành true để tắt tính năng tự động phát hiện hoạt động giọng nói và gửi tín hiệu activityStartactivityEnd theo cách thủ công.

Các trường phản hồi của máy chủ

Trường Mô tả
server_content.interim_input_transcription Giả thuyết phiên âm bán phần tạm thời có độ trễ thấp được phát liên tục trong khi người dùng đang nói.
server_content.input_transcription Bản chép lời đầu vào chính thức, hoàn chỉnh được phát ra khi một lượt lời nói kết thúc.

Các điểm hạn chế

  • Thời lượng phiên: Các phiên chép lời trực tiếp hỗ trợ tính năng phát trực tiếp liên tục trong tối đa 10 phút.
  • Phân loại người nói: Tính năng phân loại người nói không được hỗ trợ trong các phiên phát trực tiếp. Đối với tính năng phân biệt người nói, hãy sử dụng điểm cuối Chép lời âm thanh không phát trực tiếp.
  • Dấu thời gian ở cấp từ: Dấu thời gian ở cấp từ không được hỗ trợ thông qua Live API. Live API phát ra dấu thời gian ở cấp độ câu nói (interim_input_transcriptioninput_transcription).
  • Từ vựng tuỳ chỉnh: Bạn có thể cung cấp tối đa 1.000 thuật ngữ trong custom_vocabulary, nhưng kết quả tốt nhất thường đạt được khi có tối đa 100 thuật ngữ.
  • Khả năng tương thích của chế độ: Chế độ chép lời thông minh ("mode": "SMART") loại bỏ các từ đệm và định dạng văn bản có nhận biết ý định, nhưng không thể kết hợp với chú thích từ.

Bước tiếp theo