fix(claw): handle OpenClaw TTS provider rename from "edge" to "microsoft"

OpenClaw renamed the "edge" TTS provider to "microsoft"
(openclaw/openclaw#56220). The migration tool only checked
providers.edge / tts.edge, silently finding nothing when the
source config used the new name.

Check both "edge" and "microsoft" provider keys when reading TTS
config. Normalize "microsoft" back to "edge" in the output since
Hermes still uses the original name.

Refs #7847
This commit is contained in:
SHL0MS 2026-04-11 13:13:14 -04:00
parent af9caec44f
commit b7e4760a8f

View file

@ -1324,8 +1324,9 @@ class Migrator:
tts_data: Dict[str, Any] = {}
provider = tts.get("provider")
if isinstance(provider, str) and provider in ("elevenlabs", "openai", "edge"):
tts_data["provider"] = provider
if isinstance(provider, str) and provider in ("elevenlabs", "openai", "edge", "microsoft"):
# OpenClaw renamed "edge" to "microsoft"; Hermes still uses "edge"
tts_data["provider"] = "edge" if provider == "microsoft" else provider
# TTS provider settings live under messages.tts.providers.{provider}
# in OpenClaw (not messages.tts.elevenlabs directly)
@ -1374,9 +1375,9 @@ class Migrator:
tts_data["openai"] = oai_settings
edge_tts = (
(providers.get("edge") or {})
if isinstance(providers.get("edge"), dict) else
(tts.get("edge") or {})
(providers.get("edge") or providers.get("microsoft") or {})
if isinstance(providers.get("edge"), dict) or isinstance(providers.get("microsoft"), dict) else
(tts.get("edge") or tts.get("microsoft") or {})
)
if isinstance(edge_tts, dict):
edge_voice = edge_tts.get("voice")