File Upload

File Upload API

Tổng Quan

Giới thiệu File Upload API của AusyncLab cho phép người dùng tải lên file audio hoặc video trực tiếp vào hệ thống lưu trữ của chúng tôi. Sau khi tải lên, bạn có thể sử dụng URL của file để gọi các API khác như Voice Denoiser, Voice Changer, Lipsync, Instant Avatar, hoặc Voice Library.

Tính Năng Chính

  • Tải lên file audio và video trực tiếp thông qua SAS Token URL
  • Hỗ trợ file audio lên đến 30 phút
  • File được tự động xóa sau 24 giờ
  • Tương thích với tất cả API của AusyncLab yêu cầu URL audio/video

Quick Start

  1. Đăng ký và lấy API Key từ hệ thống.
  2. Gọi API để lấy Upload URL (SAS Token).
  3. Tải file audio/video lên bằng Upload URL.
  4. Sử dụng blob_url để gọi các API khác (Voice Denoiser, Voice Changer, Lipsync, v.v.).

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.

Base URL

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

Playground

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


Chi Tiết Endpoints

1. Lấy Upload URL

Endpoint: POST /upload-url Mô tả: Lấy một URL có SAS Token để tải file audio/video lên hệ thống lưu trữ Azure Blob Storage. URL có thời hạn 30 phút.

Tham số Request Body:

  • filename (tùy chọn): Tên file (ví dụ: my_audio.wav, my_video.mp4). Hệ thống sẽ trích xuất phần mở rộng file từ tên này. Mặc định là .wav nếu không cung cấp.

CURL:

# Upload audio
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "my_audio.wav"
  }'
 
# Upload video
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "my_video.mp4"
  }'

Response mẫu:

{
  "result": {
    "upload_url": "https://ausyncdev.blob.core.windows.net/audio-input-upload/abc123.wav?sv=2022-11-02&se=2024-01-01T01%3A00%3A00Z&sr=b&sp=cw&sig=...",
    "blob_url": "https://ausyncdev.blob.core.windows.net/audio-input-upload/abc123.wav",
    "blob_id": "abc123",
    "blob_name": "abc123.wav"
  },
  "status": 200,
  "message": null
}

Giải thích Response:

FieldMô tả
upload_urlURL có SAS Token để tải file lên (có thời hạn 30 phút, chỉ có quyền write/create)
blob_urlURL trực tiếp của file (sử dụng URL này khi gọi các API khác)
blob_idID duy nhất của file
blob_nameTên file trên hệ thống lưu trữ

2. Tải File Lên

Sau khi có upload_url, bạn tải file lên bằng HTTP PUT request trực tiếp đến Azure Blob Storage.

CURL (Audio):

curl -X PUT "UPLOAD_URL_FROM_STEP_1" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @my_audio.wav

CURL (Video):

curl -X PUT "UPLOAD_URL_FROM_STEP_1" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: video/mp4" \
  --data-binary @my_video.mp4

Lưu ý:

  • Header x-ms-blob-type: BlockBlob là bắt buộc.
  • Content-Type nên tương ứng với định dạng file:
    • Audio: audio/wav, audio/mpeg, audio/mp3
    • Video: video/mp4, video/webm, video/avi
  • File được tự động xóa sau 24 giờ.
  • SAS Token chỉ có quyền write và create, không thể đọc hoặc xóa file.

Quy Trình Sử Dụng Hoàn Chỉnh

Với Voice Denoiser

# Bước 1: Lấy Upload URL
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "noisy_audio.wav"}'
 
# Bước 2: Tải file lên (sử dụng upload_url từ bước 1)
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @noisy_audio.wav
 
# Bước 3: Gọi Voice Denoiser API (sử dụng blob_url từ bước 1)
curl -X POST "https://api.ausynclab.io/api/v1/voice-denoiser/denoise" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "raw_audio_url": "BLOB_URL_FROM_STEP_1",
    "name": "My denoised audio"
  }'

Với Voice Changer

