feat(transcription): add Xiaomi MiMo ASR provider (mimo-v2.5-asr)
Add support for Xiaomi MiMo ASR as a third transcription backend alongside Groq and OpenAI Whisper. Xiaomi ASR uses the /v1/chat/completions endpoint with base64-encoded audio input, rather than the standard Whisper multipart upload format. Co-Authored-By:连 <lian@tangping.homes>
This commit is contained in:
committed by
Xubin Ren
co-authored by
连
parent
552ec18a3c
commit
c20ecc52d7
@@ -282,6 +282,23 @@ def test_settings_payload_exposes_openrouter_transcription_provider(
|
||||
assert providers["openrouter"]["configured"] is True
|
||||
|
||||
|
||||
def test_settings_payload_exposes_xiaomi_mimo_transcription_provider(
|
||||
tmp_path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
config_path = tmp_path / "config.json"
|
||||
config = Config()
|
||||
config.providers.xiaomi_mimo.api_key = "mimo-test"
|
||||
save_config(config, config_path)
|
||||
monkeypatch.setattr("nanobot.config.loader._current_config_path", config_path)
|
||||
|
||||
payload = settings_payload()
|
||||
|
||||
providers = {provider["name"]: provider for provider in payload["transcription"]["providers"]}
|
||||
assert providers["xiaomi_mimo"]["label"] == "Xiaomi MIMO"
|
||||
assert providers["xiaomi_mimo"]["configured"] is True
|
||||
|
||||
|
||||
def test_update_transcription_settings_writes_top_level_only(
|
||||
tmp_path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
@@ -342,6 +359,32 @@ def test_update_transcription_settings_accepts_openrouter(
|
||||
assert payload["transcription"]["provider_configured"] is True
|
||||
|
||||
|
||||
def test_update_transcription_settings_accepts_xiaomi_mimo(
|
||||
tmp_path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
config_path = tmp_path / "config.json"
|
||||
config = Config()
|
||||
config.providers.xiaomi_mimo.api_key = "mimo-test"
|
||||
save_config(config, config_path)
|
||||
monkeypatch.setattr("nanobot.config.loader._current_config_path", config_path)
|
||||
|
||||
payload = update_transcription_settings(
|
||||
{
|
||||
"provider": ["xiaomi_mimo"],
|
||||
"model": ["mimo-v2.5-asr"],
|
||||
"language": ["zh"],
|
||||
}
|
||||
)
|
||||
|
||||
saved = load_config(config_path)
|
||||
assert saved.transcription.provider == "xiaomi_mimo"
|
||||
assert saved.transcription.model == "mimo-v2.5-asr"
|
||||
assert saved.transcription.language == "zh"
|
||||
assert payload["transcription"]["provider"] == "xiaomi_mimo"
|
||||
assert payload["transcription"]["provider_configured"] is True
|
||||
|
||||
|
||||
def test_update_transcription_settings_validates_language(
|
||||
tmp_path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
|
||||
Reference in New Issue
Block a user