Communitygithub.com

memex-lab/product-launch-video-skill

使用Google Gemini TTS从文本生成语音。适用于创建画外音、旁白、播客或任何文本转语音任务。支持70多种语言、通过自然语言提示控制风格/情感,以及30种预制语音。触发词:“Gemini TTS”、“Google TTS”、“voiceover”、“narration”、“text to speech”、“speech generation”。

product-launch-video-skill 是什么?

该技能利用Google Gemini的文本转语音(TTS)能力,从文本生成自然且富有表现力的语音。它支持70多种语言、30种预制语音,并允许通过自然语言提示(例如,风格、节奏、口音)和音频标签(例如,[whispers]、[laughs]、[excited])进行精细控制。该工具特别设计了多段语音生成功能,通过将多个文本片段合并为单个API请求解决语音一致性问题,然后使用ffmpeg基于静音检测自动分割音频文件。它适用于Node.js环境,需要安装@google/genai包并设置GEMINI_API_KEY环境变量。支持的平台包括Gemini TTS模型(如gemini-3.1-flash-tts-preview、gemini-2.5-flash-preview-tts等),以及通过—director-notes参数实现的导演指导功能,可用于为播客、产品发布视频、配音等创建专业级语音内容。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/memex-lab/product-launch-video-skill/tree/main/skills/gemini-tts

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Gemini 文本转语音

使用Google Gemini TTS从文本生成自然、富有表现力的语音。支持70多种语言、30种预制语音,通过自然语言提示和音频标签控制风格。

要求: Node.js 18+、ffmpeg、@google/genai npm 包、GEMINI_API_KEY 环境变量。

可用脚本

  • scripts/generate-tts.mjs — 一站式TTS生成器,支持单次请求一致性、基于静音的拆分以及自动裁剪。

快速开始

单段文本转语音

npm install @google/genai
GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --text "Hello, welcome to our product!" \
  --output-dir public/vo \
  --voice Kore

多段画外音(一致的语音)

创建一个 segments.json 文件:

[
  { "id": "intro", "text": "Welcome to our product launch." },
  { "id": "features", "text": "Here are the three features you will love." },
  { "id": "close", "text": "Get started today at our website." }
]

运行:

GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --segments segments.json \
  --output-dir public/vo \
  --voice Kore \
  --director-notes "Tone: Warm, confident, inspiring. Style: Professional narrator with a vocal smile. Accent: Neutral American English. Pacing: Moderate."

输出(JSON 到标准输出):

{
  "success": true,
  "segments": [
    { "id": "intro", "file": "public/vo/vo-intro.mp3", "duration": 3.25 },
    { "id": "features", "file": "public/vo/vo-features.mp3", "duration": 4.10 },
    { "id": "close", "file": "public/vo/vo-close.mp3", "duration": 2.80 }
  ],
  "totalDuration": 10.15,
  "fullAudioFile": "public/vo/vo-full.wav"
}

脚本选项

标志默认值描述
--segments FILE—JSON 文件,包含 [{id, text}] 段定义
--text TEXT—要生成的单段文本(替代 --segments)
--output-dir DIR—音频文件输出目录(必填)
--voice NAMEKore预制语音名称(参见语音表)
--model NAMEgemini-3.1-flash-tts-previewGemini TTS 模型 ID
--director-notes TEXT—表演指导:风格、节奏、口音、呼吸、发音。不控制性别/年龄(使用 --voice 控制)。
--retries N3API 错误的最大重试次数
--trim / --no-trim--trim裁剪段边界处的静音
--format FORMATmp3输出格式:mp3 或 wav

退出码

码含义
0成功
1缺少必需的参数或环境变量
2重试耗尽后 API 错误
3ffmpeg 未安装或处理失败
4文件 I/O 错误

工作原理(多段)

Gemini TTS 不保证跨不同 API 请求的语音一致性。脚本通过以下方式解决:

  1. 将所有段合并到一个提示中,段之间使用 [3秒暂停] 标记
  2. 在单个 API 调用中生成一个连续的音频文件
  3. 使用 ffmpeg 的 silencedetect 检测静音间隙,采用自适应阈值(从 noise=-35dB, d=1.5s 开始,逐步放宽)。如果找到精确匹配,直接使用。如果发生阈值跳跃(段数太少 → 太多),则用更快的语音节奏重新生成音频,使段间暂停更明显,然后重试检测。
  4. 在静音中点拆分,生成单独的段文件
  5. 裁剪每个段的残余静音填充(约每侧 1.5 秒),保留 0.15 秒呼吸空间

模型

模型最适合的场景
gemini-3.1-flash-tts-preview最新、最可控、超过 200 个音频标签(默认)
gemini-2.5-flash-preview-tts快速、质量良好、通用用途
gemini-2.5-pro-preview-tts最高质量、复杂表演

语音

30 种预制语音:

语音性别特点音高
Achernar女柔和较高
Achird男友好较低中
Algenib男沙哑较低
Algieba男平滑较低
Alnilam男坚定较低中
Aoede女轻快中
Autonoe女明亮中
Callirrhoe女随和中
Charon男信息性较低
Despina女平滑中
Enceladus男有气息较低
Erinome女清晰中
Fenrir男兴奋较低中
Gacrux女成熟中
Iapetus男清晰较低中
Kore女坚定中
Laomedeia女乐观较高
Leda女年轻较高
Orus男坚定较低中
Puck男乐观中
Pulcherrima男前向中
Rasalgethi男信息性中
Sadachbia男生动较低
Sadaltager男博学中
Schedar男平稳较低中
Sulafat女温暖中
Umbriel男随和较低中
Vindemiatrix女温柔中
Zephyr女明亮较高
Zubenelgenubi男随意较低中

导演指导 (--director-notes)

针对所选语音的表演指导。只定义重要的内容——过多指定会限制模型的创造力并可能降低效果。

最常见的三种指导是风格、节奏和口音,但您也可以包含任何与表演相关的自定义指令。

  • 风格 — 情感质量和表达特点。要描述性:"Infectious enthusiasm — the listener should feel part of something exciting" 比单纯的 "energetic" 效果更好。您可以叠加特征,并使用配音行业术语如“声音微笑”。
  • 节奏 — 整体速度和节奏变化。可以从 "Speak as fast as possible" 到 "Incredibly slow and liquid, words bleed into each other, zero urgency"。
  • 口音 — 要具体。"British English as heard in Croydon, England" 比 "British accent" 效果好得多。
--director-notes "Style: Enthusiastic and sassy GenZ beauty YouTuber. Pacing: Extremely fast, rapid delivery like short-form video influencers. Accent: Southern California valley girl from Laguna Beach."

音频标签

在段文本中使用内联 [括号] 进行逐词控制。可本地覆盖导演指导。

[whispers] [shouting] [excited] [serious] [short pause] [laughs] [very fast] [very slow] [sarcastic] [curious]

创意标签也有效:[like dracula]、[whispering conspiratorially]

示例:"[excited] This changes everything! [short pause] Let me show you how."

参考

  • 提示指南 — 针对风格、情感和口音的高级提示工程

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能