Voice Assistant Teaching TTS

静态 API 文档

面向接入方的站内参考页,覆盖认证、快速开始、接口说明、错误响应与 OpenAPI 规范入口。

定位

Voice Assistant 现在提供教学 persona、prompt 编排和前端体验;浏览器通过同源 /api/tts/jobs 创建正式 TTS job。

快速开始

  1. 启动本地页面:python -m voice_assistant serve --host "127.0.0.1" --port 8000
  2. 选择教学 persona、语速和语气。
  3. 前端创建 POST /api/tts/jobs 并轮询 GET /api/tts/jobs/{id}
  4. 成功后播放 capability 返回的 audioUrl
最小 curl 请求
curl -X POST "http://127.0.0.1:8000/api/tts/jobs" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Please read this clearly.",
    "voice": "Dean",
    "stylePrompt": "Clear, focused, teacher-like reading voice...",
    "formattedText": "Please read this clearly.",
    "audioFormat": "wav",
    "metadata": {
      "source": "voice-assistant",
      "personaId": "persona_dictation_coach",
      "speed": "standard",
      "toneMode": "coach"
    }
  }'

本地接口

GET/v1/health

返回本地页面服务状态和当前 TTS capability base URL。

GET/v1/personas

返回当前可用 persona、语速选项和语气选项。该接口用于前端 bootstrap 和调试,不负责合成。

POST/v1/tts/normalize

将教学输入编排为 TTS consumer 可用的 normalized payload。

请求字段
  • text: 待合成文本,1-5000 字符
  • personaId: persona 标识
  • speed: gentle / standard / bright
  • toneMode: companion / coach / encourage / lively
  • audioFormat: wav / mp3
成功响应示例
{
  "text": "学习不能只停留在记住知识。",
  "voice": "冰糖",
  "stylePrompt": "角色:你是“陈老师”...",
  "formattedText": "学习不能只停留在记住知识。",
  "audioFormat": "wav",
  "metadata": {
    "source": "voice-assistant",
    "personaId": "persona_morning_recital",
    "speed": "standard",
    "toneMode": "coach",
    "paceProfile": "medium"
  }
}

前端接入示例

Node.js / Browser
const job = await fetch("/api/tts/jobs", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(normalizedPayload)
}).then((response) => response.json());

const detail = await fetch(`/api/tts/jobs/${job.id}`).then((response) => response.json());

if (detail.status === "success") {
  audio.src = detail.audioUrl;
}

规范文件