mcpField
G
gemini-tts

gemini-tts

github.com/akrindev创意与媒体790 次安装34 周前更新
代码仓库

关于 gemini-tts

gemini-tts 是使用 Gemini TTS 模型将文本转成语音的技能,适合内容创作者及需要无障碍音频的场景。它通过脚本支持多种声音、多说话人对话和长文本流式处理。

主要功能

  1. 01文本转 WAV 音频
  2. 02多种声音可选
  3. 03生成多说话人对话
  4. 04长文本流式处理
  5. 05自定义输出目录和文件名

适用场景

  1. 01制作播客、有声书或视频旁白
  2. 02生成访谈和角色对话音频
  3. 03批量将文本转换为音频文件
  4. 04为无障碍内容制作语音

安装

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

$npx skills add https://github.com/akrindev/google-studio-skills --skill gemini-tts

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

包含的文件

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

references/
voices.md
scripts/
package-lock.json
package.json
tts.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、-mTTS 模型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

参考资料

评论

支持 Markdown