ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AIRI 集成 Google Gemini TTS:语音合成提供者配置、模型语音选择与实现原理

AIRI 集成 Google Gemini TTS:语音合成提供者配置、模型语音选择与实现原理 AIRI 集成 Google Gemini TTS语音合成提供者配置、模型语音选择与实现原理【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airiGoogle Gemini Audio 语音合成是 AIRI 中一个直接复用 Gemini 凭据的文本转语音TTS提供者适合已经为 AIRI 配置过 Gemini、希望同一服务商同时提供语音输出能力的用户。本文基于仓库中该功能的官方配置文档与其源码实现完整讲解从 API Key 申请、提供者配置、模型与语音选择到让 AIRI 普通响应真正使用 Gemini 发声的全流程并深入剖析其底层 API 调用与音频处理原理。为什么选择 Google Gemini 作为语音合成提供者AIRI 内置了多个语音合成提供者如 ElevenLabs、Microsoft Speech、MiniMax、本地 Kokoro 等其中 Google Geminigoogle-gemini-audio-speech走的是「复用既有凭据」的思路如果你已经在 AIRI 中配置过 Google Gemini 并持有 API Key就无需再申请一套独立的 TTS 服务凭据直接在同一服务商的生态内获得音频输出能力。该提供者被注册为text-to-speech与tts两类任务可从提供者注册表直接检索到。第一步申请 Gemini API Key登录 Google AI Studioaistudio.google.com进入 API Key 管理页面创建新的 API Key。确认你的账户/区域可以访问支持音频输出的 Gemini 模型Gemini 系列中带-tts后缀的模型。复制生成的 Key 并妥善保管后续配置中需要粘贴到 AIRI。安全警告Gemini API Key 是敏感凭据不要将其提交进版本库、不要出现在截图或日志中、不要与任何人共享。它直接决定了第三方能否以你的身份消耗 Gemini 配额。第二步在 AIRI 中配置提供者配置入口打开设置 → 提供者 → 语音合成 → Google Gemini对应源码页面 google-gemini-audio-speech.vue在表单中填写字段说明默认值apiKeyGemini API Key必填前后空白会被自动去除无baseUrlAPI 网关地址仅当使用企业网关或兼容代理时才需修改https://generativelanguage.googleapis.com/v1beta/modelGemini TTS 音频模型gemini-2.5-flash-preview-ttsvoice预置音色Koretemperature语音生成的随机性控制范围 02、步进 0.11.0Base URL 的约定从 google-gemini-audio-speech/index.ts 可以看到配置 schema 中apiKey必填、baseUrl可选且有默认值。除非你正在使用企业网关或兼容代理例如需要统一出口、审计或自建中转的场景否则应保持界面上的默认 Base URL 不变。底层对 Base URL 做了归一化处理normalizeBaseUrl会先去除首尾空白再保证以/结尾value.endsWith(/) ? value : \${value}/因此无论是带尾斜杠还是不带尾斜杠的地址都能被正确拼接。第三步模型与音色选择配置完成后提供者会通过listModels与listVoices两个扩展方法向设置界面暴露可选项页面在挂载时会调用loadModelsForConfiguredProviders、fetchModelsForProvider以及speechStore.loadVoicesForProvider(providerId)拉取这些数据见 google-gemini-audio-speech.vue。语音列表最终被写入availableVoices[providerId]见 speech.ts供播放场与语音选择器使用。支持的 TTS 模型源码中注册了以下三个模型index.tsgemini-2.5-flash-preview-tts默认gemini-2.5-pro-preview-ttsgemini-3.1-flash-tts-preview支持的音色提供者内置了 30 种预置音色每种都附带风格描述可在界面中直接按需挑选音色风格音色风格ZephyrBrightAlgenibGravellyPuckUpbeatRasalgethiInformativeCharonInformativeLaomedeiaUpbeatKore默认FirmAchernarSoftFenrirExcitableAlnilamFirmLedaYouthfulSchedarEvenOrusFirmGacruxMatureAoedeBreezyPulcherrimaForwardCallirrhoeEasy-goingAchirdFriendlyAutonoeBrightZubenelgenubiCasualEnceladusBreathyVindemiatrixGentleIapetusClearSadachbiaLivelyUmbrielEasy-goingSadaltagerKnowledgeableAlgiebaSmoothSulafatWarmDespinaSmoothErinomeClearTemperature 参数在提供者设置的进阶区域中temperature用于控制语音生成的随机性取值越低语音越稳定可预测越高越富有表现力见 google-gemini-audio-speech.vue。它仅在调用时显式传入才生效未设置时不会写入请求体。第四步验证配置是否可用在提供者设置页选择模型与一个可用音色。使用同页的Playground播放场输入一段短文本页面默认文本为 Hello! This is a test of the Google Gemini Speech.并触发合成确认能正常播放音频。验证逻辑由validateConfig校验器提供只要apiKey非空即为「有效」对应错误信息为API Key is required.见 index.ts。若校验失败设置页会显示错误提示并提供「强制继续」的选项。此外provider-definitions.test.ts 中的测试用例会遍历全部已注册提供者并断言getDefinedProvider(google-gemini-audio-speech)有定义保证该提供者在每次构建中都能被正确注册。第五步让 AIRI 的普通响应使用 Gemini 发声仅完成 Playground 测试并不会让日常对话自动使用 Gemini 发声。要让 AIRI 在普通响应中调用该提供者还需要打开设置 → 模块 → 语音合成。将语音合成提供者切换为Google Gemini并选择前面验证过的音频模型与音色。这一步将 Gemini 从「仅在设置页可测试」提升为「模块级默认 TTS」此后 AIRI 的普通文本响应才会经由该提供者合成语音。底层实现原理一次 Gemini TTS 请求的全过程该提供者的核心实现位于 google-gemini-audio-speech/index.ts它没有使用 OpenAI 兼容的/audio/speech接口而是直接对接 Gemini 的generateContent端点调用链如下构造请求向{baseUrl}models/{model}:generateContent发送POST请求认证头为x-goog-api-key: {apiKey}。请求体contents: [{ parts: [{ text: input }] }]承载待合成文本generationConfig.responseModalities: [AUDIO]声明只返回音频speechConfig.voiceConfig.prebuiltVoiceConfig.voiceName指定音色缺省时使用Kore可选携带temperature。响应解析从candidates[0].content.parts中找出携带inlineData的片段取其inlineData.dataBase64 编码的 PCM16 原始音频。音频转换decodeBase64将 Base64 还原为字节数组再经toWavFromPCM16(audio, 24000)来自proj-airi/audio/encoding封装为24 kHz 采样率的 WAV流最终以audio/wav响应返回给上层语音管道。也就是说Gemini 返回的是未封装的裸 PCM 数据AIRI 负责在其上补充 WAV 头、统一音频格式从而与后端既有的音频播放链路无缝对接。理解这一点有助于排查「请求成功但无声音」类问题——声音能否播放最终取决于所选模型是否真的在AUDIO模态下返回了内联音频数据。故障排查现象排查方向配置校验/请求失败检查 API Key 是否正确、账户所在区域是否可用 Gemini TTS、网络连接是否可达generativelanguage.googleapis.com请求成功但无声音确认所选模型确实支持音频输出应使用-tts后缀的模型可在 Playground 切换其他模型对比验证提示API Key is required.apiKey字段为空返回提供者设置页填写修改了 Base URL 后无法访问确认网关/代理地址可访问并留意normalizeBaseUrl会自动补齐尾斜杠如果确认以上均无误可在设置页重新触发一次 Playground 合成观察播放结果与错误提示通常能快速定位是凭据问题、区域问题还是模型能力问题。【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表