HieStudio Local API · v1

Kết nối công cụ bên thứ ba với TTS/STT chạy cục bộ

Local API chạy trong HieStudio Desktop và sử dụng cùng tài khoản, quyền sử dụng, thư viện giọng và hàng đợi tác vụ. HieStudio Desktop phải đang mở và người dùng phải đăng nhập.

Bắt đầu

Vào Settings → Local API, chọn bind address, port và bật Local API. Mặc định endpoint là http://127.0.0.1:17860/v1. Nếu bạn đổi bind address hoặc port, thay base URL trong các ví dụ bên dưới.

Lưu ý về bind address: 0.0.0.0 hoặc :: là địa chỉ để server lắng nghe trên mọi interface, không phải địa chỉ mà máy khác dùng để kết nối. Client trong LAN phải dùng IP thực của máy chạy HieStudio, ví dụ http://192.168.1.20:17860/v1.
curl http://127.0.0.1:17860/v1/health \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY"

Nếu Bearer authentication đang tắt trong Settings, bỏ hoàn toàn header Authorization.

Authentication

Authentication là cấu hình cục bộ và có thể bật/tắt. Khi bật, mọi request phải gửi API key của tài khoản HieStudio đang đăng nhập.

# Bash
export HIESTUDIO_API_KEY="hiestudio_..."

# PowerShell
$env:HIESTUDIO_API_KEY="hiestudio_..."

Nút Tạo lại trong Settings vô hiệu key cũ ngay lập tức. Khi đổi tài khoản đăng nhập, hãy sử dụng API key của tài khoản mới.

Giọng

Danh sách chỉ trả các giọng mà tài khoản hiện tại có quyền sử dụng. Đây là cùng semantics với thư viện giọng/TTS trên giao diện HieStudio.

curl "http://127.0.0.1:17860/v1/voices?page=1&limit=100" \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY"

Có thể dùng thêm search, languageCode, gender, scope, sortBysortDirection.

Text-to-Speech

TTS yêu cầu tài khoản có quyền sử dụng Kết nối ứng dụng và Text-to-Speech. voiceId phải là giọng đang có trong thư viện của tài khoản.

curl -X POST http://127.0.0.1:17860/v1/tts/jobs \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voiceId": "11111111-1111-4111-8111-111111111111",
    "text": "Xin chào, đây là HieStudio.",
    "language": "vi"
  }'
Tham sốKiểuBắt buộcMặc địnhMô tả
voiceIduuidGiọng trong thư viện mà tài khoản hiện tại có quyền sử dụng.
textstringNội dung TXT/SRT/VTT, tối đa 100.000 ký tự.
languagestringKhôngautoMã ngôn ngữ TTS.
inputFormattxt | srt | vttKhôngtxtĐịnh dạng nội dung đầu vào.
outputFormatwav | mp3 | aac | flacKhôngwavĐịnh dạng audio đầu ra.
sampleRateintegerKhông2400016000, 22050, 24000, 32000, 44100 hoặc 48000.
bitrateKbpsinteger | nullKhông12864, 96, 128, 192, 256 hoặc 320.
audioChannelsmono | stereoKhôngmonoSố kênh audio đầu ra.
stepsintegerKhông16Mức chi tiết, từ 8 đến 64.
guidanceScalenumberKhông2.0Guidance từ 0.5 đến 5.0.
speednumberKhông1.0Tốc độ từ 0.5 đến 2.0.
durationnumber | nullKhôngnullThời lượng mục tiêu nếu tính năng xử lý hỗ trợ; phải > 0.
denoisebooleanKhôngtrueGiảm nhiễu.
preprocessPromptbooleanKhôngtrueTiền xử lý prompt/text.
postprocessOutputbooleanKhôngtrueHậu xử lý audio.
trimSilencebooleanKhôngtrueCắt khoảng lặng đầu/cuối.

Chỉ các trường được mô tả trong tài liệu này được chấp nhận.

Speech-to-Text

STT yêu cầu tài khoản có quyền sử dụng Kết nối ứng dụng và Speech-to-Text. Audio được gửi bằng multipart/form-data; API không nhận đường dẫn tệp cục bộ.

