跳转至

工作流与通话

Workflows 侧边栏打开一个本地画布,其中包含可执行的音频与文本配方以及通话草稿。各步骤复用 VoiceStudio 的语音、转写、翻译和声音转换 API 以及已保存的声音。

运行语音工作流

  1. 在工作流列表下选择 New from template,然后选择 Batch narration 或其 Normalize audio 变体。
  2. 选择 Start。粘贴脚本,脚本之间用包含 --- 的行分隔,或导入 TXT、Markdown、DOC/DOCX、PDF 或 EPUB 文件。每个文件成为一个片段。每次运行最多接受 50 个非空脚本,每个脚本最多 20,000 个字符。
  3. 选择 Speak。选择已保存的声音、语言和速度。如果所选引擎未就绪,请在 Settings 中显式安装。
  4. 选择 Run workflow,然后从输出面板运行。仍缺少设置的步骤会显示 Needs setup,在设置完成前 Run 保持不可用;Run 旁的提示会打开第一个待设置项。预览并导出生成的 WAV 片段,这些片段带有编号且符合文件系统安全命名。

语音通过常规生成端点处理,包括母带处理、归一化和合成标记。可选的 Normalize audio 步骤应用可调节的峰值归一化(−24 至 −1 dBFS,默认 −2),带有静音保护,并重新标记合成音频;它不会下载清理模型,也不会静默替换未处理的音频。这是峰值归一化,而不是 LUFS 响度目标。

音频与文本配方

  • Audio to transcript:导入音频 → Transcribe → 导出 TXT。
  • Change the voice:导入音频 → 使用已保存的声音进行 Convert → 导出 WAV。
  • Translate and narrate:导入音频 → Transcribe → Translate → Speak → 导出 WAV。

音频输入最多接受 50 个文件,每个文件不超过 64 MiB。导入的文件保留在本地浏览器存储中;移除最后一个工作流引用会删除已存储的源文件,并使对应的缓存运行失效。待处理的删除会随草稿保存,如果存储暂时失败,会在重新打开后重试;原始文件永远不会被修改。转写会自动检测所讲语言,并使用已安装的 ASR 引擎,无需下载词对齐模型;仅转写的工作流不需要 TTS。

翻译使用显式选择的本地 Argos 或 NLLB 引擎。在运行前,请在 Settings 中选择源语言和目标语言,并安装模型或语言对。工作流绝不会自行安装模型或切换到云翻译器。选择 Speak 或 Convert 来选择输出声音。

各步骤具有类型化输入:Speak 接收文本;Transcribe 接收音频;Translate 接收文本;Convert 接收音频。Normalize audio 仅接受生成或转换后的语音,以保持合成音频标记契约。将这些步骤连接成一条以 End 结束的路径。循环、分支、未连接的步骤、不兼容的类型和缺失的声音会在运行前被拒绝。Agent、Condition 和 Call 仍然明确标记为仅设计步骤。

执行是串行的,带有每个片段和每个步骤的状态。每个完成的文本或音频步骤都会在本地 IndexedDB 中设置检查点。取消或离开页面会停止调度工作;Retry 会复用已保存的输出,并继续被中断或失败的步骤。当客户端断开连接后,正在进行中的后端工作可能仍会完成。在检查点之前被中断的流程可能需要重新生成该步骤。重新打开时绝不会自动运行工作流。

每个工作流都会保留其最近一次运行的结果,包括可播放的音频或可读的文本,直到另一次运行将其替换或工作流被删除。请导出你想保留的文件。更改源文件、脚本、声音、语言、翻译提供商、速度、归一化目标、图形顺序或活动引擎/模型会开始一次全新运行;移动节点或重命名工作流不会使已完成的音频失效。输出面板会标识来自已更改设置的结果。关闭应用会停止执行;这不是后台调度程序。存储失败会停止运行,而不是声称可以恢复。

通话草稿

餐厅订位、预约改期和营业时间模板会创建 Start → Call → End 草稿。Prepare call 会在 Calls 表单中填入接收方和简要说明。就绪检查、声音所有权、披露和最终确认仍然适用;工作流运行器绝不会拨打电话。使用 Calls 查看通话历史或独立发起通话。

平移、缩放并使用小地图浏览画布。方向键移动选中的步骤。草稿保存在本地,可以复制或删除。键盘移动与拖拽一样会持久保留;重新打开时会保留所有已保存的工作流和步骤。

