Skip to content

Fish Audio — Клонирование Голоса ​

POST /sounds/fish-clone

Создаёт клон голоса из ваших аудиообразцов. Пришлите 1–5 ссылок на записи чистой речи (10–90 секунд каждая, без музыки и шума) — файлы сначала загрузите через /files. Клон создаётся сразу (обычно до минуты): в ответе voice_id, который можно использовать в /sounds/fish-tts и /sounds/fish-dialogue. Лимит: 3 запроса/мин.

Базовый URL: https://api.aihere.ru/api/v1
Авторизация: Authorization: Bearer <API-ключ>
Rate-limit: 3 запроса/мин

Параметры ​

ПолеТипОбяз.Описание
titlestringдаНазвание голоса
audio_urlsarray[string]даСсылки на 1–5 аудиофайлов с образцами голоса (mp3/wav/ogg/m4a/aac/flac, до 15 МБ каждый, 10–90 секунд чистой речи без музыки и шумов). Сначала загрузите файлы через /files и передайте полученные ссылки.
textsarray[string] (опционально)—Необязательные расшифровки образцов (в том же порядке) — повышают точность клона
descriptionstring (опционально)—Необязательное описание голоса

Примеры ​

bash
curl -X POST "https://api.aihere.ru/api/v1/sounds/fish-clone" \
  -H "Authorization: Bearer $AIHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Мой трек",
  "audio_urls": ["https://example.com/audio.mp3"]
}'
python
import requests

payload = {
    "title": "Мой трек",
    "audio_urls": [
        "https://example.com/audio.mp3"
    ]
}

resp = requests.post(
    "https://api.aihere.ru/api/v1/sounds/fish-clone",
    headers={
        "Authorization": f"Bearer {API_KEY}",
    },
    json=payload,
    timeout=60,
)
resp.raise_for_status()
print(resp.json())
javascript
const resp = await fetch("https://api.aihere.ru/api/v1/sounds/fish-clone", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "title": "Мой трек",
  "audio_urls": ["https://example.com/audio.mp3"]
}),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);
console.log(await resp.json());
php
$payload = json_decode('{"title": "Мой трек", "audio_urls": ["https://example.com/audio.mp3"]}', true);

$ch = curl_init('https://api.aihere.ru/api/v1/sounds/fish-clone');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        'Content-Type: application/json',
    ],
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($resp);

Ответ 200 ​

Клон голоса готов сразу — используйте voice_id в /sounds/fish-tts

json
{
  "voice_id": "string",
  "title": "string",
  "state": "string"
}

Ошибки ​

КодПричина
400Проблема с аудиообразцами (формат, размер, недоступная ссылка)
429Превышен rate-limit
502Ошибка провайдера генерации
503Провайдер недоступен или сбой сервиса баланса (списанные средства возвращаются)
422Ошибка валидации тела запроса (detail содержит список полей)
401Нет или невалидный API-ключ