# Голос и эмоция героя

Дать герою другой голос, эмоцию, темп.

`PATCH /characters/{character_id}` · всё

Герои — в [`GET /books/{id}`](/developers/book-get) → `characters`. После смены голоса озвученные главы станут
«изменены после озвучки»: переозвучьте их — заново озвучатся только куски этого героя.

## Параметры пути

| Параметр | Что это |
|---|---|
| `character_id` | Id героя |

## Тело запроса

JSON, заголовок `content-type: application/json`.

| Поле | Тип | Обязательно | Что это |
|---|---|---|---|
| `voice_id` | строка | нет | Голос из `GET /voices` |
| `emotion` | строка | нет | Эмоция героя по умолчанию |
| `controls` | объект | нет | `{"speed": 0.9}` — темп от 0,6 до 1,4 |
| `name` / `aliases` | строка / массив | нет | Имя и другие имена героя |
| `gender` / `age` | строка | нет | `m`/`f`; `child`, `young`, `adult`, `old` |

```bash
curl -X PATCH "https://golosar-kniga.tech/api/v1/characters/$CHARACTER_ID" \
  -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"voice_id": "01a134c9-6206-79f0-b812-4f2c0a9d5302", "emotion": "Спокойно"}'
```

```python
import os, requests

API = "https://golosar-kniga.tech/api/v1"
H = {"x-api-key": os.environ["GOLOSAR_KEY"]}
character_id = "01a134d0-ddae-7737-9ff4-0672f189eef8"

r = requests.patch(f"{API}/characters/{character_id}", headers=H, json={"voice_id": "01a134c9-6206-79f0-b812-4f2c0a9d5302", "emotion": "Спокойно"})
r.raise_for_status()
print(r.json())
```

```javascript
const API = "https://golosar-kniga.tech/api/v1";
const H = { "x-api-key": process.env.GOLOSAR_KEY, "content-type": "application/json" };
const characterId = "01a134d0-ddae-7737-9ff4-0672f189eef8";

const r = await fetch(`${API}/characters/${characterId}`, { method: "PATCH", headers: H, body: JSON.stringify({"voice_id": "01a134c9-6206-79f0-b812-4f2c0a9d5302", "emotion": "Спокойно"}) });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());
```

```json Ответ 200
{
  "character": {
    "id": "01a134d0-ddae-7737-9ff4-0672f189eef8",
    "name": "Мира",
    "aliases": [
      "Мира"
    ],
    "is_narrator": false,
    "voice_id": "01a134c9-6206-79f0-b812-4f2c0a9d5302",
    "emotion": "Спокойно",
    "controls": {
      "pitch": 0,
      "speed": 1.0,
      "formant": 1.0
    },
    "position": 1,
    "gender": "f",
    "age": "",
    "description": "",
    "preset_id": null,
    "source": "manual"
  }
}
```
