在內置Google GMS服務的設備中,可以正常使用TTS,并且可以聯網下載多國的語音包。然而,對于未通過GMS認證,只能使用基礎的TTS英語播報,而且聯網后是無法下載語音包的,會提示需要google service。本文基于以上使用場景,首先,通過apktool反編譯googletts.google-speech.apk;其次,獲取apk內部的下載鏈接,下載對應的語音包,并且預置進對應的資源文件夾中;再次,通過apktool重新打包apk;最后,因為重新打包沒有簽名,無法正常安裝,通過平臺編譯具有平臺簽名的apk,集成進系統正常使用。
1.下載TTS
谷歌文字轉語音引擎TTS app下載v20250529.00
2.搭建apktool
Apktool Install Guide
3.反編譯TTS
將第1步下載的apk通過以下指令反編譯,放置目錄output
sudo apktool d googletts.google-speech.apk -o output
4.下載語音包
從output/assets/superpacks_manifest.json中獲取各類語音包的下載路徑。
比如阿拉伯語,對應ar-xa,搜索即可獲得下載路徑:
https://dl.google.com/android/tts/v26/ar-xa/ar-xa-x-multi-r44.zvoice
下載后得到ar-xa-x-multi-r44.zvoice
5.將語音包預置到指定目錄
從反編譯的資源可以看到,谷歌TTS安裝包只默認集成了英語語音包
output/assets/voices/en-us
將阿拉伯語語音包ar-xa-x-multi-r44.zvoice預置進新建的文件夾output/assets/voices/ar-xa中
6.重新打包apk
通過以下指令將
sudo apktool b output/ -o test.apk
7.系統簽名
將重新打包的apk通過平臺編譯,集成進系統
Android.mk
LOCAL_PATH := $(my-dir)###############################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := GoogleTTS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_SRC_FILES := test.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_ENFORCE_USES_LIBRARIES := false
include $(BUILD_PREBUILT)
###############################################################################