跳到主要内容

使用语音模式

信息

SkillFlaw Desktop 不支持语音模式。 若要使用语音模式,请 从源码安装 SkillFlaw

你可以使用 SkillFlaw 的语音模式,通过麦克风与扬声器,以语音方式与流程交互。

前置条件

语音模式需要满足以下条件:

  • 一个包含 Chat InputLanguage ModelChat Output 组件的流程。

    如果你的流程中包含 Agent 组件,请确保流程里的工具名称与描述准确,以便代理正确选择要调用的工具。

    另外请注意:语音模式会覆盖 Agent 组件中 Agent Instructions 字段里的手工输入指令。

  • 一个 OpenAI 账户与 OpenAI API Key,因为 SkillFlaw 会使用 OpenAI API 处理语音输入并生成回复。

  • 可选:一个 ElevenLabs API Key,用于为 LLM 回复提供更多语音选项。

  • 麦克风与扬声器。

    为了获得更好的识别效果,建议使用高质量麦克风,并尽量降低环境噪音。

在 Playground 中测试语音模式

Playground 中,点击 Microphone,即可启用语音模式,通过麦克风与扬声器和流程进行语音交互。

以下步骤以 Simple Agent 模板为例,演示如何启用语音模式:

  1. 基于 Simple Agent 模板创建一个流程。

  2. Agent 组件中填入你的 OpenAI API Key 凭据。

  3. 点击 Playground

  4. 点击 Microphone 图标,打开 Voice mode 对话框。

  5. 输入你的 OpenAI API Key,然后点击 Save。SkillFlaw 会把这个 Key 保存为一个 全局变量

  6. 如果浏览器提示授权麦克风访问,你必须允许访问,否则无法进行语音输入。

  7. Audio Input 中选择语音模式使用的输入设备。

  8. 可选:填入 ElevenLabs API Key,以启用更多回复语音。SkillFlaw 同样会把它保存为全局变量。

  9. Preferred Language 中选择你希望与 LLM 对话时使用的语言。 这个选项会同时影响预期输入语言与回复语言。

  10. 对着麦克风讲话,开始聊天。

如果配置正确,波形会显示你的输入,随后代理执行逻辑与回复内容会以语音和 Playground 文本形式一并呈现。

使用 websocket 端点开发应用

SkillFlaw 为流程暴露了两个兼容 OpenAI Realtime API 的 websocket 端点。 你可以像对接 OpenAI Realtime API websocket 一样,对接这些端点来构建应用。

SkillFlaw API 的 websocket 端点需要使用 OpenAI API Key 做鉴权,并支持通过 ElevenLabs API Key 启用可选 ElevenLabs 集成。

此外,这两个端点都要求你在路径中提供 flow ID。

语音到语音的音频流

/ws/flow_as_tool/$FLOW_ID 会建立到 OpenAI Realtime voice 的连接,然后根据 OpenAI Realtime model 把指定流程作为工具调用。

这种方式适合低延迟应用,但确定性较弱,因为何时调用你的流程,是由 OpenAI 的语音到语音模型决定的。

语音转文本的音频转录

/ws/flow_tts/$FLOW_ID 会先使用 OpenAI Realtime voice transcription 把音频转成文本,然后针对每段转录结果直接调用指定流程。

这种方式更可控,但延迟会更高。

这也是 SkillFlaw Playground 当前使用的模式。

websocket 端点中的 session ID

这两个端点都支持可选的 /$SESSION_ID 路径参数,用于为对话指定唯一 ID。 如果未提供,SkillFlaw 会把 flow ID 作为默认 session ID

但请注意:语音模式只会在当前会话实例内保留上下文。 当你关闭 Playground 或结束聊天后,语音聊天历史会被丢弃,不会自动延续到未来会话中。

另请参阅