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, Vercel và Vision 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ụnginterim_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ễ:
- 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.
- 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. - Hoàn tất nhanh: Máy chủ coi
audio_stream_endlà 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. - 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_start và activity_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_transcription và realtime_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 activityStart và activityEnd 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_transcriptionvàinput_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
- Đọc tài liệu về tính năng Chép lời của Gemini đối với các tệp âm thanh không phát trực tuyến.
- Đọc Tổng quan về Live API cho các trợ lý đàm thoại bằng giọng nói.
- Đọc hướng dẫn về tính năng Dịch trực tiếp để biết cách dịch lời nói theo thời gian thực.
- Hãy xem trang Giá để biết giá phát trực tiếp bằng Live API.
- Khám phá hướng dẫn về các chức năng của Live API.