使用语音模式
SkillFlaw Desktop 不支持语音模式。 若要使用语音模式,请 从源码安装 SkillFlaw。
你可以使用 SkillFlaw 的语音模式,通过麦克风与扬声器,以语音方式与流程交互。
前置条件
语音模式需要满足以下条件:
-
一个包含 Chat Input、Language Model 和 Chat Output 组件的流程。
如果你的流程中包含 Agent 组件,请确保流程里的工具名称与描述准确,以便代理正确选择要调用的工具。
另外请注意:语音模式会覆盖 Agent 组件中 Agent Instructions 字段里的手工输入指令。
-
一个 OpenAI 账户与 OpenAI API Key,因为 SkillFlaw 会使用 OpenAI API 处理语音输入并生成回复。
-
可选:一个 ElevenLabs API Key,用于为 LLM 回复提供更多语音选项。
-
麦克风与扬声器。
为了获得更好的识别效果,建议使用高质量麦克风,并尽量降低环境噪音。
在 Playground 中测试语音模式
在 Playground 中,点击 Microphone,即可启用语音模式,通过麦克风与扬声器和流程进行语音交互。
以下步骤以 Simple Agent 模板为例,演示如何启用语音模式:
-
基于 Simple Agent 模板创建一个流程。
-
在 Agent 组件中填入你的 OpenAI API Key 凭据。
-
点击 Playground。
-
点击 Microphone 图标,打开 Voice mode 对话框。
-
输入你的 OpenAI API Key,然后点击 Save。SkillFlaw 会把这个 Key 保存为一个 全局变量。
-
如果 浏览器提示授权麦克风访问,你必须允许访问,否则无法进行语音输入。
-
在 Audio Input 中选择语音模式使用的输入设备。
-
可选:填入 ElevenLabs API Key,以启用更多回复语音。SkillFlaw 同样会把它保存为全局变量。
-
在 Preferred Language 中选择你希望与 LLM 对话时使用的语言。 这个选项会同时影响预期输入语言与回复语言。
-
对着麦克风讲话,开始聊天。
如果配置正确,波形会显示你的输入,随后代理执行逻辑与回复内容会以语音和 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 或结束聊天后,语音聊天历史会被丢弃,不会自动延续到未来会话中 。