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

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