in websocket-server/src/sessionManager.ts [118:152]
function tryConnectModel() {
if (!session.twilioConn || !session.streamSid || !session.openAIApiKey)
return;
if (isOpen(session.modelConn)) return;
session.modelConn = new WebSocket(
"wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17",
{
headers: {
Authorization: `Bearer ${session.openAIApiKey}`,
"OpenAI-Beta": "realtime=v1",
},
}
);
session.modelConn.on("open", () => {
const config = session.saved_config || {};
jsonSend(session.modelConn, {
type: "session.update",
session: {
modalities: ["text", "audio"],
turn_detection: { type: "server_vad" },
voice: "ash",
input_audio_transcription: { model: "whisper-1" },
input_audio_format: "g711_ulaw",
output_audio_format: "g711_ulaw",
...config,
},
});
});
session.modelConn.on("message", handleModelMessage);
session.modelConn.on("error", closeModel);
session.modelConn.on("close", closeModel);
}