# Streaming

Source: https://docs.vieneu.io/vi/docs/sdk/streaming

v3 Turbo stream **theo từng frame** trên cả hai engine. Lặp qua `infer_stream` và phát hoặc ghi từng chunk ngay khi nhận.

```python
from vieneu import Vieneu

tts = Vieneu()                                    # GPU → PyTorch + bộ lịch stream; CPU → ONNX
for chunk in tts.infer_stream("Xin chào các bạn!", voice="Mai Anh"):
    play(chunk)                                   # np.float32 @ 48 kHz
```

## Độ trễ và đồng thời {#latency-and-concurrency}

| Engine | Âm đầu tiên | Stream đồng thời |
|---|---|---|
| GPU (PyTorch), RTX 3060 | ~115 ms | 16 (tối đa 32), mỗi stream RTF ≈ 0,5–0,6 |
| CPU (ONNX) int8 | ~140 ms | 2 |
| CPU (ONNX) fp32 | ~300 ms | 1 |

Trên GPU các stream dùng chung một CUDA graph qua continuous batching. Gọi `infer_stream` từ nhiều thread cùng lúc chính là cách phục vụ nhiều người nghe; `Vieneu(max_streams=16)` đặt trần. Yêu cầu đầu tiên sau khi GPU nghỉ tốn thêm 100–300 ms cho tới khi xung nhịp lên.

Toàn bộ số đo (TTFA và RTF theo `max_streams`, ước lượng cho GPU nhỏ hơn, số CPU) ở [`docs/streaming.md`](https://github.com/pnnbao97/VieNeu-TTS/blob/main/docs/streaming.md) trong repo.

## Định dạng chunk {#chunk-format}

Mỗi chunk là mảng `numpy.float32` 48 kHz, mono. Đổi sang PCM 16-bit cho phần lớn thiết bị:

```python
import numpy as np

pcm16 = (np.clip(chunk, -1, 1) * 32767).astype(np.int16).tobytes()
```

## Phục vụ qua HTTP {#serving-over-http}

Muốn đưa streaming ra tiến trình hay ngôn ngữ khác, chạy server tương thích OpenAI trong repo. Nó stream `pcm`/`wav` dạng chunked hoặc SSE từ `POST /v1/audio/speech`, nên OpenAI SDK, Pipecat và LiveKit chạy được chỉ bằng đổi `base_url`. Xem [Server tương thích OpenAI](/docs/sdk/remote-mode).

## v3 Nano {#v3-nano}

Nano không stream theo frame: `infer_stream` trả từng chunk đã hoàn chỉnh. Cần thời gian tới âm đầu ngắn thì dùng Turbo.

## Lựa chọn có sẵn trên cloud {#hosted-alternative}

Cùng dạng streaming này có sẵn không cần GPU tại [endpoint streaming của Cloud API](/docs/cloud-api/streaming).
