mcpField
A
audio-acquisition

audio-acquisition

github.com/scrollmark创意与媒体1647 次安装1 天前更新
代码仓库

关于 audio-acquisition

audio-acquisition 是 video-studio-engine 的技能,用于决定视频旁白、音乐和音效的来源或生成方式,并测量、混合音频。它强调音频授权、实测时长,以及发现混音过轻或听不见的检查。

主要功能

  1. 01选择旁白与音乐来源
  2. 02发布前核查授权
  3. 03测量时长和音乐能量
  4. 04标准化音频响度
  5. 05检查音乐底音与人声的平衡

适用场景

  1. 01规划解说视频的音频
  2. 02为音乐主导的剪辑选曲
  3. 03发布配乐前检查授权
  4. 04渲染后排查音量过低

安装

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

$npx skills add https://github.com/scrollmark/social-skills --skill audio-acquisition

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
voice-landmines.md
scripts/
measure.py
normalize_audio.py

详细介绍

音频采集

音频是一个问题,绝不是可以忽略的事。每次都要询问,包括没有旁白的格式——一段静音内容之所以静音,应该是有人做出了这个选择,而不是因为没人提起。这里有三个决定,而且每个决定都有截然不同的答案。

依赖项

scripts/measure.py(测量时长和音轨逐秒的能量结构)以及 scripts/normalize_audio.py(响度)随此技能一同提供。两者都只使用标准库,并且要求 PATH 中有 ffmpeg/ffprobe;要让下面「测量而非信任」的规范能够实际执行,而非停留在理想层面,不需要安装其他任何东西。

此处不提供合成和素材来源功能。运行 pip install 'video-studio-engine[audio] @ https://github.com/scrollmark/social-skills/archive/refs/heads/master.tar.gz',即可添加 tts_kokoro(本地语音及词级时间戳)和 gen_music(配乐);不带 [audio] 的同一命令足以安装 stock_freesound(经过许可证筛选的音效)。使用 video-studio tts_kokoro … 运行它们。同一个 [audio] 选项还包含 duck_music(逐帧音量包络,可在旁白期间降低背景音乐音量)和 music_catalog(从你已获得许可的曲目中确定性地选取音乐, 确保重新渲染时配乐不会改变)。对于本工作室未录制的旁白—— 录制的朗读或提供的音轨——可通过 gen_captions 获取词级时间戳;该工具 需要 [captions] 选项。跳过此安装的用户将无法使用语音、音乐和经过许可证筛选的音效——下面的分级仍会告诉他们应购买哪项服务以及需要检查什么,但不会合成任何内容。现在也有了 ElevenLabs 脚本——video-studio tts_eleven——但它按字符计费,并且需要 ELEVENLABS_API_KEY,所以只有在本地语音确实无法满足需求时才使用:例如 Kokoro 不支持的语言,或客户已确认的特定表达方式。它不会返回词级时间戳,因此 ElevenLabs 朗读的字幕需通过 gen_captions 生成。

语音

默认使用本地语音,而且免费。 它可以离线运行,无需密钥,而且——从结构上来说最重要的是——会返回词级时间戳,字幕正是由此驱动的。对于带字幕的格式,没有其他选择。

只有当朗读本身就是交付内容时,才使用付费语音:品牌影片、客户指定的语音,或任何可能有人抱怨表达平淡的内容。它按字符计费(约 1,100 个字符对应 90 秒脚本),并且不会返回词级时间戳,因此带字幕的格式仍需要在底层使用本地语音。

两者都会缓存:文本、语音和设置完全相同,就不会重复处理,而是报告 cached: true;因此,修订时重新运行所有场景不会产生费用,只有修改过的台词才会重新合成。不要为了「确保内容是最新的」而强制重新渲染——重新合成的结果可能相差几毫秒,从而导致后续每个剪辑点都发生偏移。

旁白要在素材之前首先合成,因为测得的旁白时长就是场景的时钟。绝不要向合成器写入空行;应让它生成经过测量的静音,这样下游拼接才能保持同步。

配乐评分——先考虑权利,再考虑品味

