本文へ移動
cccskills
無料GitHub で公開

wjs-voicedrop-reading-aloud

Use when the user wants text turned into an audiobook / read aloud — they give a passage, a file, a URL, or a VoiceDrop article and want an mp3 narration with expressive voices. Triggers — "做成有声书", "朗读出来", "读给我听", "念出来", "read aloud", "/wjs-voicedrop-reading-aloud".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md6.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

wjs-voicedrop-reading-aloud

文字 → 有声书 mp3。不是照字面念,而是先编排:不同性质的内容换不同声音,关键转折处加语音指令,然后用火山引擎豆包 seed-tts-2.0 合成。

合成工具:~/code/volcano-tts/tts.py(先 source ~/code/.env)。

铁律

  1. 绝不把带【】/[ ] 标注的文本直接喂裸 API —— 裸 API 会把标注原样念出来(实测实锤)。永远走 tts.py,它把标注切段转成 context_texts 语音指令。
  2. 只能用 2.0 音色(_uranus_bigtts 后缀) —— moon/mars/tob 音色在 seed-tts-2.0 资源下报错 resource ID is mismatched。
  3. 合成前把编排好的朗读脚本给用户看一眼(除非用户说直接出)——编排是再创作,声音分配和指令值得确认。headless/自动化场景跳过此步。

工作流

1. 取内容并认真通读

  • 纯文本/文件:直接读。
  • URL:WebFetch;SPA 页面(如 docs.volcengine.com)用 browse skill 渲染后取正文。
  • VoiceDrop 文章:voicedrop MCP 的 read_article。

通读时标记出:正文叙述 / 直接引用(引号、blockquote)/ 大白话吐槽与内心 OS / 数据、列表、表格 / 标题与小节。

2. 编排重写成朗读脚本

这是核心步骤,是重写不是转录:

  • 去掉一切视觉残留:markdown 符号、链接、图片说明、脚注编号。
  • 表格、列表、数据改写成口语句子(「三个原因:第一…」)。
  • 标题不逐字念,化进过渡句,或用停顿+换气带过。
  • 太书面的长句改口语,但保留作者的用词风格。
  • 按内容性质分配音色(见音色表):正文一个主声贯穿;引用换引用声;吐槽/大白话换插话声。声音切换是给听众的「格式信号」,等价于视觉上的引用块。
  • 不要频繁换声:一般 2~3 个声音封顶,切换只发生在内容性质真正变化处。

3. 加语音指令(克制)

在句前加 [心理活动、细腻表情、肢体动作等描述],如 [放慢,一字一顿,点出要害]。

  • 只在需要的地方加:情绪转折、节奏变化、重音、引用的口吻模仿。平铺直叙的段落一个不加,靠全局指令兜底。
  • 经验密度:每 3~5 句最多一处;一段平静的叙述可以整段没有。
  • 每处标注就是一次切段(一次 API 调用+拼接点),切太碎会让语流变散。
  • 标注写成对朗读者说的表演提示(心理活动/表情/动作皆可),不要写成对听众的说明。
  • 指令要戏剧化、情绪化才有效(实测):模型对情绪/音色类指令跟随很强(哭腔、耳语、亢奋大喊、像法官宣判、+50% 时长级别的变化),对含蓄舞台提示(「语气一沉」「带一丝惋惜」)和机械精确指令(「停顿一秒」「放慢一倍」)跟随很弱。写法上宁可夸张:「请把声音压到接近耳语,凑近话筒,像说破一个秘密」远强于「压低声音」。

4. 朗读脚本格式(tts.py --script)

# 注释行
@voice narrator zh_male_yuanboxiaoshu_uranus_bigtts
@voice quote zh_male_yizhipiannan_uranus_bigtts
@voice casual zh_male_fanjuanqingnian_uranus_bigtts

@narrator
[语气平静从容,像老朋友聊天]先讲一个真事。……他公开断言:

@quote
[带着当年的笃定与体面]股价已经站上了一个永久的高原。

@narrator
几天后,市场开始了最惨烈的下跌。

@casual
[像随口吐槽]这人判断力真差。

5. 合成与验收

source ~/code/.env
python3 ~/code/volcano-tts/tts.py -f script.txt --script -o out.mp3 \
  -i "这是一段有声书朗读,自然口语化,像讲故事,不要播音腔"
  • -i 全局指令必带,定整体基调;--speech-rate、--subtitle(字级时间戳)按需。
  • 验收:afinfo out.mp3 看时长是否与字数匹配(中文约 4~5 字/秒);如首次改动过工具或有疑虑,用 ~/.claude/skills/wjs-transcribing-audio/scripts/volc_asr_stream.py 抽查一段,确认标注没被念出来。
  • 用 SendUserFile 把 mp3 发给用户。

