视频转播客场景,VideoAgent 的 TTS 和 LLM 都找 TaoToken
2026/9/18 21:51:40 网站建设 项目流程

1. VideoAgent 视频转播客:真正难的是 LLM 口播改写和 TTS 配音这两条链路

在 VideoAgent 这类视频智能体里,把一期长视频转成播客,流程通常被理解为“切片 + 配音 + 导出”。但实际跑起来,最先出问题的往往不是切片,而是 ASR 字幕进入 LLM 时的改写质量,以及 TTS 合成时的接口配置。字幕稿直接丢给 TTS,会出现书面语味重、断句怪、数字读错;两个供应商分别配 key,又会出现401 invalid api key404 model not found、音频文件 0 字节这些排障噪音。这次我们把 VideoAgent 视频转播客的 LLM 和 TTS 都收到 TaoToken:先去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_intro 拿 Key,再把 Base URL 填为 https://taotoken.net/api。这样口播改写和配音共用一套鉴权、一套网关、一套账单,双链路成本也能拆开看。

VideoAgent 本身负责的是编排:它把“把这场讲座转成播客”拆成字幕提取、语义检索、口播稿生成、配音、音频合成等子任务。它不会替你决定 LLM 和 TTS 的供应商,也不会替你优化调用成本。真正决定一期 60 分钟视频能不能稳定转成 40 到 50 分钟音频播客的,是下面两条链路:

  • LLM 链路:把 ASR 字幕、视频摘要、章节信息改写成适耳的口播稿;
  • TTS 链路:把口播稿合成为可发布的音频文件,并处理分段、停顿、音色一致性。

这两条链路如果分别接不同平台,排障会变成“猜”。LLM 报错要查 A 平台,TTS 爆音要查 B 平台,最后成本还分散在两张账单里。统一到 TaoToken 后,至少鉴权、Base URL、Key 管理可以先标准化。下文按可跟做的顺序写:先准备 Key,再配 LLM,再配 TTS,最后把音频文件落盘并核算双链路成本。

2. 接入前的最小准备:Key、Base URL、模型 ID 和环境变量

第一步不是改 VideoAgent 的源码,而是把凭据和地址固定下来。打开 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_prepare ,进入控制台创建 API Key。建议至少建两个 Key:

  • videoagent-llm:只给播客口播改写链路使用;
  • videoagent-tts:只给配音合成链路使用。

这样月底看用量时,能一眼分出 LLM Token 花了多少、TTS 字符或音频时长花了多少。Key 值形如YOUR_API_KEY,实际使用时替换成你自己创建的值,不要提交到 Git,也不要写进前端代码。

项目根目录可以先放一个.env文件:

# .env TAOTOKEN_BASE_URL=https://taotoken.net/api TAOTOKEN_LLM_API_KEY=YOUR_API_KEY TAOTOKEN_TTS_API_KEY=YOUR_API_KEY TAOTOKEN_LLM_MODEL=YOUR_LLM_MODEL TAOTOKEN_TTS_MODEL=YOUR_TTS_MODEL

如果你习惯用 shell 临时注入,也可以:

export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_LLM_API_KEY="YOUR_API_KEY" export TAOTOKEN_TTS_API_KEY="YOUR_API_KEY"

注意这里有两个容易混的点:

  1. Base URL 统一写https://taotoken.net/api,不要在工具配置里给它加 UTM 参数;
  2. 模型 ID 不要凭记忆填,先去模型对话或控制台确认当前账号可用的 LLM 与 TTS 模型。

VideoAgent 视频转播客的输入通常是字幕文件、摘要文本或章节 JSON。LLM 需要的是文本,TTS 需要的是改写后的口播稿。准备阶段先把目录建好:

video2podcast/ input/ lecture.mp4 work/ transcript.txt podcast_script.txt tts_parts/ list.txt output/ podcast_full.mp3

3. LLM 链路:播客口播改写用 Claude Code / Codex / CC Switch 三件套接入

LLM 链路的目标只有一个:把“看起来正确、读起来别扭”的字幕稿,改成“听起来自然、信息不丢”的播客口播稿。VideoAgent 可以调用本地脚本,也可以让外部 coding agent 帮你维护改写脚本。这里给三种常见接入方式:Claude Code、Codex、CC Switch。

