Gemini API chuyển đổi lời nói trong tệp âm thanh thành văn bản bằng mô hình Gemini 3.5 Transcribe (gemini-3.5-transcribe). Dựa trên khả năng hiểu âm thanh của Gemini, API này cung cấp bản chép lời chính xác với tính năng tự động nhận dạng ngôn ngữ, phân biệt người nói, dấu thời gian ở cấp từ và gợi ý từ vựng tuỳ chỉnh. Ứng dụng này cũng cung cấp chế độ chuyển lời nói thành văn bản thông minh, có tính năng loại bỏ lỗi diễn đạt và định dạng thông minh.
Để chép lời một tệp âm thanh, hãy tải tệp âm thanh đó lên và truyền đến 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);
REST
# 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"
}
]
}'
Tổng quan
Gemini 3.5 Transcribe được tối ưu hoá cho các nhiệm vụ chuyển lời nói thành văn bản. Tính năng này có thể xử lý nhiều giọng nói, tạp âm và cuộc trò chuyện bằng nhiều ngôn ngữ.
Các chức năng chính bao gồm:
- Nhận dạng lời nói tự động (ASR): Tự động phát hiện ngôn ngữ ở hơn 85 địa điểm. Xử lý việc chuyển đổi ngôn ngữ trong câu và giữa các câu mà không cần định cấu hình theo cách thủ công.
- Từ vựng tuỳ chỉnh: Hỗ trợ nhận dạng các thuật ngữ, từ viết tắt và tên riêng theo từng miền bằng cách truyền tối đa 1.000 cụm từ.
- Phân biệt người nói: Phân biệt nhiều người nói và gán các đoạn lời nói cho các nhãn riêng biệt.
- Dấu thời gian ở cấp từ: Tạo độ lệch chính xác về thời gian bắt đầu và thời gian kết thúc cho từng từ được nhận dạng.
- Bản chép lời thông minh: Loại bỏ các lỗi diễn đạt, từ đệm, từ lặp và áp dụng định dạng có cấu trúc.
- Định dạng và chuẩn hoá: Áp dụng cách viết hoa, dấu câu và chuẩn hoá văn bản nghịch đảo, chẳng hạn như chuyển đổi "hai mươi sáu triệu đô la" thành "26 triệu USD".
Để đưa ra suy luận chung về âm thanh hoặc trả lời câu hỏi về nội dung âm thanh, hãy sử dụng Tính năng hiểu âm thanh. Để tổng hợp âm thanh bằng tính năng chuyển văn bản sang lời nói, hãy sử dụng Chuyển văn bản sang lời nói.
Phát hiện ngôn ngữ và gợi ý
Theo mặc định, mô hình này sẽ tự động phát hiện ngôn ngữ được nói. Tính năng này sẽ chuyển đổi giữa các ngôn ngữ một cách linh hoạt khi người nói chuyển đổi ngôn ngữ.
Để sử dụng tính năng phát hiện tự động, hãy bỏ qua language_codes hoặc cung cấp một danh sách trống:
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: [],
},
},
});
REST
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ếu biết trước ngôn ngữ, hãy chỉ định mã ngôn ngữ BCP-47 trong language_codes để cải thiện độ chính xác của bản chép lời (xem Các ngôn ngữ được hỗ trợ):
Python
generation_config = {
"transcription_config": {
"language_codes": ["es-ES"],
}
}
JavaScript
const generationConfig = {
transcription_config: {
language_codes: ["es-ES"],
},
};
REST
{
"generation_config": {
"transcription_config": {
"language_codes": ["es-ES"]
}
}
}
Từ vựng tuỳ chỉnh
Bạn có thể hướng mô hình lời nói đến những từ không thông dụng, biệt ngữ kỹ thuật, tên thương hiệu hoặc danh từ riêng. Cung cấp tối đa 1.000 cụm từ trong mảng custom_vocabulary (thường đạt được kết quả tốt nhất với tối đa 100 cụm từ):
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"],
},
},
});
REST
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"]
}
}
}'
Phân tách người nói
Tính năng phân đoạn theo người nói xác định các giọng nói khác nhau trong bản ghi và gắn thẻ cho từng đoạn bằng một giá trị nhận dạng người nói, chẳng hạn như spk_1 hoặc spk_2. Hỗ trợ tối đa 8 người nói (thuộc tính cho 3 người nói trở lên đang trong giai đoạn thử nghiệm).
Bật tính năng phân tách người nói bằng cách định cấu hình diarization_mode trong 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",
},
},
},
});
REST
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"
}
}
}
}'
Dấu thời gian ở cấp độ từ
Dấu thời gian ở cấp từ cung cấp độ lệch chính xác về thời gian bắt đầu và kết thúc cho từng từ được nhận dạng trong luồng âm thanh.
Bật dấu thời gian bằng cách định cấu hình timestamp_granularities trong 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"],
},
},
},
});
REST
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"]
}
}
}
}'
Bạn có thể kết hợp diarization_mode và timestamp_granularities trong mode để nhận cả nhãn người nói và dấu thời gian của từ:
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"],
},
},
};
REST
{
"generation_config": {
"transcription_config": {
"custom_vocabulary": ["Gemini"],
"mode": {
"type": "verbatim",
"diarization_mode": "speaker",
"timestamp_granularities": ["word"]
}
}
}
}
Chế độ chép lời
Gemini 3.5 Transcribe hỗ trợ 2 chế độ chép lời thông qua tham số mode:
verbatim(mặc định): Trả về bản chép lời chính xác từng từ của mọi nội dung được nói, giữ nguyên các từ đệm thô ("ừm", "ờ", "như", "bạn biết đấy"), nội dung lặp lại, khoảng dừng và câu bắt đầu sai. Dấu thời gian và tính năng phân tách người nói được định cấu hình trong chế độ này ({"type": "verbatim", ...}).smart(Chép lời thông minh): Tối ưu hoá bản chép lời để dễ đọc bằng cách áp dụng quy trình xử lý hậu kỳ thông minh:- Loại bỏ lỗi trong lời nói: Loại bỏ từ đệm, lỗi nói lắp và lỗi bắt đầu trong cuộc trò chuyện.
- Tự sửa lỗi ngay trong câu: Giải quyết trực tiếp các lỗi khi nói (ví dụ: "Let's meet on Tuesday, actually no, Wednesday at two" (Hãy gặp nhau vào thứ Ba, à không, thứ Tư lúc 2 giờ) sẽ trở thành "Let's meet on Wednesday at 2:00 PM" (Hãy gặp nhau vào thứ Tư lúc 2 giờ chiều)).
- Định dạng có cấu trúc tự động: Tự động sắp xếp các ý tưởng được nói thành đoạn văn, danh sách có đánh số, dấu đầu dòng, ngày, đơn vị tiền tệ và số được định dạng.
- Dọn dẹp ngữ pháp: Áp dụng dấu câu, cách viết hoa đầu câu và cách diễn đạt tự nhiên.
| Âm thanh lời nói | verbatim đầu ra |
smart Đầu ra (Bản chép lời thông minh) |
|---|---|---|
| "Ừm, về cuộc họp này, tôi nghĩ chúng ta nên mời Alice và, khoan đã, không phải, là Bob và Carol." | "Um so for the meeting I think we should uh invite Alice and wait no Bob and Carol." | "Tôi nghĩ chúng ta nên mời Bob và Carol tham dự cuộc họp." |
| "First item review budget second item finalize timeline third item send recap" | "first item review budget second item finalize timeline third item send recap" (mục đầu tiên xem xét ngân sách, mục thứ hai hoàn tất tiến trình, mục thứ ba gửi bản tóm tắt) | "1. Xem lại ngân sách 2. Hoàn thiện dòng thời gian 3. Gửi thông tin tóm tắt" |
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);
REST
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"
}
}
}'
Phân tích cú pháp đầu ra của bản chép lời
Toàn bộ văn bản chép lời sẽ được trả về trong interaction.output_text.
Khi timestamp_granularities hoặc diarization_mode được bật, API cũng trả về chú thích chi tiết ở cấp từ được đính kèm vào nội dung tương tác.
Sau đây là cách trích xuất và lặp lại dấu thời gian của từ và lượt lời của người nói:
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}`);
}
REST
{
"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"
}
]
}
]
}
]
}
Ngôn ngữ được hỗ trợ
Gemini 3.5 Transcribe 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 Bungary (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 bằng cách đặt các trường trong đối tượng transcription_config trong generation_config:
| Trường | 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ý việc chuyển đổi mã. |
custom_vocabulary |
Mảng chuỗi | Tối đa 1.000 thuật ngữ, từ viết tắt hoặc tên riêng tuỳ chỉnh để hỗ trợ tính năng nhận dạng lời nói. |
mode |
Đối tượng hoặc chuỗi | Cấu hình chế độ chép lời. Chấp nhận "smart" hoặc một đối tượng chế độ nguyên văn ({"type": "verbatim", ...}). Mặc định là bản chép lời nguyên văn. |
mode.type |
Chuỗi | (Chỉ chế độ nguyên văn) Mã nhận dạng chế độ. Luôn đặt thành "verbatim". |
mode.timestamp_granularities |
Mảng chuỗi | (Chỉ chế độ nguyên văn) Mức độ chi tiết của dấu thời gian cần trả về. Truyền ["word"] để bật độ lệch đầu và cuối từ. |
mode.diarization_mode |
Chuỗi | (Chỉ ở chế độ nguyên văn) Chế độ phân đoạn lời thoại. Truyền "speaker" để xác định và gắn nhãn cho từng người nói riêng biệt. |
Các phương pháp hay nhất
- Cung cấp âm thanh rõ ràng: Đảm bảo bản ghi âm có giọng nói rõ ràng và tránh bị cắt xén nghiêm trọng.
- Cung cấp gợi ý về ngôn ngữ khi biết: Nếu biết trước ngôn ngữ của âm thanh, hãy chỉ định
language_codesđể tối đa hoá độ chính xác. - Mục tiêu từ vựng tuỳ chỉnh: Chỉ thêm các thuật ngữ riêng biệt trong miền, tên thương hiệu hoặc danh từ riêng vào
custom_vocabularythay vì các từ thông thường hằng ngày. - Sử dụng Files API cho các bản ghi âm có kích thước lớn: Đối với các tệp dài hơn vài giây, hãy tải tệp lên bằng
client.files.uploadvà truyền URI tệp được trả về cho mô hình.
Các điểm hạn chế
- Thời lượng âm thanh: Các yêu cầu đơn phương tiêu chuẩn hỗ trợ tệp âm thanh có thời lượng tối đa 1 giờ. Thời gian xử lý âm thanh bị giới hạn ở 30 phút khi bạn bật các tính năng như phân loại người nói hoặc dấu thời gian ở cấp độ từ.
- Dấu thời gian ở cấp từ: Việc bật dấu thời gian ở cấp từ có thể làm giảm độ chính xác tổng thể của bản chép lời.
- Phân tách người nói: Tính năng phân tách người nói hỗ trợ tối đa 8 người nói. Tính năng phân bổ cho người nói đối với 3 người nói trở lên đang trong giai đoạn thử nghiệm.
- 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 với chế độ: Bạn không thể kết hợp tính năng chép lời thông minh (
"smart") vớitimestamp_granularitieshoặcdiarization_mode.
Bước tiếp theo
- Truyền trực tuyến âm thanh theo thời gian thực bằng Hướng dẫn chép lời trực tiếp thông qua Live API.
- Khám phá tính năng Hiểu nội dung âm thanh để phân tích, tóm tắt hoặc truy vấn nội dung âm thanh.
- Tìm hiểu cách tổng hợp âm thanh từ văn bản bằng tính năng Chuyển văn bản sang lời nói.
- Hãy xem trang Định giá để biết giá của mô hình và giới hạn mã thông báo.
- Hãy xem hướng dẫn về Files API để biết thông tin chi tiết về cách tải lên và quản lý tệp đa phương tiện.