Amadeus復(fù)刻計(jì)劃(App篇 一)
原倉(cāng)庫(kù)地址:https://github.com/Yink/Amadeus
前言:原作者六年前開發(fā)完成并開源了該項(xiàng)目并于四年前更新了中文支持,可惜的是該項(xiàng)目此后一直沒有更新,原項(xiàng)目所使用的安卓版本與語音識(shí)別支持現(xiàn)在都無法使用了(語音識(shí)別是谷歌的),因此筆者決定重置該項(xiàng)目,并增改一些功能,與此同時(shí)也能學(xué)習(xí)一些安卓相關(guān)知識(shí),此是前提。
簡(jiǎn)單介紹下該軟件,其創(chuàng)作來源為《命運(yùn)石之門》中的牧瀨紅莉棲的AI復(fù)制——Amadeus,該軟件可以識(shí)別用戶的聲音指令并進(jìn)行簡(jiǎn)單回復(fù)。詳細(xì)內(nèi)容可以看站內(nèi)視頻轉(zhuǎn)載(BV1iW411G7Wr)
由于本人是安卓開發(fā)的初學(xué)者,打算一步一步來,本篇博文一方面記錄自己開發(fā)過程中所遇到的問題,另一方面或許會(huì)給后來者以些微幫助。
首先需要解決的問題是成功運(yùn)行并調(diào)試該源代碼
由于該項(xiàng)目年代久遠(yuǎn),所使用的SDK與gradle版本均不受最新版Android Studio支持,簡(jiǎn)單的修改build.gradle中的文件數(shù)據(jù)并沒有使之正常運(yùn)作,筆者在查詢解決方法多次無果后,決定使用最愚蠢而有效的方式——使用Android studio建立空白項(xiàng)目(empty project)并逐文件替換activity與靜態(tài)文件,從報(bào)錯(cuò)中逐步替換所引入的過時(shí)的庫(kù),希望能正常運(yùn)行。
所幸該項(xiàng)目并沒有想象中的那么復(fù)雜,在替換掉一些引入的函數(shù),更改了部分靜態(tài)文件后終于運(yùn)行成功。
部分解決方法:
? 將所有android.support.v4/v7.X 等方法替換成androidx.support.X, 因?yàn)樵搸?kù)在近年做了遷移,原方法不可用(此外還有部分方法有問題,根據(jù)as的報(bào)錯(cuò)進(jìn)行相應(yīng)處理即可,最終目標(biāo)是沒有error,warning是可以接受的)
創(chuàng)建空白項(xiàng)目時(shí),Android studio(此后簡(jiǎn)稱AS)會(huì)在res文件夾下增加部分如背景圖、軟件默認(rèn)圖標(biāo)等xml,該文件會(huì)與原項(xiàng)目中的靜態(tài)文件沖突,刪除同名默認(rèn)文件即可解決該問題
原項(xiàng)目中似乎根據(jù)用戶手機(jī)像素的不同設(shè)置了不同尺寸的界面圖標(biāo),保存在drawable文件夾中,其中.webp圖片格式會(huì)導(dǎo)致AS報(bào)錯(cuò),查詢解決方法無果后,筆者直接將該類型文件刪除了,運(yùn)行后似乎沒有不良影響
因?yàn)橛涗洉r(shí)已經(jīng)過了幾天,筆者有些小問題的解決方法忘卻了,不過基本思路就是從launch.activity出發(fā),順著代碼邏輯找尋其他組件,并將報(bào)錯(cuò)的error解決,個(gè)人認(rèn)為復(fù)刻舊項(xiàng)目的難點(diǎn)在于尋找合適的SDK與gradle版本,既然本項(xiàng)目直接替換解決了此問題,那其他的小問題也就不足為慮了
待解決問題:
原項(xiàng)目使用的原生語音識(shí)別模塊需要谷歌服務(wù)的支持,因?yàn)楸娝苤脑?,?guó)內(nèi)手機(jī)無法使用該服務(wù),因此需要替換成別的模塊,此處較為復(fù)雜,筆者打算先梳理整個(gè)項(xiàng)目的邏輯再進(jìn)行修改
其實(shí)問題一中的谷歌服務(wù)問題在作者打包好的apk文件可以通過下載”谷歌搜索“軟件并掛梯子解決,但筆者更改后的項(xiàng)目中,甚至無法識(shí)別到手機(jī)本身的錄音設(shè)備(SpeechRecgonizer), 而且getPackageManager()方法也無法獲取到本機(jī)全部的應(yīng)用(借以檢測(cè)谷歌搜索是否安裝),如有大佬不吝賜教,不勝感激
功能增改問題:原項(xiàng)目的語音識(shí)別交互基本停留在大量if語句與從游戲中提取的角色語音上,而今年來發(fā)展的NLP與語音生成技術(shù)已經(jīng)相對(duì)完善,個(gè)人打算先將部分功能以api的形式部署上去,可能需要對(duì)項(xiàng)目進(jìn)行大幅的改造
App篇可能不是完整的
大概就這樣吧,放幾張示例圖(原項(xiàng)目的)



