关于 gemini-tts
gemini-tts 是使用 Gemini TTS 模型将文本转成语音的技能,适合内容创作者及需要无障碍音频的场景。它通过脚本支持多种声音、多说话人对话和长文本流式处理。
主要功能
- 01文本转 WAV 音频
- 02多种声音可选
- 03生成多说话人对话
- 04长文本流式处理
- 05自定义输出目录和文件名
适用场景
- 01制作播客、有声书或视频旁白
- 02生成访谈和角色对话音频
- 03批量将文本转换为音频文件
- 04为无障碍内容制作语音
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ akrindev/ google-studio-skills --skill gemini-tts安装后在 Claude Code 中输入/gemini-tts确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/voices.mdscripts/package-lock.jsonpackage.jsontts.js详细介绍
Gemini Text-to-Speech
通过可执行脚本使用 Gemini 的 TTS 模型生成自然语音,支持多种音色和多说话人对话。
适用场景
在以下情况下使用此技能:
- 将文本转换为自然语音
- 为播客、有声读物或视频创建音频
- 生成多说话人对话
- 为长篇内容流式生成音频
- 从多种音色中进行选择
- 创建无障碍音频内容
- 为演示文稿生成旁白
- 批量将文本转换为音频文件
可用脚本
scripts/tts.js
用途:使用 Gemini TTS 模型将文本转换为语音
适用场景:
- 任何文本转语音转换
- 生成多说话人对话
- 为长文本流式生成音频
- 为内容创作配制旁白
- 生成无障碍音频
关键参数:
| 参数 | 说明 | 示例 |
|---|---|---|
text | 要转换的文本(必需) | "Hello, world!" |
--voice、-v | 音色名称 | Kore |
--output、-o | 输出文件的基本名称 | welcome |
--output-dir | 音频输出目录 | audio/ |
--no-timestamp | 禁用自动时间戳 | 标志 |
--model、-m | TTS 模型 | gemini-2.5-flash-preview-tts |
--stream、-s | 启用流式生成 | 标志 |
--speakers | 多说话人映射 | "Joe:Kore,Jane:Puck" |
输出:WAV 音频文件路径
工作流
工作流 1:基本文本转语音
node scripts/tts.js "Hello, world! Have a wonderful day."
- 最适用于:快速生成音频、简单消息
- 音色:
Kore(默认,清晰且专业) - 输出:
audio/tts_output_YYYYMMDD_HHMMSS.wav(自动添加时间戳)
工作流 2:选择其他音色
node scripts/tts.js "Welcome to our podcast about technology trends" --voice Puck --output welcome
- 最适用于:友好、对话式内容
- 音色选项:Kore、Puck、Charon、Fenrir、Aoede、Zephyr、Sulafat
- 输出:
audio/welcome_YYYYMMDD_HHMMSS.wav
工作流 3:多说话人对话
node scripts/tts.js "TTS the following conversation:
Joe: How's it going today?
Jane: Not too bad, how about you?
Joe: I'm working on a new project.
Jane: Sounds exciting, tell me more!" --speakers "Joe:Kore,Jane:Puck" --output conversation
- 最适用于:对话、访谈、角色扮演内容
- 格式:标注说话人姓名的对话
- 脚本会自动将文本分配给相应音色
- 输出:
audio/conversation_YYYYMMDD_HHMMSS.wav
工作流 4:使用流式生成处理长内容
node scripts/tts.js "This is a very long text that would benefit from streaming..." --stream --output long-form
- 最适用于:播客、有声读物、长篇文章
- 流式生成:将音频分块处理,适用于长文本
- 输出:
audio/long-form_YYYYMMDD_HHMMSS.wav
工作流 5:专业旁白
node scripts/tts.js "Welcome to our quarterly earnings presentation. Today we'll discuss our growth metrics and future plans." --voice Charon --output voiceover
- 最适用于:企业内容、演示文稿、正式公告
- 音色:
Charon(深沉、权威) - 适用场景:需要专业、严肃的语气时
工作流 6:自定义输出目录
node scripts/tts.js "Save to specific folder." --output-dir ./my-projects/podcasts/ --output episode1
- 最适用于:结构清晰的项目目录
- 如果目录不存在,脚本会自动创建
- 输出:
./my-projects/podcasts/episode1_YYYYMMDD_HHMMSS.wav
工作流 7:内容创作流程(文本 → 音频)
# 1. Generate script (gemini-text skill)
node skills/gemini-text/scripts/generate.js "Write a 2-minute podcast intro about sustainable energy"
# 2. Generate audio (this skill)
node scripts/tts.js "[Paste generated script]" --voice Fenrir --output podcast-intro
# 3. Use in video or podcast
- 最适用于:播客、有声读物、视频旁白
- 搭配使用:gemini-text 生成脚本
工作流 8:无障碍内容
node scripts/tts.js "Welcome to our accessible website. This audio describes our main navigation options." --voice Aoede --output accessibility
- 最适用于:网页无障碍访问、屏幕阅读器替代方案
- 音色:
Aoede(悦耳、动听) - 适用场景:让视障用户也能访问内容
工作流 9:教育内容
node scripts/tts.js "Chapter 1: Introduction to Quantum Computing. Let's explore the fundamental principles..." --voice Zephyr --output chapter1
- 最适用于:教育材料、教程、在线学习
- 音色:
Zephyr(轻盈、清新) - 搭配 gemini-text 生成内容,效果更佳
工作流 10:禁用时间戳
node scripts/tts.js "Fixed filename." --output my-audio --no-timestamp
- 最适用于:需要完全控制文件名时
- 输出:
audio/my-audio.wav(不含时间戳) - 适用场景:需要按特定命名规则生成文件时
参数参考
模型选择
| 模型 | 质量 | 速度 | 最适用于 |
|---|---|---|---|
gemini-2.5-flash-preview-tts | 良好 | 快 | 通用场景、大批量处理 |
gemini-2.5-pro-preview-tts | 更高 | 较慢 | 优质内容、旁白 |
语音选择
| 语音 | 特点 | 最适合用于 |
|---|---|---|
| Kore | 清晰、专业 | 公告、通用场景(默认) |
| Puck | 友好、对话感强 | 轻松内容、访谈 |
| Charon | 深沉、权威 | 企业内容、严肃内容 |
| Fenrir | 温暖、富有表现力 | 讲故事、叙事内容 |
| Aoede | 悦耳、动听 | 教育内容、无障碍场景 |
| Zephyr | 轻柔、空灵 | 温和内容、教程 |
| Sulafat | 中性、平衡 | 纪录片、事实类内容 |
音频格式
| 规格 | 值 |
|---|---|
| 格式 | WAV(PCM) |
| 采样率 | 24000 Hz |
| 声道 | 1(单声道) |
| 位深 | 16-bit |
令牌限制
| 限制 | 类型 | 描述 |
|---|---|---|
| 8,192 | 输入 | 输入文本的最大令牌数 |
| 16,384 | 输出 | 输出音频的最大令牌数 |
输出说明
音频文件
- 格式:WAV(兼容大多数播放器)
- 单声道(单条音轨)
- 采样率:24000 Hz(广播级音质)
- 如有需要,可转换为 MP3/AAC
多说话人文件
- 单个 WAV 文件,包含多个语音
- 文件内的不同语音按时间分隔
- 使用
--speakers参数将说话人映射到语音
流式输出
- 生成过程中分块处理音频
- 脚本会显示“正在流式处理音频……”消息
- 适用于超长文本或实时应用
常见问题
“google-genai 未安装”
npm install @google/genai@latest dotenv@latest
“未找到语音名称”
- 检查语音名称的拼写
- 使用可用语音:Kore、Puck、Charon、Fenrir、Aoede、Zephyr、Sulafat
- 语音名称区分大小写
“未生成音频”
- 检查文本是否为空
- 确认文本未超过令牌限制(8,192)
- 尝试缩短文本片段
- 检查 API 配额限制
“多说话人格式错误”
- 格式:
SpeakerName:VoiceName,Speaker2:Voice2 - 用逗号分隔说话人
- 用冒号分隔说话人和语音
- 示例:
"Joe:Kore,Jane:Puck,Host:Charon"
“输出文件已存在”
- 脚本会覆盖现有文件
- 更改
--output文件名以避免冲突 - 批量生成时使用唯一名称
音频质量问题
- 检查输入文本中是否有特殊字符
- 尝试使用其他语音以改善发音
- 考虑将长文本拆分为较小片段
- 确认音频播放软件兼容
最佳实践
语音选择
- Kore:通用场景,吐字清晰
- Puck:对话感强,语气吸引人
- Charon:专业、权威
- Fenrir:富有情感,适合讲故事
- Aoede:柔和、轻声,适合无障碍场景
- Zephyr:适合教育内容,解释清晰
文本准备
- 使用自然语言和标点符号
- 用逗号和句号表示停顿
- 如有需要,将难读的词拼写出来
- 将超长文本拆分为符合逻辑的片段
- 为多说话人内容添加说话人标签
性能优化
- 对超长文本使用流式处理
- 生成较短的片段,以便更好地控制
- 使用 flash 模型加快生成速度
- 批量处理多个文件以提高效率
质量提示
- 针对内容类型测试不同语音
- 使用标点符号调整语速和节奏
- 选择语音时考虑上下文
- 最终使用前试听输出
- 多说话人内容需要清晰标注说话人
不同语音的适用场景
| 语音 | 理想使用场景 |
|---|---|
| Kore | 公告、导航、一般信息 |
| Puck | 播客、访谈、轻松内容 |
| Charon | 企业内容、新闻、正式演示 |
| Fenrir | 有声读物、故事、情感内容 |
| Aoede | 无障碍场景、教育内容、温和内容 |
| Zephyr | 教程、解释、指南 |
| Sulafat | 纪录片、事实类演示 |
相关技能
- gemini-text:生成用于 TTS 的脚本和文本
- gemini-image:创建与音频配套的视觉内容
- gemini-batch:高效处理多个 TTS 请求
- gemini-files:上传音频文件以进行处理
快速参考
# Basic
node scripts/tts.js "Your text here"
# Custom voice
node scripts/tts.js "Your text" --voice Puck --output audio.wav
# Multi-speaker
node scripts/tts.js "Joe: Hi. Jane: Hello!" --speakers "Joe:Kore,Jane:Puck"
# Streaming
node scripts/tts.js "Long text..." --stream --output long.wav
# Professional
node scripts/tts.js "Corporate announcement" --voice Charon
参考资料
- 完整的语音说明请参阅
references/voices.md - 获取 API 密钥:https://aistudio.google.com/apikey
- 文档:https://ai.google.dev/gemini-api/docs/text-to-speech
- 采样率:24000 Hz,适用于大多数应用
评论
支持 Markdown