Fish Audio S2 API là REST API chuyển văn bản thành giọng nói cấp độ sản xuất, dựa trên mô hình 4 tỷ tham số huấn luyện từ 10 triệu giờ âm thanh. Nó hỗ trợ nhân bản giọng nói, truyền phát trực tuyến, và hơn 50 ngôn ngữ. Để gửi request, quản lý tài liệu tham chiếu, kiểm thử đơn vị nhanh và hiệu quả, sử dụng Apidog là cách nhanh nhất để khám phá, lập tài liệu và xác thực mọi endpoint.
Giới thiệu
Giọng nói do AI tạo ra đã đạt trình độ vượt xa robot. Các mô hình TTS hiện có thể thì thầm, cười, thay đổi tông tự nhiên như người. Fish Audio S2 API là một trong những hệ thống mạnh nhất: mô hình 4 tỷ tham số, đa ngôn ngữ, cho ra chất lượng gần như bản ghi người thật.
Dù bạn xây dựng automation podcast, voice assistant hay hệ thống lồng tiếng thời gian thực, việc tích hợp Fish Audio S2 API đòi hỏi nắm vững xác thực, quản lý reference audio, streaming, và viết kiểm thử đơn vị để đảm bảo tích hợp không lỗi âm thầm khi vận hành.
💡Trước khi gọi thử Fish Audio S2 API, hãy tải Apidog miễn phí. Bạn có thể kiểm tra trực quan thẻ cảm xúc, block streaming, payload nhân bản giọng nói, phản hồi audio nhị phân trong vài giây, không cần code. Mô phỏng, xác thực và nghe trực tiếp để đảm bảo tích hợp TTS chạy ổn định ngay từ đầu.
Fish Audio S2 API là gì?
Fish Audio S2 API cung cấp HTTP interface cho Fish Speech S2-Pro, hệ thống TTS mã nguồn mở dựa trên Dual-Autoregressive (Dual-AR). Mô hình phân tách tạo ngữ nghĩa (4B tham số, AR chậm) và mã dư (400M tham số, AR nhanh), giúp tổng hợp chất lượng cao với real-time factor 0.195 trên một GPU NVIDIA H200.
Các khả năng nổi bật:
| Tính năng | Chi tiết |
|---|---|
| Ngôn ngữ | ~50 (Anh, Trung, Nhật, Hàn, Ả Rập, Pháp, Đức, ...) |
| Nhân bản giọng nói | Reference audio 10–30s, không cần fine-tune |
| Điều khiển cảm xúc nội tuyến | Thẻ tự nhiên: [laugh], [whispers], [super happy]
|
| Giọng đa người | Token <|speaker:i|> cho dialogue |
| Streaming | Âm thanh trả về từng block qua "streaming": true
|
| Định dạng đầu ra | WAV, MP3, PCM |
| Xác thực | Bearer token (Authorization: Bearer YOUR_API_KEY) |
URL mặc định khi deploy local là http://127.0.0.1:8080. Tất cả endpoint nằm dưới /v1/.
Bắt đầu với Fish Audio S2 API & Apidog
Điều kiện tiên quyết
Cần có: 1 máy chủ Fish Speech S2-Pro và 1 khách API xử lý phản hồi audio nhị phân.
Khởi động server Fish Audio S2 API:
python tools/api_server.py \
--llama-checkpoint-path checkpoints/s2-pro \
--decoder-checkpoint-path checkpoints/s2-pro/codec.pth \
--listen 0.0.0.0:8080 \
--compile \
--half \
--api-key YOUR_API_KEY \
--workers 4
--compile bật torch.compile để tăng tốc suy luận. --half giảm bộ nhớ GPU nhờ FP16.
Kiểm tra server đã sẵn sàng:
curl http://127.0.0.1:8080/v1/health
# {"status":"ok"}
Thiết lập Fish Audio S2 API trong Apidog
Tải Apidog miễn phí, tạo dự án HTTP mới, thêm base URL http://127.0.0.1:8080 trong Environments. Đặt header chung:
Authorization: Bearer YOUR_API_KEY
Cấu hình này giúp mọi request Fish Audio S2 API đều có token, dễ chuyển đổi môi trường (dev, staging, production) chỉ bằng 1 click.
Thực hiện request Fish Audio S2 API đầu tiên với Apidog
Kiểm tra endpoint chuyển văn bản thành giọng nói
Endpoint chính: POST /v1/tts. Trong Apidog, tạo request mới với URL này, phương thức POST, nội dung JSON:
{
"text": "Hello! This is a test of the Fish Audio S2 API.",
"format": "wav",
"streaming": false,
"temperature": 0.8,
"top_p": 0.8,
"repetition_penalty": 1.1,
"max_new_tokens": 1024
}
Schema đầy đủ cho request TTS:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
text |
chuỗi | bắt buộc | Văn bản để tổng hợp |
format |
chuỗi | "wav" |
Định dạng đầu ra: wav, mp3, pcm |
chunk_length |
int | 200 | Kích thước block (100–300) |
| seed | int | null | Seed cố định để tái tạo |
| streaming | bool | false | Trả âm thanh dạng block theo thời gian thực |
| max_new_tokens | int | 1024 | Số token tối đa tạo |
| temperature | float | 0.8 | Độ ngẫu nhiên sampling (0.1–1.0) |
| top_p | float | 0.8 | Nucleus sampling (0.1–1.0) |
| repetition_penalty | float | 1.1 | Phạt lặp từ (0.9–2.0) |
| use_memory_cache | chuỗi | "off" |
Lưu cache mã hóa tham chiếu |
Nhấn Gửi trong Apidog. API trả về raw audio bytes. Apidog tự phát hiện audio/wav và cho phép nghe trực tiếp trong giao diện mà không cần code.
Nhân bản giọng nói với Fish Audio S2 API
Tải lên âm thanh tham chiếu qua Apidog
Để clone giọng nói zero-shot, truyền trường references trong request TTS. Đầu tiên, upload reference qua POST /v1/references/add:
{
"id": "my-voice-clone",
"text": "This is the reference transcription matching the audio.",
"audio": "<base64-encoded-wav-bytes>"
}
Trong Apidog, chọn content-type Binary hoặc Form Data để upload file audio và transcript. API trả về:
{
"success": true,
"message": "Reference added successfully",
"reference_id": "my-voice-clone"
}
Tham chiếu reference trong request TTS:
{
"text": "This sentence will be spoken in the cloned voice.",
"reference_id": "my-voice-clone",
"format": "mp3"
}
Dùng bảng Quản lý tham chiếu trong Apidog để lưu các mẫu reference, giúp thay đổi nhanh reference_id khi kiểm thử nhiều giọng clone.
Kiểm thử đơn vị tích hợp Fish Audio S2 API
Tại sao cần kiểm thử đơn vị?
Tích hợp Fish Audio S2 API có thể lỗi ngầm nếu không kiểm thử tự động: ID reference không tồn tại, temperature sai phạm vi, dùng streaming sai, hoặc format audio không đúng. Unit test giúp phát hiện lỗi trước khi lên production.
Viết kiểm thử đơn vị với Python
Bộ kiểm thử cơ bản sử dụng pytest và httpx:
import pytest
import httpx
import base64
BASE_URL = "http://127.0.0.1:8080"
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
class TestFishAudioS2API:
def test_health_check(self):
response = httpx.get(f"{BASE_URL}/v1/health", headers=HEADERS)
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_tts_basic_request(self):
payload = {
"text": "Unit test: verifying Fish Audio S2 API TTS output.",
"format": "wav",
"seed": 42,
}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=60,
)
assert response.status_code == 200
assert response.headers["content-type"] == "audio/wav"
assert len(response.content) > 1000
def test_tts_invalid_temperature_raises_error(self):
payload = {"text": "test", "temperature": 99.0}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=30,
)
assert response.status_code == 422
def test_reference_add_and_list(self):
with open("test_reference.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
add_response = httpx.post(
f"{BASE_URL}/v1/references/add",
json={
"id": "unit-test-voice",
"text": "This is a unit test reference audio.",
"audio": audio_b64,
},
headers=HEADERS,
)
assert add_response.json()["success"] is True
list_response = httpx.get(
f"{BASE_URL}/v1/references/list", headers=HEADERS
)
assert "unit-test-voice" in list_response.json()["reference_ids"]
httpx.request(
"DELETE",
f"{BASE_URL}/v1/references/delete",
json={"reference_id": "unit-test-voice"},
headers=HEADERS,
)
Chạy test:
pytest test_fish_audio_s2_api.py -v
Chạy kiểm thử đơn vị với Apidog
Không cần code Python, bạn có thể dùng Apidog với tính năng Kịch bản kiểm thử:
- Mở collection Fish Audio S2 API
- Chọn Kịch bản kiểm thử → Kịch bản mới
- Thêm các bước: kiểm tra health → request TTS → add reference → list reference
- Tab Xác nhận cho request TTS: trạng thái
200, headercontent-typechứaaudio, thời gian phản hồi <30000ms - Nhấn Chạy để thực hiện toàn bộ chuỗi kiểm thử
Apidog tự tạo báo cáo pass/fail, đo thời gian, cho phép export hoặc tích hợp CI.
Các tính năng nâng cao
Streaming âm thanh thời gian thực
Cho ứng dụng real-time, đặt "streaming": true:
import httpx
with httpx.stream(
"POST",
"http://127.0.0.1:8080/v1/tts",
json={
"text": "Streaming audio from the Fish Audio S2 API in real time.",
"format": "wav",
"streaming": True,
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=None,
) as response:
with open("streamed_output.wav", "wb") as audio_file:
for chunk in response.iter_bytes(chunk_size=4096):
audio_file.write(chunk)
API trả về các byte âm thanh trước khi tổng hợp xong, giúp phản hồi siêu nhanh (~100ms cho âm đầu).
Điều khiển cảm xúc nội tuyến
Chèn thẻ cảm xúc ngay trong trường text:
{
"text": "[whispers] The secret is hidden here. [super happy] I found it!",
"format": "wav"
}
Thẻ ví dụ: [laugh], [cough], [pitch up], [professional broadcast tone], [whisper in small voice].
Kết luận
Fish Audio S2 API cung cấp công cụ TTS production-grade qua REST rõ ràng. Từ tổng hợp cơ bản đến clone giọng nói zero-shot, streaming thời gian thực, chỉ với 6 endpoint đã đủ cho workflow tạo voice chuyên nghiệp. Để tích hợp ổn định, hãy chú ý đặt đúng sampling params (temperature, top_p, repetition_penalty), quản lý vòng đời reference audio và duy trì bộ kiểm thử đơn vị cho từng endpoint.
Apidog giúp giảm tối đa thời gian làm quen: gửi request Fish Audio S2 API đầu tiên trong 2 phút, nghe audio inline, sinh code máy khách, chạy kiểm thử tự động mà không cần setup testing framework. Khi cần chia sẻ/ghi tài liệu API, Apidog tự động giữ mọi thứ đồng bộ cho team.
Tải Apidog miễn phí và import collection Fish Audio S2 API để kiểm thử ngay hôm nay.
Câu hỏi thường gặp
Fish Audio S2 API là gì? API REST của Fish Speech S2-Pro, mô hình TTS 4B tham số, 10 triệu giờ audio, hỗ trợ nhân bản giọng nói, streaming, điều khiển cảm xúc, 50+ ngôn ngữ, endpoint dưới /v1/.
Xác thực với Fish Audio S2 API như thế nào? Thêm token Bearer vào header: Authorization: Bearer YOUR_API_KEY. Apidog cho phép lưu token ở môi trường, tự động thêm cho mọi request.
Có thể kiểm thử đơn vị Fish Audio S2 API mà không viết code không? Có. Tính năng Test Scenarios của Apidog giúp bạn xây dựng, chạy unit test mọi endpoint Fish Audio S2 API qua giao diện trực quan, xác nhận status, thời gian, header, không cần setup code.
Fish Audio S2 API trả về audio định dạng nào? WAV, MP3, PCM. Chọn bằng trường "format" trong request. Mặc định là WAV.
Cách nhân bản giọng nói hoạt động? Upload audio tham chiếu 10–30s và transcript lên POST /v1/references/add. Dùng "reference_id" trong request TTS để clone giọng nói không cần fine-tune hay retrain.
Real-time factor (RTF) của API là bao nhiêu? Trên NVIDIA H200, RTF là 0.195 khi bật streaming (~5s audio tạo ra mỗi 1s xử lý), âm đầu trả về ~100ms.
Kiểm tra phản hồi API trong Apidog như thế nào? Khi API trả về binary audio, Apidog hiển thị trình phát audio inline, nghe trực tiếp, kiểm tra header, thêm xác nhận – tất cả ngay trong giao diện gửi request.
Top comments (0)