# TTS-TFLite **Repository Path**: xulei8820/TTS-TFLite ## Basic Information - **Project Name**: TTS-TFLite - **Description**: 安卓离线中文TTS引擎,在TensorflowTTS基础上开发,TFLite模型应用。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2026-06-14 - **Last Updated**: 2026-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TTS-TFLite 离线中文语音合成 [![Gitee star](https://gitee.com/xulei8820/TTS-TFLite/badge/star.svg?theme=dark)](https://gitee.com/xulei8820/TTS-TFLite/stargazers) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) 基于 Java + TensorFlow Lite 的离线中文语音合成(TTS)Android 应用,同时可作为系统 TTS 引擎使用。 ## 项目简介 TTS-TFLite 是一款面向 Android 平台的离线中文语音合成应用,无需联网即可将文本转换为自然语音。项目基于 TensorFlow Lite 推理框架,支持 FastSpeech2 与 Tacotron2 两种语音合成模型,并内置知识库系统用于多音字消歧等场景。应用还可注册为 Android 系统 TTS 服务,供其他应用直接调用。 ## 功能特性 - **完全离线**:无需网络,本地推理合成语音 - **双模型支持**: - **FastSpeech2**:速度快,适合中端以上设备,支持语速/能量/音高调节 - **Tacotron2**:音质更优,对性能要求较高 - **知识库系统**:内置5类基础知识库(多音字、古音、诗句、计量单位、英文映射),支持网络同步、JSON 导入导出,可自定义新建/启用/禁用 - **系统 TTS 引擎**:注册为 Android 系统 TTS 服务,可供其他应用调用 - **SplashScreen 骨架屏**:启动时显示骨骼加载动画,后台异步加载模型 - **设置中心**:模型切换、语速/能量/音高控制、推理线程数、模型精度、屏幕旋转开关 - **合成记录**:自动缓存每次合成的音频,支持列表浏览、播放、单条删除 - **分页加载**:缓存列表默认 20 条/页,上拉加载更多,下拉刷新 - **横屏适配**:全部页面均支持横屏布局(含设置中心、知识库管理、条目管理) - **Hawk 持久化**:配置通过 Hawk 加密存储,替代 SharedPreferences ## 效果截图 | 启动页 | 主页面 | |:---:|:---:| | ![SplashScreen](images/image1.jpg) | ![MainActivity](images/image2.jpg) | | 朗读文本 | 合成记录 | |:---:|:---:| | ![Speak](images/image3.jpg) | ![CacheList](images/image4.jpg) | | 设置中心 | 知识库管理 | |:---:|:---:| | ![Settings](images/image5.jpg) | ![Knowledge](images/image6.jpg) | | 条目管理 | 横屏布局 | |:---:|:---:| | ![KnowledgeEntries](images/image7.jpg) | ![Landscape](images/image8.jpg) | ## 界面流程 ``` SplashActivity (骨架屏加载模型) └──→ MainActivity (文本输入 + 朗读/停止 + 缓存列表) ├──→ SettingsActivity (模型选择 + 语速/能量/音高 + 精度 + 线程 + 旋转) │ └──→ KnowledgeActivity (知识库列表 + 启用/禁用) │ └──→ KnowledgeEntriesActivity (条目管理 + 搜索 + 添加) └──→ CacheListActivity (合成记录播放) ``` ## 安装部署 ### 环境要求 - Android Studio (推荐最新稳定版) - Gradle 7.0+ - Android 5.0 (API 21) 及以上设备 ### 编译步骤 1. **下载模型文件** 从 [Releases](https://gitee.com/xulei8820/TTS-TFLite/releases) 下载 `models-tflite.7z`,解压后将以下文件放入 `app/src/main/assets/`: ``` app/src/main/assets/ ├── baker_mapper.json ├── fastspeech2_quan.tflite ├── mb_melgan.tflite └── tacotron2_quan.tflite ``` 2. **下载裁剪版 TensorFlow Lite**(可选) 从同一页面下载裁剪后的 aar,放入 `app/libs/`: - `tensorflow-lite-2.8.0.aar` - `tensorflow-lite-select-tf-ops-2.8.0.aar` 然后取消 `app/build.gradle` 中相关行的注释。 3. **编译** ```bash ./gradlew assembleRelease ``` APK 输出路径:`app/build/outputs/apk/release/` ## 使用说明 ### 朗读文本 在主页面输入文本,点击"朗读"按钮即可合成语音。支持以下调节: | 参数 | 说明 | 支持模型 | |------|------|---------| | 语速 | 慢速/普通/快速 | FastSpeech2、Tacotron2 | | 能量 | 语气强弱 | 仅 FastSpeech2 | | 音高 | 声音高低 | 仅 FastSpeech2 | ### 系统 TTS 引擎 应用注册为 Android 系统 TTS 服务后,可在系统设置 → 辅助功能 → 文字转语音中选择"TTS 语音助手",供其他应用(如阅读器、导航等)直接调用。 ### 知识库管理 - 进入设置 → 知识库管理,可查看5类基础知识库 - 支持启用/禁用知识库、新建自定义知识库 - 条目管理页面支持搜索、添加、删除条目 - 支持通过 JSON 导入导出知识库 ### 同步脚本 ```bash # 查看当前知识库 python sync_knowledge.py # 初始化基础知识库结构 python sync_knowledge.py --init # 从 JSON 导入 python sync_knowledge.py --import knowledge.json # 导出为 JSON python sync_knowledge.py --export knowledge.json # 从远程 URL 同步 python sync_knowledge.py --sync ``` ## 项目结构 ``` TTS-TFLite/ ├── app/ │ ├── src/main/ │ │ ├── assets/ # TFLite 模型文件 │ │ ├── java/com/sweet/tf/tts/ │ │ │ ├── common/ # 常量定义 │ │ │ ├── models/ # TtsType 枚举等 │ │ │ ├── service/ # TtsService(系统 TTS 引擎) │ │ │ ├── tts/ # 核心 TTS 引擎 │ │ │ │ ├── FastSpeech2.java # FastSpeech2 模型推理 │ │ │ │ ├── Tacotron2.java # Tacotron2 模型推理 │ │ │ │ ├── MBMelGan.java # MB-MelGAN 声码器 │ │ │ │ ├── TtsManager.java # TTS 管理器 │ │ │ │ ├── AudioCache.java # 音频缓存管理 │ │ │ │ └── CacheItem.java # 缓存条目模型 │ │ │ ├── ui/ # 界面层 │ │ │ │ ├── SplashActivity.java # 启动页(骨架屏) │ │ │ │ ├── MainActivity.java # 主页面 │ │ │ │ ├── SettingsActivity.java # 设置页面 │ │ │ │ ├── KnowledgeActivity.java # 知识库管理 │ │ │ │ ├── KnowledgeEntriesActivity.java # 知识库条目管理 │ │ │ │ ├── MainViewModel.java # 主页面 ViewModel │ │ │ │ ├── GetSampleText.java # 示例文本池 │ │ │ │ ├── CheckVoiceData.java # 语音数据校验 │ │ │ │ └── DownloadVoiceData.java # 语音数据下载 │ │ │ ├── utils/ # 工具类 │ │ │ │ ├── AssetFileUtils.java # 资源文件工具 │ │ │ │ ├── FileUtils.java # 文件操作工具 │ │ │ │ ├── IntentUtils.java # 页面跳转工具 │ │ │ │ ├── KnowledgeDb.java # 知识库 SQLite 数据层 │ │ │ │ ├── NumberNorm.java # 数字规范化 │ │ │ │ ├── NumberToCH.java # 数字转中文 │ │ │ │ ├── Processor.java # 文本预处理接口 │ │ │ │ ├── TextToPhoneme.java # 文本转音素 │ │ │ │ └── ZhProcessor.java # 中文处理器 │ │ │ └── xapp/ # Application + Hawk 封装 (Xdb) │ │ └── res/ # 布局、图片、字符串等资源 │ │ ├── layout/ # 竖屏布局 │ │ └── layout-land/ # 横屏布局 │ └── libs/ # 本地 aar/jar 库 ├── appkey/ # 签名密钥 ├── images/ # 应用截图 ├── sync_knowledge.py # 知识库网络同步脚本 ├── knowledge_polyphone.json # 多音字知识库 ├── gradle/ ├── build.gradle ├── settings.gradle └── README.md ``` ## 知识库系统 ### 内置5类知识库 | 知识库 | 类型 | 说明 | |--------|------|------| | 多音字词典 | polyphone | 通用多音字消歧词典 | | 古音词典 | classical | 古诗/文言文专用古音词典 | | 诗句知识库 | poem | 古诗诗句正确发音知识库 | | 计量单位 | unit | 中英文计量单位映射 | | 英文映射 | english | 英文字母/词/缩写中文音译 | ## 技术栈 | 组件 | 说明 | |-------------------|---------------------------| | 语言 | Java 8 | | 界面框架 | Android View(XML 布局) | | 架构 | MVVM(LiveData + ViewModel)| | TTS 推理 | TensorFlow Lite 2.13 | | 配置存储 | Hawk 2.0.1 | | 日志 | Logger 2.2.0 | | 拼音转换 | pinyin4j 2.5.1 | | 知识库存储 | SQLite(SQLiteOpenHelper) | | 最低兼容 | Android 5.0 (API 21) | | 编译 SDK | Android 14 (API 34) | | 版本号 | 0.5.3 | ## 模型对比 | 模型 | 速度 | 音质 | 语速/能量/音高 | 适用场景 | |-------------|------|------|---------------|-------------| | FastSpeech2 | 快 | 良好 | 支持 | 日常使用 | | Tacotron2 | 慢 | 较好 | 不支持 | 高音质需求 | ## TensorFlow Lite 裁剪 | 文件 | 原始大小 | 裁剪后 | 缩减比例 | |------------------------------------------|----------|--------|---------| | tensorflow-lite-2.8.0.aar | 5.4 MB | 3.7 MB | 68.5% | | tensorflow-lite-select-tf-ops-2.8.0.aar | 109.6 MB | 14.8 MB| 13.5% | > 参考:[缩减 TensorFlow Lite 二进制文件大小](https://tensorflow.google.cn/lite/guide/reduce_binary_size) ## 模型转换(开发) 适用于需要自行转换模型的场景。 ### 环境 - Ubuntu 20.04 LTS - Python 3.8+ ```bash git clone https://github.com/TensorSpeech/TensorFlowTTS.git cd TensorFlowTTS pip install . pip install git+https://github.com/repodiac/german_transliterate.git ``` ### 转换步骤 1. 解压 `models-tf.7z` 2. 测试原始 TF 模型: ```bash cd models-tf python test-h5.py ``` 3. 转换为 TFLite: ```bash python convert-tflite.py ``` ## 模型查看 推荐使用 [Netron](https://github.com/lutzroeder/netron/releases) 查看 TFLite 模型结构。 ## 如何参与贡献 1. 在 Gitee 上 Fork 本仓库:[https://gitee.com/xulei8820/TTS-TFLite](https://gitee.com/xulei8820/TTS-TFLite) 2. 在 Fork 的仓库中创建 Feature 分支进行修改 3. 提交 PR(Pull Request)至本仓库,描述修改内容和目的 4. 等待仓库维护者审核并合并 贡献方向建议: - 优化音素转换规则,提升发音准确度 - 新增知识库类别或扩充内置条目 - 改进 UI 交互体验 - 适配更多 Android 设备和系统版本 - 性能优化(推理速度、内存占用) ## 参考资料 - [TensorFlowTTS](https://github.com/TensorSpeech/TensorFlowTTS) - [TensorflowTTS_chinese](https://github.com/tatans-coder/TensorflowTTS_chinese) - [TensorFlow Lite Android 指南](https://www.tensorflow.org/lite/guide/android) ## 开源许可证 本项目基于 [Apache License 2.0](LICENSE) 开源,可自由使用、修改和分发,但需保留原作者版权声明和许可证文本。