























@@ -1,5 +1,6 @@
11import type { OpenClawConfig } from "../config/types.openclaw.js";
22import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js";
3+import { resolveEffectiveTtsConfig } from "../tts/tts-config.js";
3445const TTS_PROVIDER_CONFIG_RESERVED_KEYS = new Set([
56"auto",
@@ -141,33 +142,43 @@ function addConfiguredTtsProviderIds(target: Set<string>, value: unknown): void
141142142143export function collectConfiguredSpeechProviderIds(config: OpenClawConfig): ReadonlySet<string> {
143144const configured = new Set<string>();
144-addConfiguredTtsProviderIds(configured, config.messages?.tts);
145+addConfiguredTtsProviderIds(configured, resolveEffectiveTtsConfig(config));
145146146147const agents = config.agents;
147148if (isRecord(agents) && Array.isArray(agents.list)) {
148149for (const agent of agents.list) {
149150if (isRecord(agent)) {
150-addConfiguredTtsProviderIds(configured, agent.tts);
151+if (typeof agent.id === "string") {
152+addConfiguredTtsProviderIds(
153+configured,
154+resolveEffectiveTtsConfig(config, { agentId: agent.id }),
155+);
156+} else {
157+addConfiguredTtsProviderIds(configured, agent.tts);
158+}
151159}
152160}
153161}
154162155163const channels = config.channels;
156164if (isRecord(channels)) {
157-for (const channelConfig of Object.values(channels)) {
165+for (const [channelId, channelConfig] of Object.entries(channels)) {
158166if (!isRecord(channelConfig)) {
159167continue;
160168}
161-addConfiguredTtsProviderIds(configured, channelConfig.tts);
169+addConfiguredTtsProviderIds(configured, resolveEffectiveTtsConfig(config, { channelId }));
162170if (isRecord(channelConfig.voice)) {
163171addConfiguredTtsProviderIds(configured, channelConfig.voice.tts);
164172}
165173if (isRecord(channelConfig.accounts)) {
166-for (const accountConfig of Object.values(channelConfig.accounts)) {
174+for (const [accountId, accountConfig] of Object.entries(channelConfig.accounts)) {
167175if (!isRecord(accountConfig)) {
168176continue;
169177}
170-addConfiguredTtsProviderIds(configured, accountConfig.tts);
178+addConfiguredTtsProviderIds(
179+configured,
180+resolveEffectiveTtsConfig(config, { channelId, accountId }),
181+);
171182if (isRecord(accountConfig.voice)) {
172183addConfiguredTtsProviderIds(configured, accountConfig.voice.tts);
173184}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。