Calls 视图让 VoiceStudio 以你自己的声音替你给别人打电话,并处理一个简短任务:“预订周五晚上 8 点两个人的桌位”“把我的预约改到下周”“问问你们周日几点开门”。你可以实时观看通话,随时接管,并在通话结束时获得摘要。

通话通过你自己的 Twilio 号码进行。在你确认通话之前不会拨出任何号码,其他任何内容也不会离开你的机器。Twilio 设置见 integrations/twilio.md;API 介绍见 integrations/calls.md。

从侧边栏打开 Workflows(或按 Ctrl/⌘ K 并输入“Workflows”),然后选择 Calls,或直接在 Ctrl/⌘ K 中输入“Calls”前往该页面。

首次通话前

工作区会检查六项内容,并在全部通过前显示一个简短清单。每个项目都有一个 Fix 按钮,可打开相应页面:

检查项 含义 修复会打开
Twilio 账户已连接 已保存账户 SID 和认证令牌 Integrations → Twilio
Twilio 的公共链接 Twilio 可通过你的隧道访问 VoiceStudio Integrations → Twilio
用于呼出的电话号码 已设置 Twilio 号码 Integrations → Twilio
语言模型 已有模型可主持对话 Settings → Models → LLM
语音识别 已有语音转文本模型可用 Settings → Models → ASR
可以拨打电话的语音 你拥有一个允许呼叫的语音(见下文) 已保存的语音

修复了问题后,点击再次检查。如果页面显示呼叫需要最新的后端,说明你的后端版本早于该功能:更新 VoiceStudio(或在更新后重启后端),然后设置 Twilio。

哪些语音可以呼叫

呼叫会以你的声音说话,因此语音选择器只列出:

  • 一个你已验证归你本人所有的克隆语音(已保存的语音 → 编辑语音档案 → 语音所有权,然后录制同意声明),或
  • 一种设计语音,它不模仿任何人。

其他人的克隆语音永远不会出现在选择器中。使用选择器下方的验证语音或设计语音来添加一个。

拨打电话

  1. 电话号码:完整的国际号码,以 + 和国家代码开头(例如 +1 555 010 0199)。空格、短横线和括号都可以。该字段会显示你正在呼叫哪个国家(当国家代码只属于一个国家时;+1 和 +7 为多个国家共用),或显示号码有什么问题。
  2. 它应该做什么?:用通俗的话描述任务。包括姓名、时间,以及如果首选方案不可用时可以接受的内容。示例标签会填入一个起点。
  3. 语音:上述语音之一。
  4. 它首先要说的话:AI 披露声明,默认开启并从你的模板预填。可针对本次通话进行编辑,或仅在允许的地方关闭。
  5. 最大时长:通话时间用完时,智能体将挂断。
  6. 查看计划预览:你的任务以及智能体始终遵循的护栏。它不会分享支付信息、密码或身份证号码,并且在不确定时会询问你。
  7. 点击呼叫 +…并确认。只有在确认后,呼叫才会开始。

通话期间

  • 时间线显示 拨号中 → 响铃中 → 通话中 → 已结束,旁边显示已用时间和最大时长。
  • 智能体状态显示它当前是在聆听、思考还是说话。
  • 文字记录会实时填充;对方还在说话时,其话语就会显示出来。
  • 接管可阻止智能体自行应答。输入接下来要说的话,然后按 Enter;它会以所选语音说出来。
  • 挂断始终可用,并立即结束通话。

如果实时更新中断,工作区会自动重新连接并补齐遗漏的内容;呼叫本身会继续进行。

通话结束后

呼叫会显示一个结果(已预订、已完成、未完成、需要你处理或失败)、摘要和完整文字记录。复制摘要会将摘要复制到剪贴板。再次呼叫会用相同的任务和语音填充表单;只有当前会话中发起的呼叫才会填入号码,因为已保存的呼叫会保持号码隐藏。

最近呼叫会列出你的呼叫及其结果、时长和任务。选择一条即可打开。

来电

来电(工作区顶部)用于选择当有人拨打你的 Twilio 号码时会发生什么:

  • 问候语:播放你的问候语,然后挂断。
  • AI 智能体:按照你编写的简要说明,以你的声音与来电者交谈(例如“记下留言:姓名、号码和事由”)。

号码、凭据和问候语在集成 → Twilio中设置。

布局

工作区会适应窗口:在宽屏(1440 px 及以上)上,最近呼叫、实时呼叫和新建呼叫表单并排显示;在中屏上,呼叫和表单在最近呼叫旁边共享标签页;在窄窗口上,所有内容以带标签页的单列显示。每个窗格独立滚动。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio