Voice.ai: Creator Voiceover Forge

一键将脚本生成带章节、字幕的发布级语音视频,支持多平台导出。

已扫描
适合谁
视频内容创作者、教育课程制作者
不适合谁
无网络环境用户、无需语音合成的普通文档编辑者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @gizmogremlin/voiceai-voiceover-creator

Skill 说明

命令、参数、文件名以原文为准

Voice.ai 创作者语音合成流水线

本技能遵循 [Agent Skills 规范](https://agentskills.io/specification)。

将任意脚本快速转化为可发布级别的语音旁白——包含编号分段、拼接后的主音频、YouTube 章节标记、SRT 字幕,以及美观的审核页面。可选地,将 AI 语音替换现有视频的音频轨道。

专为希望获得专业录音棚级语音效果但无需实际录音棚的创作者打造。由 [Voice.ai](https://voice.ai) 提供技术支持。


适用场景

场景为何适合
YouTube 长视频完整旁白,带章节标记与字幕
YouTube Shorts快速开场钩子,使用 shortform 模板
播客统一主播音色,支持开场/结尾模板
课程内容教育类视频的专业旁白
快速迭代智能缓存机制 —— 修改一段,仅该片段重新生成
视频音频替换将 AI 语音旁白嵌入屏幕录制或 B-roll 视频

一键式工作流

拥有脚本和视频?只需一条命令,即可完成 AI 语音旁白生成:

node voiceai-vo.cjs build \
  --input my-script.md \
  --voice oliver \
  --title "My Video" \
  --video ./my-recording.mp4 \
  --mux

此命令将完成语音生成、主音频拼接,并将新语音嵌入视频——全部在一次操作中完成。输出结果包括:

  • out/my-video/muxed.mp4 —— 嵌入新语音的视频
  • out/my-video/master.wav —— 独立的主音频文件
  • out/my-video/review.html —— 可逐段收听并审核的页面
  • out/my-video/chapters.txt —— 适用于 YouTube 的章节时间戳
  • out/my-video/captions.srt —— SRT 字幕文件

若音频长度短于视频,使用 --sync pad 进行填充;若需裁剪音频以匹配视频时长,使用 --sync trim


系统要求

  • Node.js 20+ —— 运行环境(无需 npm 安装,CLI 为单个打包文件)
  • VOICE_AI_API_KEY —— 作为环境变量或在技能根目录下的 .env 文件中设置。可在 [voice.ai/dashboard](https://voice.ai/dashboard) 获取密钥
  • ffmpeg(可选)—— 用于主音频拼接、MP3 编码、响度归一化及视频混流。即使未安装,仍可生成各分段音频、审核页面、章节文件和字幕

配置方式

该技能按以下顺序读取 VOICE_AI_API_KEY

  1. 环境变量 VOICE_AI_API_KEY
  2. 环境变量 VOICEAI_API_KEY(备用名称)
  3. 技能根目录下的 .env 文件
echo 'VOICE_AI_API_KEY=your-key-here' > .env

在任意命令中添加 --mock 可在无 API 密钥的情况下运行完整流程(生成占位音频)。


命令列表

build —— 从脚本生成语音旁白

node voiceai-vo.cjs build \
  --input <script.md 或 script.txt> \
  --voice <voice-alias-or-uuid> \
  --title "My Project" \
  [--template youtube|podcast|shortform] \
  [--language en] \
  [--video input.mp4 --mux --sync shortest] \
  [--force] [--mock]

执行步骤:

  1. 读取脚本,按 ## 标题(.md 文件)或句子边界(.txt 文件)拆分为多个段落
  2. 可选地在开头或结尾插入模板化的开场/结束段落
  3. 使用 Voice.ai TTS 接口逐段生成编号的 WAV 音频文件
  4. 若存在 ffmpeg,拼接生成主音频文件
  5. 生成章节标记、字幕、审核页面及元数据文件
  6. 可选地将语音旁白嵌入已有视频

完整参数说明:

参数说明
-i, --input <path>脚本文件(.txt.md)—— 必填
-v, --voice <id>语音别名或 UUID —— 必填
-t, --title <title>项目标题(默认为文件名)
--template <name>模板类型:youtubepodcastshortform
--mode <mode>分段模式:headings(按标题)或 auto(自动切分,默认 .md 文件使用 headings
--max-chars <n>自动切分时每段最大字符数(默认:1500)
--language <code>语言代码(默认:en)
--video <path>用于混流的输入视频文件
--mux启用视频混流(需配合 --video
--sync <policy>同步策略:shortestpadtrim(默认:shortest
--force强制重新渲染所有段落(忽略缓存)
--mock模拟模式 —— 不调用 API,生成占位音频
-o, --out <dir>自定义输出目录

replace-audio —— 替换视频的音频轨道

node voiceai-vo.cjs replace-audio \
  --video ./input.mp4 \
  --audio ./out/my-project/master.wav \
  [--out ./out/my-project/muxed.mp4] \
  [--sync shortest|pad|trim]

需要 ffmpeg 支持。若未安装,将生成辅助的 shell / PowerShell 脚本。

同步策略行为
shortest(默认)输出时长以较短的音轨为准
pad用静音填充音频,使其与视频时长相匹配
trim裁剪音频,使其与视频时长相匹配

视频流直接复制,不重新编码(-c:v copy)。音频编码为 AAC。输出文件旁会保存一份混流报告。

隐私说明: 视频处理完全本地进行。仅脚本文本会被发送至 Voice.ai 用于语音合成。

voices —— 查看可用语音列表

node voiceai-vo.cjs voices [--limit 20] [--query "deep"] [--mock]

可用语音

可通过短别名或完整 UUID 在 --voice 中使用:

别名语音名称性别风格
ellieEllieF年轻活力,网络博主风格
oliverOliverM友善英伦口音
lilithLilithF轻柔女性化
smoothSmooth Calm VoiceM深沉平缓叙述者
corpseCorpse HusbandM深沉独特
skadiSkadiF动漫角色
zhongliZhongliM沉稳权威
floraFloraF愉悦高音
chiefMaster ChiefM英雄气概,指令感强

markdown

Voice.ai:创作者语音合成工具

版本:0.1.3

分块:2/2

voices 命令还会返回 API 上可用的其他语音。语音列表缓存时间为 10 分钟。


构建输出

构建完成后,输出目录包含以下内容:

out/<标题别名>/
  segments/           # 编号的 WAV 文件(001-intro.wav, 002-section.wav, …)
  master.wav          # 合成音频(需要 ffmpeg)
  master.mp3          # MP3 编码(需要 ffmpeg)
  manifest.json       # 构建元数据:语音、模板、分段列表、哈希值
  timeline.json       # 分段时长和起始时间
  review.html         # 带音频播放器的交互式预览页面
  chapters.txt        # 适用于 YouTube 的章节时间戳
  captions.srt        # 使用分段边界生成的 SRT 字幕
  description.txt     # 包含章节和 Voice.ai 声明的 YouTube 描述

review.html

一个独立的 HTML 页面,包含:

  • 主音频播放器(如果已合成)
  • 带标题和时长的各分段播放器
  • 每个分段的可折叠脚本文本
  • 重新生成命令提示

模板

模板会自动在脚本内容前后插入开头和结尾分段:

模板开头注入结尾注入
youtubetemplates/youtube_intro.txttemplates/youtube_outro.txt
podcasttemplates/podcast_intro.txt
shortformtemplates/shortform_hook.txt

可通过编辑 templates/ 目录中的文件自定义开头和结尾文本。


缓存机制

分段根据以下内容的哈希值进行缓存:文本内容 + 语音 ID + 语言

  • 未更改的分段在重建时将被跳过——支持快速迭代
  • 修改过的分段将被自动重新生成
  • 使用 --force 可强制重新生成所有内容
  • 缓存清单存储于 segments/.cache.json

多语言支持

Voice.ai 支持 11 种语言。使用 --language <code> 切换语言:

en, es, fr, de, it, pt, pl, ru, nl, sv, ca

非英语语言会自动选择多语言 TTS 模型。


常见问题排查

问题解决方案
ffmpeg 缺失管道仍可运行 —— 你将获得分段文件、预览页、章节和字幕。安装 ffmpeg 可实现主音频合成与视频合并。
请求频率限制(429)分段按顺序生成,通常低于多数限制。等待后重试即可。
信用额度不足(402)前往 [voice.ai/dashboard](https://voice.ai/dashboard) 充值。缓存分段在重试时不重复消耗信用。
长脚本处理缓存机制使重建速度很快。单个分段文本超过 490 字符时,系统会自动拆分至多个 API 调用。
Windows 路径含空格将路径用引号包裹:--input "C:\My Scripts\script.md"

更多详情请参阅 [references/TROUBLESHOOTING.md](references/TROUBLESHOOTING.md)。


参考资料

  • [Agent Skills 规范](https://agentskills.io/specification)
  • [Voice.ai](https://voice.ai)
  • [references/VOICEAI_API.md](references/VOICEAI_API.md) —— API 端点、音频格式、模型信息
  • [references/TROUBLESHOOTING.md](references/TROUBLESHOOTING.md) —— 常见问题及解决方案
G
@gizmogremlin

已收录 1 个 Skill

相关推荐