ShopAIKey cung cấp các endpoint TTS custom hỗ trợ nhiều nhà cung cấp: OpenAI, Google Gemini, và MiniMax.
Base URL
https://api.shopaikey.com
Xác thực
Tất cả endpoint yêu cầu header:
Authorization: Bearer <your-api-key>
1. OpenAI TTS
Tạo giọng nói với định dạng tương thích OpenAI. Server upload file audio lên S3 và trả về URL.
Endpoint: POST /tts/openai/speech
Request Body
Ví dụ cURL
curl -X POST 'https://api.shopaikey.com/tts/openai/speech' \
-H 'Authorization: Bearer <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{
"input": "Xin chào, đây là giọng nói demo",
"model": "tts-1",
"voice": "alloy",
"response_format": "mp3",
"speed": 1.0
}'
Ví dụ JavaScript
const response = await fetch('https://api.shopaikey.com/tts/openai/speech', {
method: 'POST',
headers: {
'Authorization': 'Bearer <your-api-key>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
input: 'Xin chào, đây là giọng nói demo',
model: 'tts-1',
voice: 'alloy',
}),
});
const data = await response.json();
console.log(data.url);
Response
{
"url": "https://s3.example.com/audio/abc123.mp3",
"key": "audio/abc123.mp3",
"model": "tts-1",
"voice": "alloy",
"format": "mp3",
"mimeType": "audio/mpeg"
}
2. Google Gemini TTS
Tạo giọng nói bằng Gemini TTS. Server chuyển PCM sang WAV, upload S3, trả về URL.
Endpoint: POST /tts/google/generations
Request Body
Ví dụ cURL
curl -X POST 'https://api.shopaikey.com/tts/google/generations' \
-H 'Authorization: Bearer <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{
"text": "Xin chào, đây là giọng nói Gemini",
"model": "gemini-2.5-flash-preview-tts",
"voice": "Kore"
}'
Response
{
"url": "https://s3.example.com/audio/abc123.wav",
"key": "audio/abc123.wav",
"model": "gemini-2.5-flash-preview-tts",
"voice": "Kore",
"sampleRate": 24000,
"mimeType": "audio/wav"
}
3. MiniMax TTS
3a. Text-to-Audio v2 (Đồng bộ)
Hỗ trợ streaming qua Server-Sent Events khi stream: true.
Endpoint: POST /tts/minimax/t2a_v2
Request Body
Ví dụ cURL
curl -X POST 'https://api.shopaikey.com/tts/minimax/t2a_v2' \
-H 'Authorization: Bearer <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{
"model": "speech-02-hd",
"text": "Xin chào, tôi là MiniMax TTS",
"voice_setting": {
"voice_id": "male-qn-qingse",
"speed": 1,
"vol": 1,
"pitch": 0
},
"audio_setting": {
"sample_rate": 32000,
"bitrate": 128000,
"format": "mp3"
}
}'
Response (Đồng bộ)
{
"data": {
"audio": "<hex-encoded-audio>",
"status": 1
},
"extra_info": {},
"trace_id": "abc123",
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
3b. Text-to-Audio v2 (Bất đồng bộ)
Trả về task_id để truy vấn sau.
Endpoint: POST /tts/minimax/t2a_async_v2
Request body giống với endpoint đồng bộ.
Response
{
"task_id": "abc123",
"task_token": "token123",
"file_id": "file123",
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
3c. Truy vấn tác vụ T2A Async
Endpoint: GET /tts/minimax/query/t2a_async_query_v2?task_id={task_id}
Response
{
"task_id": "abc123",
"status": "Success",
"file_id": "file123",
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
Trạng thái có thể là: Processing, Success, Failed, Expired.
3d. Lấy file audio
Endpoint: GET /tts/minimax/files/retrieve?file_id={file_id}
Response
{
"file": {
"file_id": "file123",
"bytes": 102400,
"created_at": 1700000000,
"filename": "audio.mp3",
"purpose": "t2a",
"download_url": "https://example.com/download/file123"
},
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
4. Danh sách giọng đọc hệ thống (MiniMax)
Trả về danh sách system_voice từ MiniMax. Kết quả được cache 1 giờ trên server. Không cần truyền API key.
Endpoint: GET /tts/minimax/voices
Ví dụ cURL
curl -X GET 'https://api.shopaikey.com/tts/minimax/voices'
Response
[
{
"voice_id": "male-qn-qingse",
"voice_name": "青涩青年音色",
"description": ["male", "young"],
"created_time": "2024-01-01T00:00:00Z"
}
]