欢迎光临散文网 会员登陆 & 注册

Amadeus复刻计划(App篇 一)

2022-10-07 21:58 作者:寂灭光-  | 我要投稿

原仓库地址:https://github.com/Yink/Amadeus

前言:原作者六年前开发完成并开源了该项目并于四年前更新了中文支持,可惜的是该项目此后一直没有更新,原项目所使用的安卓版本与语音识别支持现在都无法使用了(语音识别是谷歌的),因此笔者决定重置该项目,并增改一些功能,与此同时也能学习一些安卓相关知识,此是前提。

简单介绍下该软件,其创作来源为《命运石之门》中的牧濑红莉栖的AI复制——Amadeus,该软件可以识别用户的声音指令并进行简单回复。详细内容可以看站内视频转载(BV1iW411G7Wr

由于本人是安卓开发的初学者,打算一步一步来,本篇博文一方面记录自己开发过程中所遇到的问题,另一方面或许会给后来者以些微帮助。

首先需要解决的问题是成功运行并调试该源代码

由于该项目年代久远,所使用的SDK与gradle版本均不受最新版Android Studio支持,简单的修改build.gradle中的文件数据并没有使之正常运作,笔者在查询解决方法多次无果后,决定使用最愚蠢而有效的方式——使用Android studio建立空白项目(empty project)并逐文件替换activity与静态文件,从报错中逐步替换所引入的过时的库,希望能正常运行。

所幸该项目并没有想象中的那么复杂,在替换掉一些引入的函数,更改了部分静态文件后终于运行成功。

部分解决方法:

  1.   将所有android.support.v4/v7.X 等方法替换成androidx.support.X, 因为该库在近年做了迁移,原方法不可用(此外还有部分方法有问题,根据as的报错进行相应处理即可,最终目标是没有error,warning是可以接受的)

  2. 创建空白项目时,Android studio(此后简称AS)会在res文件夹下增加部分如背景图、软件默认图标等xml,该文件会与原项目中的静态文件冲突,删除同名默认文件即可解决该问题

  3. 原项目中似乎根据用户手机像素的不同设置了不同尺寸的界面图标,保存在drawable文件夹中,其中.webp图片格式会导致AS报错,查询解决方法无果后,笔者直接将该类型文件删除了,运行后似乎没有不良影响

  4. 因为记录时已经过了几天,笔者有些小问题的解决方法忘却了,不过基本思路就是从launch.activity出发,顺着代码逻辑找寻其他组件,并将报错的error解决,个人认为复刻旧项目的难点在于寻找合适的SDK与gradle版本,既然本项目直接替换解决了此问题,那其他的小问题也就不足为虑了

待解决问题:

  1. 原项目使用的原生语音识别模块需要谷歌服务的支持,因为众所周知的原因,国内手机无法使用该服务,因此需要替换成别的模块,此处较为复杂,笔者打算先梳理整个项目的逻辑再进行修改

  2. 其实问题一中的谷歌服务问题在作者打包好的apk文件可以通过下载”谷歌搜索“软件并挂梯子解决,但笔者更改后的项目中,甚至无法识别到手机本身的录音设备(SpeechRecgonizer), 而且getPackageManager()方法也无法获取到本机全部的应用(借以检测谷歌搜索是否安装),如有大佬不吝赐教,不胜感激

  3. 功能增改问题:原项目的语音识别交互基本停留在大量if语句与从游戏中提取的角色语音上,而今年来发展的NLP与语音生成技术已经相对完善,个人打算先将部分功能以api的形式部署上去,可能需要对项目进行大幅的改造

  4. App篇可能不是完整的

大概就这样吧,放几张示例图(原项目的)



Amadeus复刻计划(App篇 一)的评论 (共 条)

分享到微博请遵守国家法律