3.1 Claude Code:settings.json 与 ANTHROPIC_* 配置

Claude Code 读取settings.json,其中env可以固定供应商地址、Key 和模型。示例:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }

如果不想改文件,也可以在当前终端临时注入:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY" export ANTHROPIC_MODEL="claude-sonnet-4-5"

改完后新开一个终端,运行 Claude Code 的检查命令,确认它读到的 Base URL 不是默认地址。这里出现401,优先查ANTHROPIC_AUTH_TOKEN是否还是占位符;出现404,优先查ANTHROPIC_BASE_URL是否被误写成别的路径。

3.2 Codex:config.toml 单独配置,不要混用 ANTHROPIC_*

Codex 使用config.toml,不要把 Claude Code 的ANTHROPIC_*变量套进来。示例:

model = "YOUR_LLM_MODEL" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_LLM_API_KEY"

然后设置环境变量:

export TAOTOKEN_LLM_API_KEY="YOUR_API_KEY"

Codex 里如果报model not found,不要先改 Base URL,先去控制台确认模型 ID;如果报鉴权失败,检查env_key指向的变量是否已经导出。两个工具各走各的配置,排障路径才不会乱。

3.3 CC Switch 三件套

如果你用 CC Switch 管理多个供应商,新增时按三件套填:

Provider Name: TaoToken Base URL: https://taotoken.net/api API Key: YOUR_API_KEY

切换供应商后,检查 Claude Code 侧是否写入ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKENANTHROPIC_MODEL。Codex 侧仍然走config.tomlTAOTOKEN_LLM_API_KEY,不要把三件套里的 Anthropic 变量直接复制到 Codex。

3.4 口播改写脚本与提示词

LLM 的输入不要直接是整段字幕。先做清洗:去掉[音乐][掌声]、时间轴、重复语气词,再保留数字、人名、结论和例子。提示词可以这样写:

你是播客口播编辑。把输入字幕改写成单人播客口播稿。 硬性要求: 1. 保留数字、人名、关键结论和案例顺序; 2. 删除“大家看这里”“如图所示”“这个画面”等依赖视觉的表达; 3. 每段不超过 3 句,长句拆短; 4. 把书面语改成适耳表达,但不要编造事实; 5. 输出纯文本,不要 Markdown,不要标题。

Python 调用示例:

import os from openai import OpenAI client = OpenAI( api_key=os.environ["TAOTOKEN_LLM_API_KEY"], base_url=os.environ.get("TAOTOKEN_BASE_URL", "https://taotoken.net/api"), ) with open("work/transcript.txt", encoding="utf-8") as f: transcript = f.read() prompt = f"""你是播客口播编辑。把下面字幕改写成口播稿。 保留事实和数字,删除视觉指向,长句拆短,输出纯文本。 {transcript} """ resp = client.chat.completions.create( model=os.environ["TAOTOKEN_LLM_MODEL"], messages=[ {"role": "system", "content": "你是严谨的播客口播编辑。"}, {"role": "user", "content": prompt}, ], temperature=0.3, ) script = resp.choices[0].message.content with open("work/podcast_script.txt", "w", encoding="utf-8") as f: f.write(script) print("usage:", resp.usage)

运行后应该得到work/podcast_script.txt。这个文件就是 TTS 链路的输入。LLM 成本主要看prompt_tokenscompletion_tokens,所以在脚本里打印resp.usage,别等月底再猜。

4. TTS 链路:把口播稿合成为音频文件

TTS 链路比 LLM 更容易被低估。它不是“把文本丢进去”就结束,长文本需要分段,音色要一致,数字和英文缩写要读对,段落之间要留停顿。VideoAgent 视频转播客产出的是音频文件,不是一段演示文本,所以这里必须让 TTS 真正落盘。

TTS 也走 TaoToken 的 Base URL:https://taotoken.net/api。先做短文本验证:

curl -X POST "https://taotoken.net/api/audio/speech" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "YOUR_TTS_MODEL", "voice": "alloy", "input": "欢迎收听本期播客,今天我们聊视频转播客的双链路成本。" }' \ --output work/tts_parts/test.mp3

然后检查文件是否真的有内容:

