Text to Speech

Text-to-Speech API

Tổng Quan

Giới thiệu
Text-to-Speech (TTS) API của AusyncLab cho phép chuyển đổi văn bản thành âm thanh tự nhiên và truyền cảm. Hệ thống hỗ trợ nhiều loại giọng nói, ngôn ngữ đa dạng và công nghệ sao chép giọng nói tiên tiến.

Tính Năng Chính

  • Chuyển đổi văn bản thành âm thanh chất lượng cao
  • Hỗ trợ 17 ngôn ngữ
  • Công nghệ Voice Cloning chỉ cần một mẫu giọng ngắn
  • Điều chỉnh tốc độ nói linh hoạt
  • Callback URL để theo dõi tiến trình xử lý

Quick Start

  1. Đăng ký và lấy API Key từ hệ thống.
  2. Tải lên giọng nói vào Voice Library hoặc sử dụng giọng có sẵn.
  3. Gửi yêu cầu TTS với văn bản và voice_id mong muốn.
  4. Nhận thông báo qua callback_url khi hoàn thành, hoặc polling endpoint chi tiết audio.

Xác Thực

API yêu cầu cung cấp API Key qua header X-API-Key. API Key phải được bảo mật và không chia sẻ công khai. Xem thêm Rate Limit.

Base URL

https://api.ausynclab.io/api/v1/speech

Playground

Thử nghiệm API tại: https://api.ausynclab.io/docs (opens in a new tab)


Chi Tiết Endpoints

1. Text to Speech

Endpoint: POST /text-to-speech
Mô tả: Chuyển đổi văn bản thành audio dựa trên các thông số đầu vào.

Tham số Request Body:

  • audio_name (bắt buộc): Tên của đoạn audio.
  • text (bắt buộc): Văn bản cần chuyển đổi. Credit được tính theo số ký tự của văn bản sau khi bỏ thẻ <break time="Ns"/> và ký tự xuống dòng.
  • voice_id (bắt buộc): ID của giọng nói mong muốn. Xem trang Voice Library để lấy ID giọng nói.
  • speed (tùy chọn): Tốc độ nói. Khuyến nghị từ 0.75 đến 1.25. Mặc định 1.0.
  • model_name (tùy chọn): Model dùng để chuyển đổi (myna-1, myna-1-turbo hoặc myna-2). Mặc định là myna-1-turbo. Giá trị khác sẽ bị từ chối với lỗi 422. Điểm nổi bật của từng loại model:
    • myna-1 (Myna v1 Legacy): Mô hình khởi tạo, thiết kế và tối ưu chuyên sâu cho tiếng Việt. 1 credit mỗi ký tự.
    • myna-1-turbo (Myna v1 Pro Fast): Sự kết hợp hoàn hảo giữa độ tự nhiên chuẩn v1 và công nghệ tăng tốc 10x. 0.5 credit mỗi ký tự (giảm 50% so với v1).
    • myna-2 (Myna v2): Mô hình nâng cao, tối ưu xử lý đa ngôn ngữ, tự nhiên hơn và chính xác hơn trên cùng một audio. 1 credit mỗi ký tự.
  • language (tùy chọn): Ngôn ngữ chuyển đổi. Các ngôn ngữ được hỗ trợ:
    • en: Tiếng Anh (English)
    • vi: Tiếng Việt (Vietnamese)
    • de: Tiếng Đức (German)
    • fr: Tiếng Pháp (French)
    • ko: Tiếng Hàn (Korean)
    • ja: Tiếng Nhật (Japanese)
    • zh: Tiếng Trung (Chinese)
    • it: Tiếng Ý (Italian)
    • pt: Tiếng Bồ Đào Nha (Portuguese)
    • pl: Tiếng Ba Lan (Polish)
    • es: Tiếng Tây Ban Nha (Spanish)
    • nl: Tiếng Hà Lan (Dutch)
    • th: Tiếng Thái (Thai)
    • ms: Tiếng Mã Lai (Malay)
    • ar: Tiếng Ả Rập (Arabic)
    • he: Tiếng Do Thái (Hebrew)
    • lo: Tiếng Lào (Lao)
  • callback_url (tùy chọn): URL sẽ được gọi khi Text-to-speech job hoàn thành. Xem mục Callback Payload để tìm hiểu thêm. Nếu không cung cấp, hãy polling endpoint chi tiết audio cho đến khi stateSUCCEED.

CURL:

curl -X 'POST' \
  'https://api.ausynclab.io/api/v1/speech/text-to-speech' \
  -H 'accept: application/json' \
  -H 'X-API-Key: your_api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "audio_name": "Demo Audio",
    "text": "Xin chào, đây là Text-to-Speech API",
    "voice_id": 1,
    "speed": 1.0,
    "model_name": "myna-2",
    "language": "vi",
    "callback_url": "https://your-callback-url.com"
  }'

Phản hồi:

  • 200 OK
{
  "status": 200,
  "result": {
    "audio_id": 123,
    "current_threads": 1,
    "limit_threads": 5
  },
  "message": null
}

