在内置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)
###############################################################################