curl -X POST http://127.0.0.1:17860/v1/stt/jobs \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY" \
  -F "[email protected]" \
  -F "language=vi" \
  -F "punctuation=true" \
  -F "diarizationEnabled=true" \
  -F "speakerCountMode=auto"
Tham sốKiểuBắt buộcMặc địnhMô tả
filebinaryWAV, MP3, FLAC, OGG, AAC, M4A, MP4 hoặc WEBM; tối đa 512 MB.
languagestringKhôngautoMã ngôn ngữ hoặc auto.
punctuationbooleanKhôngtrueKhôi phục dấu câu.
cropStartSecondsnumberKhôngnullThời điểm bắt đầu đoạn cần nhận dạng.
cropEndSecondsnumberKhôngnullThời điểm kết thúc; phải lớn hơn start.
diarizationEnabledbooleanKhôngtruePhân tách người nói.
speakerCountModeauto | exactKhôngautoTự nhận số người nói hoặc chỉ định chính xác.
speakerCountintegerKhi exactnullTừ 1 đến 32 khi speakerCountMode=exact.

Tác vụ & kết quả

TTS/STT xử lý theo tác vụ bất đồng bộ. Phản hồi tạo tác vụ trả về ID để ứng dụng kiểm tra trạng thái. Local API chỉ cho truy cập các tác vụ được tạo qua Local API.

# Poll
curl http://127.0.0.1:17860/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY"

# Hủy job đang chạy/chờ
curl -X POST http://127.0.0.1:17860/v1/jobs/JOB_ID/cancel \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY"

# Tải audio TTS
curl -L http://127.0.0.1:17860/v1/jobs/JOB_ID/output \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY" \
  -o output.wav

# STT transcript
curl "http://127.0.0.1:17860/v1/jobs/JOB_ID/transcript?format=srt" \
  -H "Authorization: Bearer $HIESTUDIO_API_KEY"

Transcript hỗ trợ txt, srt, vtt, json-simplejson-full.

Errors

{
  "error": {
    "code": "ENTITLEMENT_REQUIRED",
    "message": "Gói hiện tại chưa được cấp quyền sử dụng tính năng này.",
    "feature": "tts"
  }
}
HTTPCodeÝ nghĩa
401AUTH_REQUIRED / INVALID_API_KEYChưa đăng nhập hoặc Bearer token sai/thiếu.
402ENTITLEMENT_REQUIREDGói hoặc quyền dùng thử hiện tại chưa cấp tính năng được yêu cầu.
404JOB_NOT_FOUND / OUTPUT_NOT_FOUNDTác vụ hoặc kết quả không tồn tại hoặc không thuộc Local API.
409MODEL_NOT_INSTALLED / VOICE_NOT_READYThành phần cần thiết hoặc giọng chưa sẵn sàng.
422INVALID_REQUESTPayload hoặc tham số không hợp lệ.
429QUEUE_FULLĐã có quá nhiều tác vụ Local API đang chờ hoặc xử lý.
503ENGINE_UNAVAILABLE / LOCAL_API_DISABLEDTính năng xử lý chưa sẵn sàng hoặc API đã tắt.

Limits & security

  • Local API chỉ hoạt động khi HieStudio Desktop đang chạy, người dùng đã đăng nhập và tài khoản có quyền sử dụng Kết nối ứng dụng.
  • Text-to-Speech và Speech-to-Text vẫn yêu cầu quyền tương ứng; bật Local API không tự cấp thêm tính năng.
  • Khi authentication bật, mỗi tài khoản sử dụng API key riêng.
  • Nếu bind ra LAN/WAN, nên bật Bearer authentication và cấu hình firewall. Tắt authentication trên non-loopback đồng nghĩa máy khác có thể gọi API nếu truy cập được port.
  • Request có header Origin từ trình duyệt bị từ chối. Local API không bật CORS và được thiết kế cho CLI, desktop app, automation và dịch vụ chạy trên máy hoặc mạng tin cậy.
  • Local API không cung cấp chức năng đăng nhập, đổi gói dịch vụ hoặc quản lý tài nguyên và plugin.

OpenAPI 3.1: /api-specs/local-api-v1.openapi.yaml