ffprobe -v error -show_entries format=duration,size -of default=noprint_wrappers=1 work/tts_parts/test.mp3

如果size是 0,先不要怀疑 VideoAgent,先查三件事:Key 是否是 TTS Key、模型 ID 是否可用、请求体字段是否拼错。短文本通过后再跑长文本。

Python 分段合成示例:

import os import re from openai import OpenAI client = OpenAI( api_key=os.environ["TAOTOKEN_TTS_API_KEY"], base_url=os.environ.get("TAOTOKEN_BASE_URL", "https://taotoken.net/api"), ) def split_text(text: str, max_len: int = 1200): paragraphs = [p.strip() for p in text.split("\n") if p.strip()] parts, buf = [], "" for p in paragraphs: if len(buf) + len(p) <= max_len: buf += ("\n" if buf else "") + p else: if buf: parts.append(buf) buf = p if buf: parts.append(buf) return parts with open("work/podcast_script.txt", encoding="utf-8") as f: script = f.read() os.makedirs("work/tts_parts", exist_ok=True) parts = split_text(script) for i, part in enumerate(parts, 1): path = f"work/tts_parts/part_{i:03d}.mp3" with client.audio.speech.with_streaming_response.create( model=os.environ["TAOTOKEN_TTS_MODEL"], voice="alloy", input=part, ) as response: response.stream_to_file(path) print("written:", path, len(part))

分段之后要合并。用ffmpeg生成 concat 列表:

rm -f work/list.txt for f in work/tts_parts/part_*.mp3; do echo "file '$PWD/$f'" >> work/list.txt done ffmpeg -f concat -safe 0 -i work/list.txt -c copy output/podcast_full.mp3

最后验证产物:

ffprobe -v error -show_entries format=duration,size -of default=noprint_wrappers=1 output/podcast_full.mp3

