一、前置说明
- NekoTTS:MIT 协议,免费可商用,离线中文 TTS,标准 Android TTS 引擎接口
- 环境:Android 13 AOSP 源码环境,Linux 编译环境
- 目标:将 NekoTTS 预置为系统应用,并设为系统默认 TTS 引擎
二、下载 NekoTTS APK
- 进入 NekoTTS GitHub 发布页https://github.com/siva-sub/NekoTTS/releases
- 下载最新稳定版 APK(文件名类似
app-universal-release.apk) - 重命名为
NekoTTS.apk
三、在 AOSP 中创建应用目录
-
进入 AOSP 预置应用目录,执行命令 bash
运行
cd 你的AOSP根目录/vendor/你的产品目录/apps/ mkdir -p NekoTTS cd NekoTTS -
将下载好的
NekoTTS.apk放入此目录
四、创建 Android.bp 编译脚本
在 NekoTTS 目录下新建 Android.bp,内容如下:
json
android_app_import {
name: "NekoTTS",
apk: "NekoTTS.apk",
// 预置到 product 分区,商用合规
product_specific: true,
// 系统应用优先级
privileged: true,
// 兼容系统 API
platform_apis: true,
// 启用 dex 优化
dex_preopt: {
enabled: true,
},
}
五、修改 device.mk 加入编译
打开你的设备配置文件device/厂商名/产品名/device.mk添加以下内容:
makefile
# 编译打包 NekoTTS 到系统
PRODUCT_PACKAGES += NekoTTS
# 系统默认 TTS 引擎包名
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
ro.tts.default.engine=com.sivasubramanian.neko.tts
# 确保系统 TTS 服务启用
PRODUCT_PACKAGES += TtsService
六、配置系统默认 TTS 引擎(永久生效)
-
打开文件 plaintext
frameworks/base/packages/SettingsProvider/res/values/defaults.xml -
添加 / 修改以下配置 xml
<!-- 默认 TTS 引擎 --> <string name="def_tts_engine" translatable="false">com.sivasubramanian.neko.tts</string> <!-- 默认语言 zh-CN --> <string name="def_tts_default_lang" translatable="false">zh-CN</string>
七、添加默认权限(免用户授权)
新建 / 打开文件:vendor/你的产品目录/etc/default-permissions/neko_tts_permissions.xml内容:
xml
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<privapp-permissions package="com.sivasubramanian.neko.tts">
<permission name="android.permission.INTERNET"/>
<permission name="android.permission.READ_EXTERNAL_STORAGE"/>
<permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</privapp-permissions>
<default-access for-package="com.sivasubramanian.neko.tts"
permission="android.permission.RECORD_AUDIO"
granted="true"/>
</permissions>
并在 device.mk 中加入:
makefile
PRODUCT_COPY_FILES += \
vendor/你的产品目录/etc/default-permissions/neko_tts_permissions.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/default-permissions/neko_tts_permissions.xml
八、编译系统镜像
执行编译命令:
bash
运行
source build/envsetup.sh
lunch 你的产品型号
make installclean
make -j$(nproc)
九、刷机验证
- 刷入编译好的 system + product 镜像
- 进入系统查看设置:设置 → 无障碍 → 文字转语音输出 → 默认引擎为 NekoTTS
- 中文离线合成直接可用,无需下载语音包
十、测试 TTS 是否正常
使用简单 APP 代码测试:
java
运行
TextToSpeech tts = new TextToSpeech(this, status -> {
if (status == TextToSpeech.SUCCESS) {
// 设置中文
tts.setLanguage(Locale.SIMPLIFIED_CHINESE);
// 播放语音
tts.speak("你好,这是 Android 13 内置的 NekoTTS 中文语音", TextToSpeech.QUEUE_FLUSH, null);
}
});
十一、商用合规说明
- NekoTTS 采用 MIT 开源协议
- 可免费商用、闭源分发、无专利风险
- 无需开源固件源码,无 GPL 传染风险
- 内置时保留原作者声明即可(APK 内部已包含)