# Server tương thích OpenAI

Source: https://docs.vieneu.io/vi/docs/sdk/remote-mode

`apps/openai_speech.py` trong repo phục vụ `POST /v1/audio/speech` đúng như endpoint TTS của OpenAI (`pcm`/`wav`, chunked hoặc SSE). OpenAI SDK, Pipecat, LiveKit Agents và Vercel AI SDK chạy được chỉ bằng đổi `base_url`.

## Khởi động server {#start-the-server}

Chọn một; tất cả lắng nghe ở `http://localhost:8000`:

```bash
uv run python -m apps.openai_speech                                  # từ bản clone repo, tự nhận GPU/CPU
docker compose -f docker/docker-compose.yml --profile api-gpu up     # Docker, GPU
docker compose -f docker/docker-compose.yml --profile api-cpu up     # Docker, chỉ CPU (không cần torch)
```

Đo thời gian tới âm đầu và RTF trên máy bạn:

```bash
uv run python examples/openai_speech_client.py --bench 8
```

## Gọi thử {#call-it}

```python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")
with client.audio.speech.with_streaming_response.create(
    model="vieneu-v3-turbo",
    voice="Mai Anh",
    input="Xin chào! Đây là chế độ streaming của VieNeu.",
    response_format="pcm",
) as r:
    for chunk in r.iter_bytes(4096):      # s16le 48 kHz mono, sinh tới đâu nhận tới đó
        play(chunk)
```

## Endpoint {#endpoints}

| Phương thức | Đường dẫn | Mục đích |
|---|---|---|
| `POST` | `/v1/audio/speech` | Tổng hợp; `response_format` `pcm` hoặc `wav`, dạng stream |
| `GET` | `/v1/models` | Danh sách mô hình |
| `GET` | `/v1/voices` | Giọng có sẵn và giọng đã đăng ký |
| `POST` | `/v1/voices` | Nhân bản từ mẫu tải lên |
| `GET` | `/health` | Kiểm tra sống |

Đồng thời chặn theo backend bằng `VIENEU_MAX_STREAMS` (mặc định 16 trên GPU, 1 trên CPU). Vượt trần thì chờ trong hàng đợi ngắn, rồi nhận `429`. Âm đầu tới sau ~115 ms với 16 stream trên RTX 3060; ~140–300 ms và 1–2 stream trên CPU. Số đầy đủ: [`docs/streaming.md`](https://github.com/pnnbao97/VieNeu-TTS/blob/main/docs/streaming.md).

## Web UI trong Docker {#web-ui-in-docker}

```bash
docker compose -f docker/docker-compose.yml --profile gpu up   # hoặc --profile cpu → http://localhost:7860
```

Image và build cho production: [`docs/Deploy.md`](https://github.com/pnnbao97/VieNeu-TTS/blob/main/docs/Deploy.md) trong repo và trang [Docker](/docs/deployment/docker) của chúng tôi.

## Dùng dịch vụ có sẵn thay vì tự chạy {#hosted-instead-of-self-hosted}

Không muốn nuôi GPU thì [VieNeu Cloud API](/docs/cloud-api/openai-compatible) có cùng dạng tương thích OpenAI tại `api.vieneu.io`, kể cả engine v4.

## Đồ cũ: chế độ `remote` v2 (đã bỏ) {#legacy-v2-remote-mode-deprecated}

:::warning
Server LMDeploy cổng 23333 và `Vieneu(mode="remote")` chỉ chạy với **VieNeu-TTS v2**, không còn cập nhật. Giữ lại cho hệ đang chạy. Với v3 Turbo dùng server streaming ở trên.
:::

```bash
docker run --gpus all -p 23333:23333 -v huggingface_cache:/root/.cache/huggingface pnnbao/vieneu-tts:latest --tunnel
pip install "vieneu[legacy]"
```

```python
from vieneu import Vieneu

tts = Vieneu(mode="remote", api_base="http://your-server-ip:23333/v1",
             model_name="pnnbao-ump/VieNeu-TTS-v2", emotion="natural")
audio = tts.infer(text="Chào bạn!")
tts.save(audio, "remote_output.wav")
```

Mô hình v3 Turbo fine-tune không được container đó phục vụ; nạp bằng SDK (`Vieneu(mode="v3turbo", backbone_repo=...)`). Cờ Docker cũ xem [Remote server](/docs/deployment/remote-server).
