import WebSocket from 'ws';
const model = process.env.TOKENLAB_REALTIME_MODEL;
const apiKey = process.env.TOKENLAB_API_KEY;
if (!model || !apiKey) {
throw new Error('Set TOKENLAB_REALTIME_MODEL and TOKENLAB_API_KEY');
}
const url = new URL('wss://api.tokenlab.sh/v1/realtime');
url.searchParams.set('model', model);
const socket = new WebSocket(url, {
headers: { Authorization: `Bearer ${apiKey}` }
});
socket.on('open', () => {
console.log('Realtime connection open');
});
socket.on('message', (data) => {
console.log('realtime event', data.toString());
});
socket.on('error', (error) => console.error(error.message));
socket.on('close', (code) => console.log('Realtime connection closed', code));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Âm thanh & thời gian thực
Realtime WebSocket
Kết nối phiên giọng nói và đa phương thức thời gian thực qua WebSocket
GET
/
v1
/
realtime
import WebSocket from 'ws';
const model = process.env.TOKENLAB_REALTIME_MODEL;
const apiKey = process.env.TOKENLAB_API_KEY;
if (!model || !apiKey) {
throw new Error('Set TOKENLAB_REALTIME_MODEL and TOKENLAB_API_KEY');
}
const url = new URL('wss://api.tokenlab.sh/v1/realtime');
url.searchParams.set('model', model);
const socket = new WebSocket(url, {
headers: { Authorization: `Bearer ${apiKey}` }
});
socket.on('open', () => {
console.log('Realtime connection open');
});
socket.on('message', (data) => {
console.log('realtime event', data.toString());
});
socket.on('error', (error) => console.error(error.message));
socket.on('close', (code) => console.log('Realtime connection closed', code));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Tổng quan
Dùng endpoint này cho các phiên thời gian thực như nhận dạng giọng nói streaming, tổng hợp giọng nói, dịch giọng nói hoặc các mô hình đa phương thức thời gian thực. Yêu cầuGET thông thường trả về metadata của endpoint, còn yêu cầu nâng cấp WebSocket sẽ mở một phiên thời gian thực cho mô hình đã chọn.
Phạm vi hỗ trợ
TokenLab cung cấp endpoint WebSocket thời gian thực tạiGET /v1/realtime để kiểm tra metadata và upgrade WebSocket. Hãy xem đây là một WebSocket subset: endpoint chỉ chuyển tiếp sự kiện của các mô hình realtime được hỗ trợ và không hỗ trợ các bề mặt REST helper của OpenAI Realtime như tạo phiên, client_secrets, API điều khiển cuộc gọi Calls hoặc legacy beta session APIs.
Với ứng dụng trình duyệt hoặc di động, hãy giữ API key dài hạn trên server của bạn. Endpoint này không phát hành Realtime client secret ngắn hạn.
Chọn mô hình realtime hiện tại từ
/v1/models, kiểm tra /v1/models/{model} rồi đặt TOKENLAB_REALTIME_MODEL. Sự kiện và cấu hình phiên tùy thuộc mô hình. Ví dụ JSON dưới đây là phản hồi HTTP GET thông thường, không phải sự kiện phiên WebSocket.Kết nối
string
bắt buộc
ID mô hình realtime. Chọn mô hình có chi tiết model liệt kê hỗ trợ realtime.
string
bắt buộc
API key Bearer. Client WebSocket nên gửi
Authorization: Bearer sk-your-api-key trong yêu cầu upgrade.import WebSocket from 'ws';
const model = process.env.TOKENLAB_REALTIME_MODEL;
const apiKey = process.env.TOKENLAB_API_KEY;
if (!model || !apiKey) {
throw new Error('Set TOKENLAB_REALTIME_MODEL and TOKENLAB_API_KEY');
}
const url = new URL('wss://api.tokenlab.sh/v1/realtime');
url.searchParams.set('model', model);
const socket = new WebSocket(url, {
headers: { Authorization: `Bearer ${apiKey}` }
});
socket.on('open', () => {
console.log('Realtime connection open');
});
socket.on('message', (data) => {
console.log('realtime event', data.toString());
});
socket.on('error', (error) => console.error(error.message));
socket.on('close', (code) => console.log('Realtime connection closed', code));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
Tin nhắn
TokenLab chuyển tiếp các tin nhắn WebSocket giữa client của bạn và mô hình thời gian thực đã chọn. Hãy dùng định dạng sự kiện được ghi trong tài liệu của mô hình đó và đưamodel vào query string thay vì vào từng sự kiện.
Tính phí và đóng kết nối
Phiên được tính phí từ số dư khóa API của bạn: TokenLab giữ trước một khoản ước tính khi bắt đầu, sau đó quyết toán theo mức sử dụng thực tế khi kết thúc và hoàn lại phần chênh lệch. Đóng socket client khi phiên hoàn tất. Nếu dịch vụ đóng phiên trước, TokenLab sẽ gửi một sự kiện/mã đóng an toàn đến client của bạn khi có thể.Ví dụ phản hồi
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Trường quan trọng
string
Loại đối tượng của phản hồi HTTP GET thông thường. Giá trị luôn là
realtime.endpoint.string
Đường dẫn tương đối để kết nối WebSocket do HTTP GET thông thường trả về:
/v1/realtime?model={model}. Thay {model} bằng ID của mô hình đã chọn.string
Mã định danh giao thức do HTTP GET thông thường trả về. Giá trị luôn là
tokenlab_realtime_proxy.string
Loại event hoặc message do API trả về.
string
Mã định danh mờ nhận được qua kết nối realtime. Dùng trong log hỗ trợ để gỡ lỗi; đây không phải REST session URL.
Ủy quyền
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
Tham số truy vấn
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
Phản hồi
WebSocket connection established