Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions astrbot/core/provider/sources/mimo_tts_api_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,15 @@ def _build_payload(self, text: str) -> dict:
}
)

audio_params = {"format": self.audio_format}
# voice design 模型不支持 audio.voice 参数
if "voicedesign" not in self.model_name:
audio_params["voice"] = self.voice

return {
"model": self.model_name,
"messages": messages,
"audio": {
"format": self.audio_format,
"voice": self.voice,
},
"audio": audio_params,
}

async def get_audio(self, text: str) -> str:
Expand Down
33 changes: 33 additions & 0 deletions tests/test_mimo_api_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,39 @@ def test_mimo_tts_seed_text_is_not_prepended_to_assistant_content():
asyncio.run(provider.terminate())


def test_mimo_tts_voicedesign_model_omits_voice_param():
"""voice design 模型不应包含 audio.voice 参数"""
provider = _make_tts_provider(
{
"model": "mimo-v2.5-tts-voicedesign",
"mimo-tts-seed-text": "",
}
)
try:
payload = provider._build_payload("hello")
assert "voice" not in payload["audio"]
assert payload["audio"]["format"] == "wav"
finally:
asyncio.run(provider.terminate())


def test_mimo_tts_regular_model_includes_voice_param():
"""普通 TTS 模型应包含 audio.voice 参数"""
provider = _make_tts_provider(
{
"model": "mimo-v2.5-tts",
"mimo-tts-voice": "custom_voice",
"mimo-tts-seed-text": "",
}
)
try:
payload = provider._build_payload("hello")
assert payload["audio"]["voice"] == "custom_voice"
assert payload["audio"]["format"] == "wav"
finally:
asyncio.run(provider.terminate())


def test_mimo_headers_use_single_authorization_method():
assert build_headers("test-key") == {
"Content-Type": "application/json",
Expand Down
Loading