这是唯一一个质量领先者并非正确答案的类别,而且必须在围绕曲目构建剪辑之前作出选择。

  • 如果作品将来会发布,请使用拥有授权曲库的生成器。 ElevenLabs 音乐模型基于已获授权的曲库训练,相关条款在上线前已确定;商业用途的起步费用约为每月 6 美元——因此,权利方面的注意事项属于定价问题,而非限制。它也是唯一一个能将精确时长作为参数的工具。
  • Lyria 符合 Google 的条款,并且与视频和图像生成器共用同一个密钥,因此无需额外注册账号。它的免费套餐配额实际上为零,会返回始终无法消除的 429 错误。
  • MiniMax 音乐免费,不计费,且其再分发权利尚不明确——训练数据未公开,条款也未明确授予对生成内容的再分发权。可用于内部和演示工作,绝不可用于客户项目;而且只能通过名称指定,不应自动选择。
  • 听起来最好的选项反而应当避免。 训练数据方面的诉讼尚无定论,而且大多没有可供自动化调用的公开 API。

各服务的费用和许可条款列于 studio-setup 技能的 SERVICES.md 中——发布前应查看权利列,而不是价格列。

对于以音乐为主导的形式,配乐应是访谈中的第一个问题,而非最后一个。 场景时长要根据曲目的能量曲线来剪辑,因此太晚选曲就意味着必须重新调整每个场景的时长。先选曲、绘制曲线,然后再设置时长。

音效

通常不需要。只有在形式需要且音效来源确实可用时才提供。Freesound 的许可因音效而异——包括 CC0、CC-BY、CC-BY-NC——因此默认只接受 CC0,不会给后续环节带来任何义务;若放宽到 CC-BY,则必须附上返回的署名信息。非商业许可的音效绝不能用于客户项目。

测量,而非轻信

请求的时长只是参考,不是承诺。 大多数音乐生成器会在提示词中接收时长,却会忽略它——请求 35 秒,返回的音频却有约 115 秒。只有那个授权曲库接受真正的时长参数。测量每个返回的文件;切勿将计划时长写入时间线。

根据曲目实际发生变化的位置剪辑。 scripts/measure.py --music 会报告逐秒响度曲线和转折点——即某个窗口相较于前 3 秒至少跳升或下降 3 dB 的位置。这些就是骤降和升高的位置,也是唯一有依据的段落切换点。按网格放置段落,不到 20 秒就会逐渐错拍,显得随意;在最后一段副歌前的安静小节中淡出,会让人觉得视频被截断了,因为事实确实如此。

添加音乐会悄无声息地损失 6 dB。 混音器会将各输入轨相加后除以输入数量,因此一条音乐轨会将输入从 1 路变成 2 路,并使所有内容(包括旁白)音量减半。实测:无音乐时语音为 -17.3 dB,有音乐时为 -23.5 dB;整段视频则从 -14.4 LUFS 降至 -20.3 LUFS。表面上看不出任何问题。渲染成功,且两路音源同比例缩放,所以平衡正确;结果只是音量偏低——这是唯一一种能躲过所有视觉检查的缺陷。任何包含音乐的渲染完成后,都要运行 scripts/normalize_audio.py --in <render>;它会将响度恢复到约 -14 LUFS,同时保留平衡。生成的音乐也可能以 0 dBFS 的峰值输出,因此没有可供损失的余量。

通过探测来混合背景音乐,不要靠猜。 一段以 -15 LUFS 生成、增益设为 -17 dB 并使用强侧链的背景音乐,最终完全听不见;每次电平探测的读数都与未加背景音乐的混音相差不超过 ±0.2 dB——日志里没有任何提示。请将语音间隙中的 RMS 与大声语音下的 RMS 对比测量,以此验证:背景音乐应使间隙音量提高约 6 dB,并在最响的台词下消失。

语音相关的陷阱——标点如何写入时间文件、为什么缓存的 WAV 没有时间信息、为什么两词短句会变得含混——详见 references/voice-landmines.md。

反模式

  • 凭听感选配乐,之后才发现版权问题。 剪辑完成后才发现版权问题,就意味着必须重新剪辑,而不是重新标注。
  • 因疏忽而出现静音。 先询问;之后,静音片段才是一种选择。
  • 将计划时长写入时间线。 实测音频才是计时依据。计划时长会让音频、视频和字幕逐渐失去同步。
  • 不测量就宣布混音完成。 音量偏低和听不见的音频都能成功渲染,而且你检查的每一帧看起来都毫无问题。

评论

支持 Markdown