# Bước 1: Lấy Upload URL cho audio gốc
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "raw_audio.wav"}'
 
# Bước 2: Tải file audio gốc lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @raw_audio.wav
 
# Bước 3: Lấy Upload URL cho audio tham chiếu
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "reference_audio.wav"}'
 
# Bước 4: Tải file audio tham chiếu lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @reference_audio.wav
 
# Bước 5: Gọi Voice Changer API
curl -X POST "https://api.ausynclab.io/api/v1/audio-conversion/convert" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "raw_audio_url": "BLOB_URL_FROM_STEP_1",
    "reference_audio_url": "BLOB_URL_FROM_STEP_3",
    "reference_language": "en"
  }'

Với Lipsync (Đăng Ký Video)

# Bước 1: Lấy Upload URL cho video
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "my_video.mp4"}'
 
# Bước 2: Tải file video lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: video/mp4" \
  --data-binary @my_video.mp4
 
# Bước 3: Đăng ký video với Lipsync API (sử dụng blob_url từ bước 1)
curl -X POST "https://api.ausynclab.io/api/v1/lipsync/register-video" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Video",
    "video_url": "BLOB_URL_FROM_STEP_1"
  }'

Với Lipsync (Tạo Video Lipsync)

# Bước 1: Lấy Upload URL cho audio
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "my_audio.wav"}'
 
# Bước 2: Tải file audio lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @my_audio.wav
 
# Bước 3: Tạo video lipsync (sử dụng blob_url từ bước 1)
curl -X POST "https://api.ausynclab.io/api/v1/lipsync/generate-lipsync" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Lipsync Video",
    "registered_video_id": 123,
    "audio_url": "BLOB_URL_FROM_STEP_1"
  }'

Với Voice Library (Đăng Ký Giọng Nói)

# Bước 1: Lấy Upload URL cho audio mẫu giọng nói
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "voice_sample.wav"}'
 
# Bước 2: Tải file audio lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @voice_sample.wav
 
# Bước 3: Đăng ký giọng nói (sử dụng blob_url từ bước 1)
curl -X POST "https://api.ausynclab.io/api/v1/voices/register" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Voice",
    "audio_url": "BLOB_URL_FROM_STEP_1",
    "language": "vi",
    "gender": "FEMALE",
    "age": "YOUNG",
    "use_case": "CASUAL"
  }'

Với Instant Avatar (Tạo Avatar Video)

# Bước 1: Lấy Upload URL cho audio
curl -X POST "https://api.ausynclab.io/api/v1/audio/upload-url" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "my_audio.wav"}'
 
# Bước 2: Tải file audio lên
curl -X PUT "UPLOAD_URL" \
  -H "x-ms-blob-type: BlockBlob" \
  -H "Content-Type: audio/wav" \
  --data-binary @my_audio.wav
 
# Bước 3: Tạo avatar video (sử dụng blob_url từ bước 1)
curl -X POST "https://api.ausynclab.io/api/v1/avatar-videos/generate" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Avatar Video",
    "avatar_id": "YOUR_AVATAR_ID",
    "audio_url": "BLOB_URL_FROM_STEP_1",
    "callback_url": "https://your-callback-url.com"
  }'

Lưu Ý Quan Trọng

  • Thời hạn Upload URL: URL có SAS Token chỉ có hiệu lực trong 30 phút. Sau thời gian này, bạn cần lấy URL mới.
  • Tự động xóa file: File được tải lên sẽ tự động bị xóa sau 24 giờ. Hãy đảm bảo sử dụng file trước thời hạn này. Sau khi API xử lý xong (ví dụ: đăng ký giọng nói, khử nhiễu), kết quả sẽ được lưu trữ vĩnh viễn trong hệ thống.
  • Giới hạn thời lượng: Hỗ trợ file audio có thời lượng tối đa 30 phút.
  • Định dạng hỗ trợ:
    • Audio: WAV, MP3, và các định dạng audio phổ biến khác
    • Video: MP4, WEBM, AVI, và các định dạng video phổ biến khác