# 语音合成 HTTP 单向流（火山原生协议透传）

**火山原生协议透传，非 OpenAI 兼容格式**：请求体与响应体均为火山语音合成 `bigmodel`
HTTP chunked 单向流原生格式，网关只做鉴权重写与计费旁路，不改写内容。适合已有火山
SDK 集成、想直接切换域名接入的客户；OpenAI 兼容格式见 `POST /v1/audio/speech`。

**鉴权**（二选一，均为 `tr-` 前缀 key）：
- `Authorization: Bearer <tr-key>`
- `X-Api-Key: <tr-key>`（火山 SDK 原生头，零改造接入）

**选模型**：`?model=<模型ID>` 优先；不传则回退到请求头 `X-Api-Resource-Id`
（火山原生客户端天然携带）。

**响应**：`Content-Type: application/json`，body 是 chunked、换行分隔的 JSON 对象流
（非单个 JSON），每个对象可能含：
- `code`：状态码，`20000000` 表示本次合成结束
- `data`：base64 编码的音频分片（增量）
- `sentence`：分句 / 字幕信息（`audio_params.enable_subtitle=true` 时返回字级时间戳）
- `usage.text_words`：本次合成计费字符数（结算权威口径，以最后一次出现的值为准）

**计费**：按文本字符数计费（含标点）；`req_params.additions.context_texts` 中的语音
指令文本不计费；结算以上游最终返回的 `usage.text_words` 为准，网关侧字符数估算仅用于
请求前预授权与上游未回传时的兜底。

## POST /v1/audio/speech/unidirectional

> 语音合成 HTTP 单向流（火山原生协议透传）

**火山原生协议透传，非 OpenAI 兼容格式**：请求体与响应体均为火山语音合成 `bigmodel`
HTTP chunked 单向流原生格式，网关只做鉴权重写与计费旁路，不改写内容。适合已有火山
SDK 集成、想直接切换域名接入的客户；OpenAI 兼容格式见 `POST /v1/audio/speech`。

**鉴权**（二选一，均为 `tr-` 前缀 key）：
- `Authorization: Bearer <tr-key>`
- `X-Api-Key: <tr-key>`（火山 SDK 原生头，零改造接入）

**选模型**：`?model=<模型ID>` 优先；不传则回退到请求头 `X-Api-Resource-Id`
（火山原生客户端天然携带）。

**响应**：`Content-Type: application/json`，body 是 chunked、换行分隔的 JSON 对象流
（非单个 JSON），每个对象可能含：
- `code`：状态码，`20000000` 表示本次合成结束
- `data`：base64 编码的音频分片（增量）
- `sentence`：分句 / 字幕信息（`audio_params.enable_subtitle=true` 时返回字级时间戳）
- `usage.text_words`：本次合成计费字符数（结算权威口径，以最后一次出现的值为准）

**计费**：按文本字符数计费（含标点）；`req_params.additions.context_texts` 中的语音
指令文本不计费；结算以上游最终返回的 `usage.text_words` 为准，网关侧字符数估算仅用于
请求前预授权与上游未回传时的兜底。

### Authentication

`Authorization: Bearer tr-xxx`

### Query Parameters

- **model** `string`  
  语音合成模型 / 渠道 ID，与 `X-Api-Resource-Id` 二选一，query 优先

### Request Body

Content-Type: `application/json`

- **user** `object`  
  可选，调用方自定义用户标识，原样透传给上游
- **user.uid** `string`  
  
- **req_params** `object` **(required)**  
  
- **req_params.text** `string` **(required)**  
  待合成文本（必填），计费按字符数（含标点）
- **req_params.model** `string` (default: `seed-tts-2.0-standard`)  
  复刻音色场景使用的模型 ID，默认 `seed-tts-2.0-standard`
- **req_params.speaker** `string` **(required)**  
  音色 ID（必填）
- **req_params.ssml** `string`  
  SSML 标记文本，与 `text` 二选一使用，具体规则见火山文档
- **req_params.audio_params** `object`  
  
- **req_params.additions** `object`  
  
- **req_params.section_id** `string`  
  跨请求包保持语义连贯的分段 ID（长文本分段合成场景使用）
- **req_params.tone_fidelity** `boolean`  
  音色保真开关，仅音色复刻 2.0 模型支持

### Response

### Error Codes

- `400`: 
- `401`: 
- `402`: 
- `429`: 
- `502`:
