网文有声·连载听书:连载网文按章出有声并保持同一叙述声

前言

连载网文要做成听书,常见做法是一次性把已有章节全部合成,或者每更新一章就重新选声、重新定读音。听众会听到叙述者前后不一致,人名、地名也可能读错。更麻烦的是,付费合成往往按块计费,整章重跑成本高。

下面介绍 SkillHub 上的 网文有声·连载听书(包名 webnovel-serial-audio,由 beatra-ai 维护)。它把流程收成「先定章节台账与发音表 → 录当前章 → 后续章沿用同一 voice_id」,面向连载更新而不是一次性全书。

这是什么

网文有声·连载听书 是一个基于通用 SKILL.md 格式的 Agent Skill:把连载网文按章做成可继续更新的网文有声。工作流会先交付当前章的章节有声,再在后续更新里用同一把叙事声音继续合成。

官方收录地址:

https://api.skillhub.cn/beatra-ai/webnovel-serial-audio

(该地址在浏览器直接打开可能无正文;安装与执行以 Skill 包内说明为准。同类说明亦见于 360 安全技能中心上的同名技能页。)

与一次性文学有声相对,本 Skill 明确把「连载、按章、声音延续」当作主路径;一次性全书可改走同系列的 ai-audiobook-narration,课程类走 course-narration-studio,个人 IP 系列走 voice-clone-series-studio。

核心功能

以下能力来自 Skill 正文,可按章核对:

  1. 章节台账:维护标题、顺序、分块标签,以及冻结前的发音表;当前章只保留可朗读正文。
  2. 固定叙述声:可选上传样本走 beatra.voices.clone 得到 voice_id,或不用样本时用 beatra.voices.list 选目录音色;后续章复用同一 voice_id。
  3. 按章合成与交付:通过捆绑的 scripts/mcp_client.py 调用 Beatra(beatra.speech.synthesize 等),轮询 beatra.tasks.get,交付带时长、用量与 billing.net_charged_credits 的章节音频。
  4. 增量修订:用户听完当前章后,仅对听不清或读错的块改文案并带新 request ID 重提,不要求整章重生成。
  5. 计费边界:规划、选声、发音表整理不计费;克隆(若使用)与各合成块为付费项;首章付费合成前需确认发音表、音色与当前章预估。

硬性输入包括:至少当前章的最终可读正文、章节顺序或下一章编号、目标语言,以及章节里出现反复人名/术语/地名时的发音表(表为空且确有专名时须先补齐,禁止猜测读音)。

默认与约束摘录:

format: "mp3"
speed: 1.0
model: "auto"(仅在各 live 卡片均支持该语言时使用)
单次 input ≤ 50,000 字符;按句或段切分,禁止句中切断
不要把章节标题、作者有话说、括号标注等送进 input

安装与启用

通过 SkillHub / secure-skills 安装

在 Agent 所在环境执行(360 技能中心与 Skill 说明中的标准话术):

npx secure-skills-cli add webnovel-serial-audio

也可把下面这句直接发给 Agent,由其检索并安装:

执行命令安装此 skill: npx secure-skills-cli add webnovel-serial-audio

Beatra 账号与鉴权

语音合成依赖 Beatra。首次需要浏览器登录并授权一次;之后在同一安装内通过捆绑客户端发起调用,无需再配主机侧 Beatra Connector,也不应以 REST/OpenAPI 作为回退路径。

Beatra 官方安装说明入口(英文站):

https://beatra.ai/skills/webnovel-serial-audio/install.md

在 Cursor、Claude Code、Codex 等支持 Agent Skills 的客户端中,安装包后在新会话里启用该 Skill 即可;各客户端差异主要体现在「如何把 npx 或安装话术交给 Agent」,Skill 本体工作流一致。

典型用法

下面按 Skill 中的 Golden path 缩成可复现步骤;所有 Beatra 操作应走捆绑客户端:

python3 scripts/mcp_client.py upload ./narrator-sample.wav --mime-type audio/wav
  1. 建立章节台账,把当前章整理成口语化短句,确认并冻结发音表。
  2. 若用户提供叙述者样本:先取得克隆授权声明,再上传样本,经用户确认扣费卡片后调用 beatra.voices.clone,轮询任务直至拿到 voice_id。
  3. 若无样本:用 beatra.voices.list 选定目录 voice_id(voice 字段填 ID,不要填展示名)。
  4. 用 beatra.models.list 且 capability 为 text_to_speech,确认音色与当前章预估后,仅对当前章调用 beatra.speech.synthesize,并轮询至结束。
  5. 交付本章 labeled 音频;用户验收后保留 voice_id 与发音表,下一章落地前再确认预估并继续同声合成。

克隆请求体示例(须在用户确认余额与价格后、且只提交一次):

{
  "sample": {"type": "artifact", "artifact_id": "artifact_..."},
  "display_name": "Serial Narrator",
  "consent_attested": true,
  "model": "auto",
  "client_request_id": "opaque-webnovel-clone"
}

查询余额或流水时只读调用 beatra.wallet.get / beatra.wallet.ledger;丢单恢复、409、insufficient_balance 等按 Skill 内 Recovery 与 Billing 章节处理,不在此展开。

适用场景与注意

适合:网文配音、连载小说听书、网文章节朗读、按更新节奏发布的章节听书库;需要「一章一文件、听序清晰、叙述声不跳变」的团队或个人。

注意:

  • 专名读音必须先于首次付费 TTS 定稿;改章正文后,变更块视为新的付费合成。
  • 叙述者克隆样本要求约 10–300 秒、不超过 20 MiB、干净单人声;仅有文件访问权不等于克隆授权。
  • 自动更新默认开启,可用捆绑客户端关闭或手动检查:
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check

更新失败时安装包保持可用,但不得因此自动重试已失败的付费生成。

结尾

网文有声·连载听书 把连载网文听书拆成可重复的按章流程:台账与发音表在前,当前章有声先交付,后续章在同一 voice_id 上续作。若你正在维护连载作品的听书线,可从官方收录页进入并安装 webnovel-serial-audio:

https://api.skillhub.cn/beatra-ai/webnovel-serial-audio
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