dairiki

在扫地机器人固件 Valetudo 上使用米家原厂语音包

  •  
  •   dairiki · 1h 48m ago · 92 views

    https://dairiki.ren/posts/valetudo-voice-pack/ (作者为本人)

    收藏一下原厂的语音包文件,石头 S5 老机器了,说不定云端功能什么时候突然下线。。。 不太确定可不可以直接在 V2 共享下载方式,详情可参见以上链接完整文章。以下为节选:


    1. 准备一台 root 过的安卓机和一个抓包工具。我没有深度探索其他方案,根据 HTTP Toolkit 的一篇自荐文章选择了这个工具。或许亦可以使用 mitmproxy 并手动安装系统证书。

    2. 给扫地机器人恢复原厂固件,重新在米家 App 中绑定并导航至语音包配置界面。全程观察抓包日志,锁定类似https://cnbj2.fds.api.xiaomi.com/rubys/app/voice-pkg/info.en?time=1788198895673的请求 URL。该请求会返回一个 JSON,里面包含了所有可用语音包文件(文件名扩展为 pkg)的下载链接。

    3. 为快速下载所有语音包的 pkg 文件,我编写了以下 Python 脚本:

    import httpx
    
    url = "https://cnbj2.fds.api.xiaomi.com/rubys/app/voice-pkg/info.en?time=1788198895673"
    
    resp = httpx.get(url)
    
    print(resp.text)
    
    for voice in resp.json()["voice_list"]:
        try:
            voice_pkg_url: str = voice["voice_pkg_url"]
            voice_md5_hash = voice["voice_pkg_md5"]
            resp = httpx.get(voice_pkg_url, timeout=45)
            filename = voice_pkg_url.split("/")[-1]
            with open(filename, "wb") as voice_file:
                voice_file.write(resp.read())
            print(f"Downloaded {voice["voice_title"]} as {filename}")
        except KeyError:
            print(f"{voice["voice_title"]} is not downloadable, skipping")
    

    如后续 API 有变更,URL 发生改变,直接修改该脚本即可。脚本将自动将所有可下载的语音包下载到工作目录。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3626 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:39 · PVG 08:39 · LAX 17:39 · JFK 20:39
    ♥ Do have faith in what you're doing.