AIRI 接入 Google Gemini TTS 语音合成:配置、音色选择与源码级原理

发布时间:2026/9/12 1:57:09
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/airi本文基于 AIRI 仓库中的 Google GeminiTTS配置文档完整讲解如何在 AIRI 中接入 Google Gemini 音频语音合成能力。读完本文你将掌握 API Key 的获取与安全存放、AIRI「语音合成」面板中的完整配置流程、模型与音色的选取方法、验证与排错思路并通过源码理解一次 Gemini TTS 请求从文本到 WAV 音频的完整数据链路。本文适合已在使用 AIRI 并希望为角色赋予「开口说话」能力的开发者也适合需要把 Gemini TTS 接入自建语音链路的读者。为什么选择 Google Gemini 做语音合成Google Gemini 音频语音合成会复用你已经配置的 Gemini 凭据与支持音频输出的模型。正如官方文档所述如果你已经在 AIRI 中配置了 Google Gemini 对话能力并希望在同一服务商下直接获得音频输出那么选择此项可以让凭据管理和计费统一在一条链路上无需再引入额外的 TTS 供应商。从仓库源码看该能力在 AIRI 中被实现为一个独立的语音提供方google-gemini-audio-speech声明支持的tasks为text-to-speech与tts注册入口位于 provider-inference 的提供方索引其完整实现在 google-gemini-audio-speech/index.ts。界面侧对应的设置页为 google-gemini-audio-speech.vue多语言文案位于 settings.yaml。第一步获取 Gemini API Key打开 Google AI Studioaistudio.google.com登录后进入 API Key 页面创建密钥。确认当前账户所在地区与配额允许调用支持音频输出的 Gemini 模型。复制生成的 API Key 并妥善保存。::: warning API Key 安全 不要将 Gemini API Key 提交到仓库、截图或发送给他人。它等同于账户凭据一旦泄露可能产生费用风险。 :::AIRI 侧的校验逻辑也印证了这一点提供方配置的validateConfig校验器只做一件事——检查apiKey是否非空为空时直接返回API Key is required.错误见 index.ts。第二步在 AIRI 中配置语音合成进入设置 → 服务商 → 语音合成 → Google Gemini填写 Gemini API Key。保留界面默认 Base URL除非你使用企业网关或兼容代理才需要替换为自定义网关地址。配置项与源码中的默认值设置页背后对应GoogleGeminiSpeechProviderConfig配置结构包含五个字段见 google-gemini-audio-speech.vue配置项默认值说明apiKey无必填Gemini API KeybaseUrlhttps://generativelanguage.googleapis.com/v1beta/Gemini 生成式语言 API 的 v1beta 端点带尾斜杠规范化处理见 index.tsmodelgemini-2.5-flash-preview-tts语音合成模型可下拉选择voiceKore预置音色名在「发声」中启用temperature1.0合成随机性范围 02步长 0.1其中temperature由FieldRange滑块控制取值 02、步长 0.1UI 描述为「控制语音生成的随机性值越低越稳定可预测值越高越有表现力」见 google-gemini-audio-speech.vue。注意temperature只有在显式传入时才被写入请求体body.temperature ! undefined时才会附加因此不设置时服务端使用默认行为。支持的三款 TTS 模型AIRI 内置的模型清单在源码中以googleGeminiTtsModels常量定义见 index.ts通过listModels暴露给界面下拉框gemini-2.5-flash-preview-tts默认gemini-2.5-pro-preview-ttsgemini-3.1-flash-tts-preview这些模型均为「Gemini API text-to-speech」类型能力标记为text-to-speech。选择时请以界面实际列出为准并确认你的账户可访问对应模型。30 款内置音色AIRI 内置了 30 款 Gemini 预置音色及各自的风格描述见 index.ts通过listVoices提供给「发声」设置音色风格音色风格ZephyrBrightPuckUpbeatCharonInformativeKoreFirmFenrirExcitableLedaYouthfulOrusFirmAoedeBreezyCallirrhoeEasy-goingAutonoeBrightEnceladusBreathyIapetusClearUmbrielEasy-goingAlgiebaSmoothDespinaSmoothErinomeClearAlgenibGravellyRasalgethiInformativeLaomedeiaUpbeatAchernarSoftAlnilamFirmSchedarEvenGacruxMaturePulcherrimaForwardAchirdFriendlyZubenelgenubiCasualVindemiatrixGentleSadachbiaLivelySadaltagerKnowledgeableSulafatWarm所有音色均标记为语言auto可兼容上述全部三款模型compatibleModels覆盖googleGeminiTtsModels即音色选择不依赖具体模型。若不显式指定音色服务端请求默认使用Kore见 index.ts。第三步验证配置并试听Ping API点击此按钮测试网络是否连通以及 API Key 是否填写正确。选择模型和音色测试成功后选择界面列出的支持语音输出的模型再到设置 → 发声启用对应音色。输入短文本试听确认音频可正常播放。设置页加载时会自动完成三件事见 google-gemini-audio-speech.vue拉取已配置提供方的模型列表loadModelsForConfiguredProviders拉取该提供方的模型目录fetchModelsForProvider拉取该提供方的音色目录loadVoicesForProvider音色列表缓存在 speech store 的availableVoices中。试听功能由SpeechPlayground组件承载默认试听文本为Hello! This is a test of the Google Gemini Speech.点击试听后页面调用handleGenerateSpeech→speechStore.speech()最终经由xsai/generate-speech的generateSpeech完成请求见 speech store。此外设置页内置了提供方校验结果提示校验失败会展示红色Alert并允许通过「continueAnyway」按钮强制继续校验成功则展示绿色成功提示见 google-gemini-audio-speech.vue。::: tip 发声设置要点 在 AIRI 中「发声」是语音输出的总开关。只有同时选中了提供方、模型、音色三项speech store 的configured计算属性要求hasModel hasVoice同时为真见 speech.ts语音链路才会判定为已就绪。相关选择会持久化在settings/speech/active-provider、settings/speech/active-model、settings/speech/voice等本地存储键中。 :::深入一次 Gemini TTS 请求的完整数据链路AIRI 并没有直接使用 OpenAI 兼容的音频端点而是为 Gemini 实现了专用的createAudioFetch请求适配器见 index.ts整个流程可以拆解为四个阶段1. 请求构造。适配器解析调用方传入的input、model、voice、temperature缺input或缺model都会直接抛错。随后向${baseUrl}models/${model}:generateContent发起POST请求认证方式不是 Bearer Token而是请求头x-goog-api-key携带 API Key。2. 生成参数。请求体包含contents把输入文本包装为单个 part 的text字段generationConfig.responseModalities: [AUDIO]显式要求模型以音频形式响应generationConfig.speechConfig.voiceConfig.prebuiltVoiceConfig.voiceName指定音色名缺省为Kore可选temperature。3. 响应解析。从candidates[0].content.parts中找到携带inlineData的 part取出 base64 编码的音频数据若响应中没有音频数据则抛出Gemini TTS response missing audio data。4. PCM16 → WAV 转码。Gemini 返回的inlineData是 24kHz 的 PCM16 原始采样数据AIRI 通过toWavFromPCM16(decodeBase64(audio), 24000)将其封装为标准 WAV见 index.ts。该转换函数位于 packages/audio/src/encoding/wav.ts会写入标准的 RIFF/WAVE 头采样率 24000、单声道、16 位量化测试用例在 wav.test.ts 中验证了 WAV 头的采样率字段确实为 24000。也就是说AIRI 会把 Gemini 的音频输出统一规格化为24kHz / 单声道 / PCM16 的 WAV 数据再交给上层播放这保证了不同 TTS 供应商的音频在 AIRI 的统一语音管线中能被一致地消费。排查指南验证失败时按以下顺序逐项检查API Key 是否正确确认粘贴无多余空格、未串行、未过期源码校验器只做非空检查真实凭据是否有效需要由 Ping / 试听请求来确认。账户地区与配额Gemini 模型的可用性与计费受账户地区影响部分区域可能无法访问音频输出模型。网络连通性确认能够访问generativelanguage.googleapis.com企业代理、防火墙或自定义 Base URL 拼写错误都会导致失败。请求成功但无声音确认所选模型确实支持音频输出务必选择*tts*系列模型并确认在「发声」中已启用音色同时检查系统音量与音频输出设备。自定义 Base URL 场景若使用企业网关或兼容代理请确认网关完整透传x-goog-api-key头并兼容generateContent接口且 URL 以/结尾或由 AIRI 自动补全。相关文件索引Google GeminiTTS配置文档本文对应的官方配置指南google-gemini-audio-speech/index.ts提供方定义、模型/音色清单、请求适配器与校验器google-gemini-audio-speech.vue设置页 UI模型下拉、温度滑块、试听台speech.ts语音 store负责音色目录加载、发声状态与generateSpeech调用wav.tsPCM16 到 WAV 的转码实现settings.yaml提供方的中文显示名称与描述【免费下载链接】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),仅供参考