mcpField
P
podcast-generation

podcast-generation

github.com/bytedance创意与媒体84.6k2.4k 次安装今天更新
代码仓库

关于 podcast-generation

将英文或中文文本转为双主持人播客的技能,可生成结构化对话脚本、合成音频并输出文字稿。

主要功能

  1. 01将文本改写为播客脚本
  2. 02生成双主持人轮流对话
  3. 03使用 TTS 合成语音
  4. 04导出混音 MP3 和文字稿
  5. 05支持英文和中文

适用场景

  1. 01将文章改编为音频
  2. 02把文档转成播客
  3. 03根据报告制作对话式节目

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bytedance/deer-flow --skill podcast-generation

安装后在 Claude Code 中输入/podcast-generation确认已加载。

附带文件scripts/generate.pytemplates/tech-explainer.md

详细介绍

播客生成技能

概述

此技能可根据文本内容生成高质量的播客音频。工作流包括创建结构化的 JSON 脚本(对话形式),并通过文本转语音合成生成音频。

核心能力

  • 将任意文本内容(文章、报告、文档)转换为播客脚本
  • 生成自然的双人主持对话(男主持人与女主持人)
  • 使用文本转语音合成语音音频
  • 将音频片段混合成最终的播客 MP3 文件
  • 支持英语和中文内容

工作流

步骤 1:了解需求

用户请求生成播客时,请确认:

  • 源内容:要转换为播客的文本、文章或报告
  • 语言:英语或中文(根据内容判断)
  • 输出位置:保存生成的播客的位置
  • 无需检查 /mnt/user-data 下的文件夹
步骤 2:创建结构化脚本 JSON

在 /mnt/user-data/workspace/ 中创建结构化 JSON 脚本文件,命名格式为:{descriptive-name}-script.json

JSON 结构:

{
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "dialogue text"},
    {"speaker": "female", "paragraph": "dialogue text"}
  ]
}
步骤 3:执行生成

调用 Python 脚本:

python /mnt/skills/public/podcast-generation/scripts/generate.py \
  --script-file /mnt/user-data/workspace/script-file.json \
  --output-file /mnt/user-data/outputs/generated-podcast.mp3 \
  --transcript-file /mnt/user-data/outputs/generated-podcast-transcript.md

参数:

  • --script-file:JSON 脚本文件的绝对路径(必需)
  • --output-file:输出 MP3 文件的绝对路径(必需)
  • --transcript-file:输出的 Markdown 文稿文件的绝对路径(可选,但建议提供)

重要

  • 在一次完整调用中执行脚本。不要将工作流拆分为多个步骤。
  • 脚本会在内部处理所有 TTS API 调用和音频生成。
  • 不要读取 Python 文件,只需使用参数调用它。
  • 始终包含 --transcript-file,为用户生成易读的文稿。
  • TTS 提供方及其并发数会根据环境变量自动选择,无需手动选择或调整。

脚本 JSON 格式

脚本 JSON 文件必须采用以下结构:

{
  "title": "The History of Artificial Intelligence",
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "Hello Deer! Welcome back to another episode."},
    {"speaker": "female", "paragraph": "Hey everyone! Today we have an exciting topic to discuss."},
    {"speaker": "male", "paragraph": "That's right! We're going to talk about..."}
  ]
}

字段:

  • title:播客节目的标题(可选,用作文稿中的标题)
  • locale:语言代码——英语为 "en",中文为 "zh"
  • lines:对话行数组
    • speaker:只能是 "male" 或 "female"
    • paragraph:该主持人的对话文本

脚本撰写指南

创建脚本 JSON 时,请遵循以下指南:

格式要求
  • 仅包含两位主持人:男主持人与女主持人,自然轮流发言
  • 目标时长:约 10 分钟对话(约 40-60 行)
  • 以男主持人的问候开场,并包含 "Hello Deer"
语气与风格
  • 对话自然随意,就像两位朋友聊天
  • 使用轻松的表达和自然的对话过渡
  • 避免过于正式或学术的语气
  • 加入回应、追问和自然的插话
内容指南
  • 主持人之间频繁交谈
  • 句子简短易懂,便于听众听清
  • 仅使用纯文本,不要在输出中使用 Markdown 格式
  • 将技术概念转化为通俗易懂的语言
  • 不要使用数学公式、代码或复杂符号
  • 让内容引人入胜,便于仅通过音频收听的听众理解
  • 排除日期、作者姓名或文档结构等元信息

播客生成示例

用户请求:“生成一期关于人工智能历史的播客”

步骤 1:创建脚本文件 /mnt/user-data/workspace/ai-history-script.json:

