DEV Community

Cover image for Hướng Dẫn Sử Dụng Fish Audio S2 API Chi Tiết với Apidog
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Hướng Dẫn Sử Dụng Fish Audio S2 API Chi Tiết với Apidog

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.

Dùng thử Apidog ngay hôm nay

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 pytesthttpx:

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ử:

  1. Mở collection Fish Audio S2 API
  2. Chọn Kịch bản kiểm thửKịch bản mới
  3. Thêm các bước: kiểm tra health → request TTS → add reference → list reference
  4. Tab Xác nhận cho request TTS: trạng thái 200, header content-type chứa audio, thời gian phản hồi < 30000ms
  5. 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)