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.
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, sortBy và sortDirection.
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ểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
| voiceId | uuid | Có | — | Giọng trong thư viện mà tài khoản hiện tại có quyền sử dụng. |
| text | string | Có | — | Nội dung TXT/SRT/VTT, tối đa 100.000 ký tự. |
| language | string | Không | auto | Mã ngôn ngữ TTS. |
| inputFormat | txt | srt | vtt | Không | txt | Định dạng nội dung đầu vào. |
| outputFormat | wav | mp3 | aac | flac | Không | wav | Định dạng audio đầu ra. |
| sampleRate | integer | Không | 24000 | 16000, 22050, 24000, 32000, 44100 hoặc 48000. |
| bitrateKbps | integer | null | Không | 128 | 64, 96, 128, 192, 256 hoặc 320. |
| audioChannels | mono | stereo | Không | mono | Số kênh audio đầu ra. |
| steps | integer | Không | 16 | Mức chi tiết, từ 8 đến 64. |
| guidanceScale | number | Không | 2.0 | Guidance từ 0.5 đến 5.0. |
| speed | number | Không | 1.0 | Tốc độ từ 0.5 đến 2.0. |
| duration | number | null | Không | null | Thời lượng mục tiêu nếu tính năng xử lý hỗ trợ; phải > 0. |
| denoise | boolean | Không | true | Giảm nhiễu. |
| preprocessPrompt | boolean | Không | true | Tiền xử lý prompt/text. |
| postprocessOutput | boolean | Không | true | Hậu xử lý audio. |
| trimSilence | boolean | Không | true | Cắ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ểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
| file | binary | Có | — | WAV, MP3, FLAC, OGG, AAC, M4A, MP4 hoặc WEBM; tối đa 512 MB. |
| language | string | Không | auto | Mã ngôn ngữ hoặc auto. |
| punctuation | boolean | Không | true | Khôi phục dấu câu. |
| cropStartSeconds | number | Không | null | Thời điểm bắt đầu đoạn cần nhận dạng. |
| cropEndSeconds | number | Không | null | Thời điểm kết thúc; phải lớn hơn start. |
| diarizationEnabled | boolean | Không | true | Phân tách người nói. |
| speakerCountMode | auto | exact | Không | auto | Tự nhận số người nói hoặc chỉ định chính xác. |
| speakerCount | integer | Khi exact | null | Từ 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-simple và json-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"
}
}| HTTP | Code | Ý nghĩa |
|---|---|---|
| 401 | AUTH_REQUIRED / INVALID_API_KEY | Chưa đăng nhập hoặc Bearer token sai/thiếu. |
| 402 | ENTITLEMENT_REQUIRED | Gó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. |
| 404 | JOB_NOT_FOUND / OUTPUT_NOT_FOUND | Tác vụ hoặc kết quả không tồn tại hoặc không thuộc Local API. |
| 409 | MODEL_NOT_INSTALLED / VOICE_NOT_READY | Thành phần cần thiết hoặc giọng chưa sẵn sàng. |
| 422 | INVALID_REQUEST | Payload hoặc tham số không hợp lệ. |
| 429 | QUEUE_FULL | Đã có quá nhiều tác vụ Local API đang chờ hoặc xử lý. |
| 503 | ENGINE_UNAVAILABLE / LOCAL_API_DISABLED | Tí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
Origintừ 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