Đa phương tiện

Text-to-Speech (TTS)

ShopAIKey cung cấp các endpoint TTS custom hỗ trợ nhiều nhà cung cấp: OpenAI, Google Gemini, và MiniMax.

Base URL

code
https://api.shopaikey.com

Xác thực

Tất cả endpoint yêu cầu header:

code
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

Tên tham sốKiểuMô tả
inputstringBắt buộc. Văn bản cần chuyển thành giọng nói (tối đa 4096 ký tự)
modelstringModel TTS (mặc định: tts-1)
voicestringGiọng đọc (mặc định: alloy). Các giọng: alloy, echo, fable, onyx, nova, shimmer
response_formatstringĐịnh dạng audio: mp3, opus, aac, flac, wav, pcm (mặc định: mp3)
speednumberTốc độ đọc: 0.25 - 4.0 (mặc định: 1)

Ví dụ cURL

code
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

code
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

code
{
  "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

Tên tham sốKiểuMô tả
textstringBắt buộc. Văn bản cần chuyển thành giọng nói
modelstringModel TTS (mặc định: gemini-2.5-flash-preview-tts)
voicestringTên giọng đọc (mặc định: Kore)

Ví dụ cURL

code
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

code
{
  "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

Tên tham sốKiểuMô tả
modelstringBắt buộc. Model MiniMax TTS (vd: speech-02-hd)
textstringBắt buộc. Văn bản cần chuyển đổi
streambooleanBật streaming (mặc định: false)
voice_settingobjectCấu hình giọng đọc
voice_setting.voice_idstringID giọng đọc
voice_setting.speednumberTốc độ
voice_setting.volnumberÂm lượng
voice_setting.pitchnumberCao độ
voice_setting.emotionstringCảm xúc
audio_settingobjectCấu hình audio
audio_setting.sample_rateintegerTần số mẫu
audio_setting.bitrateintegerBitrate
audio_setting.formatstringĐịnh dạng (mp3/pcm/flac)
language_booststringTăng cường ngôn ngữ

Ví dụ cURL

code
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ộ)

code
{
  "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

code
{
  "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

code
{
  "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

code
{
  "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

code
curl -X GET 'https://api.shopaikey.com/tts/minimax/voices'

Response

code
[
  {
    "voice_id": "male-qn-qingse",
    "voice_name": "青涩青年音色",
    "description": ["male", "young"],
    "created_time": "2024-01-01T00:00:00Z"
  }
]