wss://api.erlcrussia.com/v1/realtime?model=emmy-voice-1. Il parametro model è facoltativo.
L’autenticazione funziona come in OpenAI:
- su un server, con l’header
Authorization: Bearer sk-voice-…; - nel browser, con i sottoprotocolli WebSocket
realtimeeopenai-insecure-api-key.sk-voice-….
instructions o tools) vengono ignorati.
Sessione
Dopo la connessione il server inviasession.created. Le impostazioni si cambiano con session.update:
ru, en, uk, be, es, it, fr, zh, ja, ko. Voci: F1, F2. L’audio in ingresso e in uscita è PCM16, mono, 24 kHz.
I turni sono manuali: turn_detection deve essere null e l’evento input_audio_buffer.commit chiude il turno. Il rilevamento automatico della voce (server_vad) non è supportato.
Richiesta testuale
id dell’elemento è facoltativo. Il ruolo può essere user o system.
Richiesta vocale
commit il server invia input_audio_buffer.committed e conversation.item.added. Quando la voce è riconosciuta arrivano conversation.item.input_audio_transcription.completed con il testo e conversation.item.done. Se il riconoscimento fallisce arriva conversation.item.input_audio_transcription.failed. Puoi inviare response.create subito dopo commit: la risposta parte al termine del riconoscimento.
input_audio_buffer.clear svuota il buffer. La voce si può inviare anche come un unico elemento conversation.item.create con una parte input_audio.
Risposta
Il server inviaresponse.created, poi response.output_audio_transcript.delta (testo) e response.output_audio.delta (PCM in base64) e infine response.done con il consumo in usage.
- Il riconoscimento vocale costa quanto il riconoscimento vocale da file.
event_idè facoltativo (fino a 128 caratteri). Se inviato, un evento ripetuto con lo stessoevent_idviene ignorato.- Una risposta alla volta. Il testo va da 1 a 12.000 caratteri, la voce da 100 ms a 120 secondi.
- Dopo 100 scambi o 4096 eventi, apri una nuova connessione.