到这里,可复现产出就包括:LLM 与 TTS 双配置、podcast_script.txttts_parts/*.mp3和最终output/podcast_full.mp3

5. 双链路成本怎么算:LLM Token 与 TTS 字符的两张账单

视频转播客的成本不是一笔糊涂账,它至少分成两张:

  • LLM 账单:播客口播改写调用 LLM,按输入 Token 和输出 Token 计费;
  • TTS 账单:配音调用 TTS,通常按字符数或音频时长计费。

再加上 VideoAgent 本地的 ASR、切片、合并等资源消耗,整体成本才是完整成本。下面给的是核算方法,具体单价以 TaoToken 控制台和模型页实际显示为准。

LLM 侧公式:

LLM 成本 = prompt_tokens × 输入单价 + completion_tokens × 输出单价

一段 60 分钟讲座,ASR 字幕可能有一万多字。你把字幕、提示词、章节摘要一起发给 LLM,输入 Token 会明显高于输出。控制方法:

  1. 先清洗字幕,去掉语气词、重复句、时间轴,减少无效输入;
  2. 分章节改写,不要每次把全文重发;
  3. 初稿和润色分开,便宜模型做结构整理,贵模型只做最终润色;
  4. 在脚本里记录每次usage,按项目汇总。

TTS 侧公式常见有两种:

TTS 成本 = 计费字符数 × 字符单价 或 TTS 成本 = 音频时长(分钟) × 分钟单价

控制方法:

  1. 口播稿压缩,别把 LLM 的废话也读出来;
  2. 片头、片尾、固定口播可以缓存复用;
  3. 长文本分段并行,但每段都先用短样本确认音色;
  4. 失败重试要设上限,避免网络抖动导致重复计费。

统一到 TaoToken 后,建议用不同 Key 跑两条链路。这样你可以在 API Keys 页面按 Key 看用量,LLM 涨了还是 TTS 涨了,一眼能分清。需要创建独立 Key 时,从官网进入 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_cost 会更直接。

6. 可复现完整流程:从视频到 mp3 的本地命令与验证清单

下面给一条最小可复现路径。假设 VideoAgent 或本地 Whisper 已经产出work/transcript.txt

第一步,确认环境变量:

export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_LLM_API_KEY="YOUR_API_KEY" export TAOTOKEN_TTS_API_KEY="YOUR_API_KEY" export TAOTOKEN_LLM_MODEL="YOUR_LLM_MODEL" export TAOTOKEN_TTS_MODEL="YOUR_TTS_MODEL"

第二步,运行口播改写脚本,生成work/podcast_script.txt。运行后检查三件事:是否还有“如图所示”这类视觉指向;数字和人名是否保留;段落长度是否适合朗读。

第三步,先合成 200 字测试音频,确认音色、语速、停顿。不要一上来就合成 40 分钟,否则 TTS 报错会浪费等待时间。

第四步,分段合成全部音频:

python tts.py --script work/podcast_script.txt --outdir work/tts_parts

第五步,合并音频:

rm -f work/list.txt for f in work/tts_parts/part_*.mp3; do echo "file '$PWD/$f'" >> work/list.txt done ffmpeg -f concat -safe 0 -i work/list.txt -c copy output/podcast_full.mp3

第六步,验证:

ffprobe -v error -show_entries format=duration,size -of default=noprint_wrappers=1 output/podcast_full.mp3

成功标准:

  • output/podcast_full.mp3文件大小明显大于 0;
  • 音频总时长与口播稿长度大致匹配;
  • 每个分段都能单独播放;
  • 合并后没有缺段、重复段、爆音;
  • LLM 与 TTS 的 Key 用量能在控制台分开看到。

如果 VideoAgent 首次运行需要下载 Whisper、CosyVoice 等本地模型,下载慢和磁盘占用是另一类问题,不要和 TaoToken 的接口问题混在一起排。你可以把 ASR 留在本地,把 LLM 口播改写和 TTS 配音切到 TaoToken 的https://taotoken.net/api,这样链路边界更清楚。

7. 常见报错与排查:401、404、model not found、音频 0 字节

视频转播客双链路最常见的报错集中在下面几类。

401 invalid api key:检查 Key 是否替换了YOUR_API_KEY,请求头是否带Authorization: Bearer,环境变量是否在当前 shell 生效。Claude Code 查ANTHROPIC_AUTH_TOKEN,Codex 查TAOTOKEN_LLM_API_KEY

404 not found:Base URL 写错。统一用https://taotoken.net/api,不要自己拼接/v1或加多余路径。TTS 端点用https://taotoken.net/api/audio/speech做短测。

model not found:模型 ID 不在账号可用范围,或者拼写错误。去模型对话页确认模型 ID,不要沿用别的平台命名。

音频 0 字节:通常是 TTS 请求字段错、文本为空、超长、网络中断。先用 20 字短文本测,再逐步加长。检查input是否传了空字符串,检查输出目录是否存在。

中文乱码:文件读写统一encoding="utf-8",请求头Content-Type: application/json,不要在 Windows 默认编码下读写字幕。

合成超时:把口播稿按 800 到 1500 字分段,分段失败只重试当前段,不要整篇重跑。

成本异常:LLM 侧看是否重复提交全文,TTS 侧看是否失败后无限重试。脚本里设置最大重试次数,并记录每次请求的模型、输入长度、返回状态。

Claude Code 配置不生效:检查settings.json是否在正确项目目录,环境变量是否被 shell 覆盖。Codex 配置不生效:检查config.tomlbase_url是否指向https://taotoken.net/api,同时确认没有把ANTHROPIC_*变量写进 Codex。

8. 文末 CTA:模型对话 → Coding Plan → 创建 Key → Claude Code 文档

如果你准备把 VideoAgent 视频转播客跑通,建议按下面顺序操作:

  1. 先去模型对话确认 LLM 和 TTS 模型 ID:https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_chat
  2. 如果你的主要场景是 Claude Code、Codex 这类 coding agent,查看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_plan
  3. 创建 LLM 与 TTS 两个独立 Key:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_keys
  4. 配 Claude Code 时参考文档:https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_claudecode

配置时记住两句话:Key 用YOUR_API_KEY替换,Base URL 填https://taotoken.net/api。LLM 链路负责把字幕改成适耳口播稿,TTS 链路负责把口播稿变成podcast_full.mp3。两条链路分开建 Key、统一走 TaoToken,视频转播客的成本和排障都会清楚很多。需要从头创建 Key 时,从这里进入官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=videopodcast_final 。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询