让任意国产 Android 的语音助手支持控制智能家居等自定义指令 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w568w
V2EX    Android

让任意国产 Android 的语音助手支持控制智能家居等自定义指令

  •  
  •   w568w 198 天前 3078 次点击
    这是一个创建于 198 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,最近换了 iQOO ,发现 OriginOS 5 这个「蓝心小 V 」基本是半残废,只能控制自家的 VIVO 智慧生活的设备。而我的家居全在米家上,一个也添加不进来。

    怎么才能通过语音控制米家的设备呢?

    我想了一个奇巧淫技:Android 有无障碍服务,可以读取任意应用的内容,那监听语音助手界面上实时识别出来的文字,遇到关键词就打断后续识别执行自定义的指令,不就可以了?

    于是我就写了个简单的 App ,会在后台长时运行无障碍服务,识别到我说「开灯」或者「关灯」的时候,就会退出语音助手,然后调用我的 HomeAssistant (接入了米家)的 RESTful API ,从而实现开关灯。

    我测试了一下,很稳定,可以无感识别。启用无障碍服务后,在锁屏界面也可以正常监听语音助手。

    项目在这里: https://github.com/w568w/VoiceTrigger


    目前还是个很简单的 demo ,安装完连界面都没有,默认是控制我家的灯(当然 secret 没传到仓库里,哈哈)。

    需要定制或者了解原理的朋友可以直接看服务实现代码。自己简单修改一下请求的 API 。

    理论上也可以适配到其他 ROM 的语音助手上。之前研究过 MIUI 的,应该可以用类似的方法实现。

    8 条回复    2025-06-10 19:22:24 +08:00
    schinnerarnoldo5
        1
    schinnerarnoldo5  
       198 天前
    很强
    hanguofu
        2
    hanguofu  
       198 天前
    请问对于没有 语音助手 的其它 ROM/手机 ,应该怎样识别出文字呢 ?
    w568w
        3
    w568w  
    OP
       198 天前
    @hanguofu 这是另一个话题了。我需求的前提就是假设用的是有语音助手的国产 ROM 。

    没有语音助手的话,那多半是第三方 ROM 。这种情况下先看看语音唤醒 DSP 是否支持,如果支持的话直接刷 Google Assistant 就行了;否则就只能自己用第三方的语音助手了,比如小爱同学 App 。
    ajan
        4
    ajan  
       197 天前
    牛!
    shunia
        5
    shunia  
       197 天前
    这么天才的想法,那是不是可以直接做一个语音助手 app ?
    w568w
        6
    w568w  
    OP
       197 天前
    @shunia 倒是可以做一个类似 iOS 那样自定义语音快捷指令的平台
    w568w
        8
    w568w  
    OP
       170 天前
    @WilliamDGH 这个大概安装上也没法用哦,主要是实现思路分享 代码里都是直接硬编码我自家灯的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5170 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 07:36 PVG 15:36 LAX 23:36 JFK 02:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86