base on 这是一个Android系统TTS应用,内置微软演示接口,可自定义HTTP请求,可导入其他本地TTS引擎,以及根据中文双引号的简单旁白/对话识别朗读 ,还有自动重试,备用配置,文本替换等更多功能。 ![MIT](https://img.shields.io/badge/license-MIT-green) [![Crowdin](https://img.shields.io/badge/Localization-Crowdin-blueviolet?logo=Crowdin)](https://crowdin.com/project/tts-server) [![CI](https://github.com/jing332/tts-server-android/actions/workflows/release.yml/badge.svg)](https://github.com/jing332/tts-server-android/actions/workflows/release.yml) [![CI](https://github.com/jing332/tts-server-android/actions/workflows/test.yml/badge.svg)](https://github.com/jing332/tts-server-android/actions/workflows/test.yml) ![GitHub release](https://img.shields.io/github/downloads/jing332/tts-server-android/total) ![GitHub release (latest by date)](https://img.shields.io/github/downloads/jing332/tts-server-android/latest/total) # TTS Server [![](https://img.shields.io/badge/Q%E7%BE%A4-124841768-blue)](https://jq.qq.com/?_wv=1027&k=y7WCDjEA) <details> <summary>查看截图</summary> <img src="./images/1.jpg" height="150px"> <img src="./images/2.jpg" height="150px"> <img src="./images/3.jpg" height="150px"> <img src="./images/4.jpg" height="150px"> </details> # Download * [Stable - 稳定版(Releases)](https://github.com/jing332/tts-server-android/releases) * [Dev - 开发版(Actions 需登陆Github账户)](https://github.com/jing332/tts-server-android/actions) ## Actions mirror app: https://jing332.lanzn.com/b09jpjd2d dev: https://jing332.lanzn.com/b09ig9qla 密码Password: 1234 # Grateful <details> <summary>开源项目</summary> | Application | Microsoft TTS | |---------------------------------------------------------------------------------|-----------------------------------------------------------------------| | [gedoor/legado](https://github.com/gedoor/legado) | [wxxxcxx/ms-ra-forwarder](https://github.com/wxxxcxx/ms-ra-forwarder) | | [ag2s20150909/TTS](https://github.com/ag2s20150909/TTS) | [litcc/tts-server](https://github.com/litcc/tts-server) | | [benjaminwan/ChineseTtsTflite](https://github.com/benjaminwan/ChineseTtsTflite) | [asters1/tts](https://github.com/asters1/tts) | | [yellowgreatsun/MXTtsEngine](https://github.com/yellowgreatsun/MXTtsEngine) | | [2dust/v2rayNG](https://github.com/2dust/v2rayNG) | | Library | Description | |-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| | [dromara/hutool](https://github.com/dromara/hutool/) | 🍬A set of tools that keep Java sweet. | | [LouisCAD/Splitties](https://github.com/LouisCAD/Splitties) | A collection of hand-crafted extensions for your Kotlin projects. | | [getactivity/logcat](https://github.com/getactivity/logcat) | Android 日志打印框架,在手机上可以直接看到 Logcat 日志啦 | | [rosuH/AndroidFilePicker](https://github.com/rosuH/AndroidFilePicker) | FilePicker is a small and fast file selector library that is constantly evolving with the goal of rapid integration, high customization, and configurability~ | | [androidbroadcast/ViewBindingPropertyDelegate](https://github.com/androidbroadcast/ViewBindingPropertyDelegate) | Make work with Android View Binding simpler | | [zhanghai/AndroidFastScroll](https://github.com/zhanghai/AndroidFastScroll) | Fast scroll for Android RecyclerView and more | | [Rosemoe/sora-editor](https://github.com/Rosemoe/sora-editor) | sora-editor is a cool and optimized code editor on Android platform | | [gedoor/rhino-android](https://github.com/gedoor/rhino-android) | Give access to RhinoScriptEngine from the JSR223 interfaces on Android JRE. | | [liangjingkanji/BRV](https://github.com/liangjingkanji/BRV) | Android上最好的RecyclerView框架, 比 BRVAH 更简单强大 | | [liangjingkanji/Net](https://github.com/liangjingkanji/Net) | Android最好的网络请求工具, 比 Retrofit/OkGo 更简单易用 | | [chibatching/kotpref](https://github.com/chibatching/kotpref) | Android SharedPreferences delegation library for Kotlin | | [google/ExoPlayer](https://github.com/google/ExoPlayer) | An extensible media player for Android | | [material-components-android](https://github.com/material-components/material-components-android) | Modular and customizable Material Design UI components for Android | | [kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization/) | Kotlin multiplatform / multi-format serialization | | [kotlinx.coroutine](https://github.com/Kotlin/kotlinx.coroutines) | Library support for Kotlin coroutines | </details> 其他资源: * <a href="https://www.flaticon.com/free-icons/female" title="female icons">Female icons created by popcornarts - Flaticon</a> * [阿里巴巴IconFont](https://www.iconfont.cn/) * [酷安@沉默_9520](http://www.coolapk.com/u/25956307) 本APP图标作者 # Build ### Android Studio: 在项目根目录下新建文件 `local.properties` 并写入如下内容: ``` KEY_PATH=E\:\\Android\\key\\sign.jks (签名文件) KEY_PASSWORD= 密码 ALIAS_NAME= 别名 ALIAS_PASSWORD= 别名密码 ``` ### Github Actions: > 详见 https://www.cnblogs.com/jing332/p/17452492.html 使用 Git Bash 对签名文件进行无换行Base64编码: `openssl base64 < key.jks | tr -d '\r\n' | tee key.jks.base64.txt` 分别添加如下四个安全变量 (Repository secrets): > 前往以下链接:https://github.com/你的用户名/tts-server-android/settings/secrets/actions * `ALIAS_NAME` 别名 * `ALIAS_PASSWORD` 别名密码 * `KEY_PASSWORD` 密码 * `KEY_STORE` 前面生成的 sign.jks.base64.txt 内容 ", Assign "at most 3 tags" to the expected json: {"id":"14290","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"