Açıklamalar İngilizce
private-fishaudio-voice-clones.{userId}
Progress of your Fish Audio voice clones: one event per status change of a clone created via POST /voices/fishaudio/clones (or in the web dashboard). Key permission: voices.read.
Kanal parametreleri
Değerlerinizi girin — kanal adında, aşağıdaki kodda ve konsolda görünürler. Hiçbir yere gönderilmez ve asla sayfa adresine yazılmazlar.
is the numeric id of the key owner, returned by GET /user.
Abone olunacak kanal adı
private-fishaudio-voice-clones.{userId}
Adda hâlâ süslü parantez içinde yer tutucular var. Bu adla abone olamazsınız: sunucu kanalları tam ad eşleşmesiyle yetkilendirir.
import Pusher from 'pusher-js';
const pusher = new Pusher('7c4dd881d8116ac76fe89aff71d8c2ff', {
wsHost: 'ws.lumean.app',
wsPort: 443, wssPort: 443,
forceTLS: true,
enabledTransports: ['ws', 'wss'],
cluster: '',
channelAuthorization: {
endpoint: 'https://api.lumean.app/api/public/broadcasting/auth',
headers: { 'X-API-KEY': 'YOUR_API_KEY' },
},
});
const channel = pusher.subscribe('private-fishaudio-voice-clones.{userId}');
channel.bind('voice_clone.updated', (data) => {
console.log(data);
});import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
const echo = new Echo({
broadcaster: 'pusher',
key: '7c4dd881d8116ac76fe89aff71d8c2ff',
wsHost: 'ws.lumean.app',
wsPort: 443, wssPort: 443,
forceTLS: true,
enabledTransports: ['ws', 'wss'],
cluster: '',
authEndpoint: 'https://api.lumean.app/api/public/broadcasting/auth',
auth: { headers: { 'X-API-KEY': 'YOUR_API_KEY' } },
});
echo.private('fishaudio-voice-clones.{userId}')
// baştaki nokta Laravel Echo içindir; pusher-js'te yoktur
.listen('.voice_clone.updated', (e) => {
console.log(e);
});# pip install websocket-client requests
import json, requests, websocket
APP_KEY = "7c4dd881d8116ac76fe89aff71d8c2ff"
WS_URL = "wss://ws.lumean.app:443/app/" + APP_KEY + "?protocol=7&client=python&version=1.0"
CHANNEL = "private-fishaudio-voice-clones.{userId}"
ws = websocket.create_connection(WS_URL)
# 1. socket_id değerini pusher:connection_established olayından alın
hello = json.loads(ws.recv())
socket_id = json.loads(hello["data"])["socket_id"]
# 2. özel aboneliği API anahtarınızla yetkilendirin
auth = requests.post("https://api.lumean.app/api/public/broadcasting/auth",
headers={"X-API-KEY": "YOUR_API_KEY"},
data={"socket_id": socket_id, "channel_name": CHANNEL},
).json()["auth"]
# 3. abone olun ve olayları dinleyin
ws.send(json.dumps({"event": "pusher:subscribe",
"data": {"auth": auth, "channel": CHANNEL}}))
while True:
print(ws.recv())Payload örneği
Kanal: private-fishaudio-voice-clones.{userId}
Bu, spesifikasyondan bir örnektir. Bağlantı yok ve taklit de edilmiyor: gerçekten abone olmak için API anahtarınız gerekir.
.voice_clone.updated
{
"voice_clone": {
"id": "<uuid>",
"provider": "fishaudio",
"display_name": "string",
"language": "ru",
"description": "string",
"status": "pending",
"voice_id": "string",
"attempts": 1,
"error": {
"reason": "string",
"message": "string"
},
"created_at": "<date-time>",
"completed_at": "<date-time>",
"failed_at": "<date-time>",
"banned_at": "<date-time>",
"ban_reason": "string"
}
}Kanal olayları: 1
Her olayın kendi çapa bağlantısı, açıklamalar ve enum değerleriyle tam bir payload tablosu ve örnek bir yapısı vardır. Adlar Laravel Echo gösteriminde, yani baştaki noktayla gösterilir.
.voice_clone.updated
Echo: .voice_clone.updated · pusher-js: voice_clone.updated
A Fish Audio voice clone was created or changed status (pending → cloning → ready or failed; archived after deletion; banned — blocked by a moderator). voice_id appears only once the clone is ready — put it into tts_settings.voice_id of a Fish Audio template.
Payload alanları
voice_clonezorunluobject
Clone status. banned — a moderator blocked the clone: it is not accepted for new orders and cannot be deleted; the reason is in ban_reason.
The Fish Audio voice id (a 32-character hex string, not a UUID) — the value for tts_settings.voice_id of a template. Present only once the clone is ready, otherwise null.
errorzorunluobject | null
processing_error, max_retries, network, timeout, dispatch_failed, unbanned
Why a moderator blocked the clone, or null.
Payload örneği
{
"voice_clone": {
"id": "<uuid>",
"provider": "fishaudio",
"display_name": "string",
"language": "ru",
"description": "string",
"status": "pending",
"voice_id": "string",
"attempts": 1,
"error": {
"reason": "string",
"message": "string"
},
"created_at": "<date-time>",
"completed_at": "<date-time>",
"failed_at": "<date-time>",
"banned_at": "<date-time>",
"ban_reason": "string"
}
}Değerler, spesifikasyonda bulunduğu yerde oradan alınır; geri kalanlar türe dayalı yer tutuculardır. Bu, olayın yapısıdır, gerçek bir olayın kaydı değildir.
Tüm kanallar ve bağlantı parametreleri·POST /broadcasting/auth
Bu sayfayı yapay zekâya verin
spesifikasyon 0.0.1