開始使用

Quickstart

Step 1:取得 API Key

  1. 登入 Vurbo.ai Dashboard:https://vas-poc.vurbo.ai/dashboard
  2. 前往「API Keys」頁面
  3. 點擊「建立新 Key」
  4. 複製你的 API Key(格式:vas_ + 32 位字串)

Step 2:第一個 REST API 呼叫

使用 API Key 呼叫 Tasks API 確認連線:

curl -X GET "https://vas-poc.vurbo.ai/api/v1/tasks" \
  -H "X-API-Key: vas_YOUR_API_KEY_HERE"

成功回應:

{
  "tasks": []
}

Step 3:建立 WebSocket 連線

WebSocket 使用 Ticket 機制認證,需要先用 API Key 換取 Ticket。

3.1 取得 Ticket

curl -X POST "https://vas-poc.vurbo.ai/api/v1/auth/ticket" \
  -H "X-API-Key: vas_YOUR_API_KEY_HERE"

回應:

{
  "ticket": "aBcDeFgHiJkLmNoPqRsTuVwXyZ012345",
  "expires_in": 60
}

3.2 使用 Ticket 連線

// 取得 Ticket 後 60 秒內使用
const ws = new WebSocket('wss://vas-poc.vurbo.ai/ws', [`ticket.${ticket}`]);

ws.onopen = () => {
  console.log('WebSocket 連線成功');
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  console.log('收到訊息:', msg);
};

Step 4:開始即時語音翻譯

4.1 發送 start 指令

ws.send(JSON.stringify({
  type: 'voice-translation',
  data: {
    action: 'start',
    transcription_languages: ['zh-TW'],
    translation_languages: ['en-US'],
    type: 'transcribe',
    audio_format: 'pcm',
    summary_template: 'meeting'
  }
}));

成功回應:

{
  "type": "voice-translation",
  "data": {
    "action": "session_started",
    "session_id": "550e8400-e29b-41d4-a716-446655440000",
    "recording_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "recording_type": "transcribe",
    "recognition_mode": "single",
    "message": "語音辨識已開始"
  }
}

4.2 傳送音訊

使用瀏覽器 MediaRecorder 或 AudioWorklet 取得音訊,經 Base64 編碼後傳送:

// 假設已取得 PCM 音訊的 ArrayBuffer
function sendAudio(pcmBuffer) {
  const base64 = btoa(String.fromCharCode(...new Uint8Array(pcmBuffer)));
  ws.send(JSON.stringify({
    type: 'voice-translation',
    data: {
      action: 'audio',
      payload: base64
    }
  }));
}

4.3 接收辨識與翻譯結果

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  if (msg.type === 'voice-translation' && msg.data.action === 'result') {
    // 原文
    if (msg.data.origin) {
      console.log(`[原文] ${msg.data.origin.text}`);
    }

    // 翻譯
    if (msg.data.translations) {
      for (const [lang, translation] of Object.entries(msg.data.translations)) {
        console.log(`[${lang}] ${translation.text}`);
      }
    }
  }
};

Step 5:停止翻譯

ws.send(JSON.stringify({
  type: 'voice-translation',
  data: {
    action: 'stop'
  }
}));

停止後會收到 task_complete 事件,包含 task_id,可用於後續查詢。


完整流程圖

取得 API Key
    │
    ▼
POST /api/v1/auth/ticket(取得 Ticket)
    │
    ▼
WebSocket 連線(使用 Ticket)
    │
    ▼
send: start(開始語音翻譯)
    │
    ▼
send: audio(持續傳送音訊)──→ 接收 result(辨識/翻譯結果)
    │
    ▼
send: stop(停止)
    │
    ▼
接收 task_complete(取得 task_id)
    │
    ▼
GET /api/v1/tasks(查看任務列表)

下一步


版本:V1.5.7 最後更新:2026-05-20

Copyright © 2026