音色表(已实测可用,全部支持语音指令)

用途voice_type名称
旁白主声(男,默认)zh_male_yuanboxiaoshu_uranus_bigtts渊博小叔
旁白主声(女,备选)zh_female_zhixingnv_uranus_bigtts知性女声
旁白(对话感/播客感)zh_male_shenyeboke_uranus_bigtts深夜播客
解说腔zh_male_cixingjieshuonan_uranus_bigtts磁性解说男声
引用/名人语录/译文zh_male_yizhipiannan_uranus_bigtts译制片男
大白话/吐槽/内心 OSzh_female_shuangkuaisisi_uranus_bigtts爽快思思(用户定:大白话用女声,与男声旁白区分)
大白话(男声备选)zh_male_fanjuanqingnian_uranus_bigtts反卷青年
通用女声zh_female_vv_uranus_bigttsVivi

更多 2.0 音色:https://www.volcengine.com/docs/6561/1257544 (只认 _uranus_bigtts 后缀)。

常见坑

  • 指令悄无声息不生效(听起来全一样) → 三个已实锤的坑,tts.py 均已修复:① context_texts/section_id 必须嵌在 additions(JSON 字符串)里,放 req_params 顶层被静默忽略;② context_texts 传多条时只有第一条生效——段内指令必须独占一条,不能「全局+段内」并列(全局排前面会把段内全顶掉);③ 转述包装(「按照这个指示朗读:X」)会稀释效果,标注原文直发最强。怀疑时用「极慢哭腔」指令 A/B 对比时长(应 +25% 以上),基线合成是确定性的(同句同参时长完全一致),差异小于 5% 即未生效。
  • 标注被念出来 → 忘了走 tts.py 的标注解析,或用了它不认的括号格式(支持 【】 与 [ ])。
  • resource ID is mismatched with speaker related resource → 用了非 2.0 音色。
  • 输出中间语气断裂感明显 → 标注切段太碎,合并标注、减少切换。
  • 听到「星号」「井号」→ 编排步骤没洗干净 markdown(tts.py 未开 markdown 过滤,靠编排时清除)。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

王建硕的思维框架与表达方式。基于 7 份深度调研(约 100 万词英文博客 + 约 109 万字中文博客, 2002–2022,全部一手)提炼出 7 个核心心智模型、10 条决策启发式和完整的双语表达 DNA。 用途:以王建硕的身份和声音写作、回应、思考——他平实、诚恳、好奇,爱用家常比喻和自造词, 在具体和抽象之间反复架梯子,从不写自己没亲身验证过的东西。 当用户提到「用王建硕的视角」「王建硕会怎么看」「王建硕模式」「像王建硕一样写」 「Jian Shuo Wang perspective」「切换到王建硕」时使用。 即使用户只是说「帮我用王建硕的角度想想」「如果是王建硕会怎么写这篇」也应触发。 一旦激活,本次对话后续所有回应都保持王建硕身份,直到用户明确说「退出」—— 不需要每轮重新点名。 不适用:用户要的是关于王建硕本人的客观介绍 / 事实查询(「王建硕是谁」「他哪年创业的」), 那种问题正常回答即可,不要进入角色扮演。

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic state-of-the-project check covering unmerged branches, stalled PRs, failed GitHub Actions, stale builds, plan drift (TODOS.md / ROADMAP), unreleased commits, and log errors. Runs read-only investigation, presents a grouped checklist, fixes only after explicit user confirmation. Aware of the Cathier iOS app workflow (Xcode + fastlane + auto-merge @claude PRs from in-app feedback).

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed. Covers the last 7 days (X recent-search window). Triggers — "把这些spam删掉", "清理X垃圾回复", "推文下面好多引流号", "clean spam replies", "/wjs-cleaning-spam".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user wants a 王建硕-style WeChat article (article.md) turned into a narrated short MP4 video — TTS voiceover via 火山引擎 Volcano TTS, HyperFrames CSS/GSAP animation per scene, subtle SFX, abstract watercolor background, full pipeline rendering to 1080×1920 portrait MP4 (30-90s). Triggers — "把这篇文章做成视频", "做一个解说视频", "讲解视频", "/wjs-converting-text-to-video".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id>/ URLs, localizing images, and deploying via GitHub Actions. Triggers — "把 WordPress 迁成 Hugo", "wordpress 转静态站", "migrate WordPress to Hugo", "WXR to Hugo", "publish WordPress to GitHub Pages", "/wjs-converting-wp-to-hugo".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

jianshuo のスキルをすべて見る

このスキルの問題を報告する