{
  "title": "The History of Artificial Intelligence",
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "Hello Deer! Welcome back to another fascinating episode. Today we're diving into something that's literally shaping our future - the history of artificial intelligence."},
    {"speaker": "female", "paragraph": "Oh, I love this topic! You know, AI feels so modern, but it actually has roots going back over seventy years."},
    {"speaker": "male", "paragraph": "Exactly! It all started back in the 1950s. The term artificial intelligence was actually coined by John McCarthy in 1956 at a famous conference at Dartmouth."},
    {"speaker": "female", "paragraph": "Wait, so they were already thinking about machines that could think back then? That's incredible!"},
    {"speaker": "male", "paragraph": "Right? The early pioneers were so optimistic. They thought we'd have human-level AI within a generation."},
    {"speaker": "female", "paragraph": "But things didn't quite work out that way, did they?"},
    {"speaker": "male", "paragraph": "No, not at all. The 1970s brought what's called the first AI winter..."}
  ]
}

步骤 2:执行生成:

python /mnt/skills/public/podcast-generation/scripts/generate.py \
  --script-file /mnt/user-data/workspace/ai-history-script.json \
  --output-file /mnt/user-data/outputs/ai-history-podcast.mp3 \
  --transcript-file /mnt/user-data/outputs/ai-history-transcript.md

这将生成:

  • ai-history-podcast.mp3:播客音频文件
  • ai-history-transcript.md:易读的播客 Markdown 文稿

特定模板

仅在用户请求符合以下模板时,才读取对应模板文件。

  • 技术解读 - 用于将技术文档和教程转换为播客

输出格式

生成的播客遵循“Hello Deer”格式:

  • 两位主持人:一男一女
  • 自然的对话交流
  • 以“Hello Deer”问候语开场
  • 目标时长:约 10 分钟
  • 主持人交替发言,让内容更生动

输出处理

如果生成失败,命令会以状态码 1 退出,并将诊断信息写入 stderr。只有在命令成功后才能提供 MP3;已有的音频文件或新写入的转录文本都不能证明音频生成成功。

生成完成后:

  • 播客和转录文本保存在 /mnt/user-data/outputs/
  • 使用 present_files 工具向用户分享播客 MP3 和转录文本 MD
  • 简要说明生成结果(主题、时长、主持人)
  • 提供重新生成的选项,以便按需调整

要求

必须设置以下环境变量:

  • Volcengine:VOLCENGINE_TTS_APPID 和 VOLCENGINE_TTS_ACCESS_TOKEN
  • MiniMax:MINIMAX_API_KEY
  • VOLCENGINE_TTS_CLUSTER:Volcengine TTS 集群(可选,默认值为 "volcano_tts")
  • VOLCENGINE_TTS_VOICE_TYPE_MALE:Volcengine 男声类型(可选,默认值为 zh_male_yangguangqingnian_moon_bigtts)
  • VOLCENGINE_TTS_VOICE_TYPE_FEMALE:Volcengine 女声类型(可选,默认值为 zh_female_sajiaonvyou_moon_bigtts)

语音类型覆盖值会经过去除首尾空格处理;未设置或为空时,将使用所列默认值。

注意事项

  • 始终在一次调用中执行完整流程——无需单独测试各步骤,也不必担心超时
  • 脚本 JSON 应与内容语言一致(en 或 zh)
  • 在脚本中应简化技术内容,以便听众理解
  • 在脚本中应将复杂符号(公式、代码)转换成通俗语言
  • 内容较长可能会生成更长的播客

提供商(Volcengine / MiniMax)

根据环境变量自动选择:

  • 设置了 VOLCENGINE_TTS_APPID 和 VOLCENGINE_TTS_ACCESS_TOKEN → 使用 Volcengine TTS(默认)。
  • 仅设置了 MINIMAX_API_KEY → 使用 MiniMax TTS(/v1/t2a_v2)。
  • 使用 PODCAST_GENERATION_PROVIDER=volcengine|minimax 强制指定。

MiniMax 覆盖项:MINIMAX_API_HOST(默认 https://api.minimaxi.com)、 MINIMAX_TTS_MODEL(默认 speech-2.6-hd)、MINIMAX_TTS_VOICE_MALE (默认 male-qn-qingse)、MINIMAX_TTS_VOICE_FEMALE(默认 female-tianmei)。

并发由各提供商在内部管理——MiniMax 使用单线程以减少速率限制错误,Volcengine 使用 4 个工作线程。调用方无法设置并发参数;遇到暂时性的速率限制时,会通过自动重试和退避机制处理。

评论

支持 Markdown