current_threadslimit_threads là số job đang xử lý và giới hạn job song song của tài khoản (có thể là null).

  • 422 Validation Error: model_name không hợp lệ hoặc body sai định dạng.

2. Lấy Danh Sách Audio

URL: https://api.ausynclab.io/api/v1/speech
Phương thức: GET
Mô tả: Lấy danh sách các audio đã tạo trong 30 ngày gần nhất.

CURL:

curl -X 'GET' \
  'https://api.ausynclab.io/api/v1/speech' \
  -H 'accept: application/json' \
  -H 'X-API-Key: your_api_key'

Phản hồi:

  • 200 OK
{
  "status": 200,
  "result": [
    {
      "id": 123,
      "name": "Demo Audio",
      "voice_id": 1,
      "voice_name": "Demo Voice",
      "speed": 1,
      "created_at": "2025-01-04T07:05:24.040000",
      "audio_url": "https://cdn.example.com/audio/sample_audio.wav",
      "audio_url_stream": "https://cdn.example.com/audio/sample_audio.m3u8",
      "subtitle_url": "https://cdn.example.com/audio/sample_audio.srt",
      "duration": 3.2,
      "state": "SUCCEED"
    },
    ...
  ],
  "message": null
}

3. Lấy Thông Tin Chi Tiết Audio

URL: https://api.ausynclab.io/api/v1/speech/{audio_id}
Phương thức: GET
Mô tả: Lấy thông tin chi tiết của một audio đã tạo.

Tham số:

  • audio_id (bắt buộc): ID của audio (kiểu integer).

CURL:

curl -X 'GET' \
  'https://api.ausynclab.io/api/v1/speech/123' \
  -H 'accept: application/json' \
  -H 'X-API-Key: your_api_key'

Phản hồi:

  • 200 OK
{
  "status": 200,
  "result": {
    "id": 123,
    "name": "Demo Audio",
    "voice_id": 1,
    "voice_name": "Demo Voice",
    "speed": 1,
    "created_at": "2025-01-04T07:05:24.040000",
    "audio_url": "https://cdn.example.com/audio/sample_audio.wav",
    "audio_url_stream": "https://cdn.example.com/audio/sample_audio.m3u8",
    "subtitle_url": "https://cdn.example.com/audio/sample_audio.srt",
    "duration": 3.2,
    "state": "SUCCEED"
  },
  "message": null
}
  • 400 Bad Request: Không tìm thấy audio ("message": "audio_not_found").

Các trạng thái có thể (state):

stateMô tả
WAITING_IN_QUEUEĐang chờ xử lý
IN_PROGRESSĐang tổng hợp
SUCCEEDHoàn thành, audio_url sẵn sàng
INTERNAL_ERRORLỗi xử lý
ABORTEDJob bị hủy
TIME_OUTJob không hoàn thành trong thời gian cho phép

4. Xóa Audio

URL: https://api.ausynclab.io/api/v1/speech/{id}
Phương thức: DELETE
Mô tả: Xóa một audio khỏi hệ thống.

Tham số:

  • id (bắt buộc): ID của audio cần xóa (kiểu integer).

CURL:

curl -X 'DELETE' \
  'https://api.ausynclab.io/api/v1/speech/123' \
  -H 'accept: application/json' \
  -H 'X-API-Key: your_api_key'

Phản hồi:

  • 200 OK
{
  "status": 200,
  "result": {
    "id": 123
  },
  "message": null
}
  • 400 Bad Request: Không tìm thấy audio ("message": "audio_not_found").

Callback Payload

Khi Text-to-speech job hoàn thành, API sẽ gửi thông báo đến callback_url với payload:

Nội dung Payload:

  • audio_id : ID của audio được tạo (trùng với audio_id trả về khi tạo).
  • credits_used : Số lượng tín dụng đã sử dụng để tạo âm thanh.
  • voice_id : ID của giọng nói đã sử dụng.
  • speed : Tốc độ nói của âm thanh.
  • sample_rate : Tần số mẫu của âm thanh.
  • created_at : Thời gian tạo âm thanh (ISO 8601).
  • status: Trạng thái của request (SUCCEEDED, FAILED).
  • audio_url : URL để tải xuống tệp âm thanh đã tạo.
  • subtitle_url : URL tệp phụ đề của âm thanh (nếu có).
  • message : Thông báo về kết quả xử lý (ví dụ: "Your audio is generated successfully.").
  • duration : Thời lượng âm thanh (giây).

Ví dụ

{
  "audio_id": 12345,
  "credits_used": 10,
  "voice_id": 1,
  "speed": 1.0,
  "sample_rate": 24000,
  "created_at": "2024-12-30T10:00:00Z",
  "status": "SUCCEEDED",
  "audio_url": "https://cdn.example.com/audio/sample_audio.wav",
  "subtitle_url": "https://cdn.example.com/audio/sample_audio.srt",
  "message": "Your audio is generated successfully.",
  "duration": 3.2
}

Lưu ý: Người dùng cần triển khai endpoint để nhận và xử lý payload này.