资讯详情

3 行 JavaScript 搞定 tts-server-android 语音规则,TTS 朗读从此不翻车

📅 2026/10/18 1:35:26 | 华诺云谱 👁 阅读
3 行 JavaScript 搞定 tts-server-android 语音规则,TTS 朗读从此不翻车
3 行 JavaScript 搞定 tts-server-android 语音规则TTS 朗读从此不翻车【免费下载链接】tts-server-android这是一个Android系统TTS应用内置微软演示接口可自定义HTTP请求可导入其他本地TTS引擎以及根据中文双引号的简单旁白/对话识别朗读 还有自动重试备用配置文本替换等更多功能。项目地址: https://gitcode.com/GitHub_Trending/tt/tts-server-android用 TTS 听书时112被读成1加1等2、日期符号直接吞掉、英文缩写逐字母蹦出来听着像机器在背课文。问题不在引擎而在文本没经过预处理。tts-server-android 的语音规则功能干的就是这件事在合成之前用一段 JavaScript 把原文洗一遍再交给引擎。语音规则怎么写2 个函数定好契约规则就是一个 JS 脚本必须暴露两个函数function getRuleName() { return 标点友好; } function process(text, isSSML) { text text.replace(//g, 。); return text; }getRuleName()是规则的身份证process(text, isSSML)是核心入口text是原始文本isSSML表示这段文本是否已是 SSML 标记可以据此决定是否跳过处理。返回值直接作为送进合成的文本。 规则在 Rhino 引擎里运行引擎代码在 SpeechRuleEngine.kt整条朗读管线在 TextProcessor.kt 里原文 → 规则脚本 → 分句 → 合成。规则的增删改都在 App 内的语音规则管理界面完成。由浅入深标点、对话、算式先做标点替换成本最低、收益最大function process(text, isSSML) { text text.replace(//g, ) .replace(/——/g, ……); return text; }替换标点、把破折号换成省略号TTS 的停顿节奏立刻就自然了。再进一步识别对话并打上标记function process(text, isSSML) { text text.replace(/([\u4e00-\u9fa5])说/g, speak$1说/speak); return text; }配合多音色配置不同角色各说各话。想做得更彻底可以看看内置的旁白/对话规则 speech_rule.js它用handleText把文本拆成带 tag 的片段narration / dialogue系统按标签匹配音色——这就是语音规则的上限所在。最后处理特殊符号把*读成乘以、把日期转成口语化读法思路完全一样正则定位替换成引擎读得顺的写法。脚本跑不动时查这里⚠️ 三个高频坑重计算process 每次朗读都会执行长文本里做全局扫描或深循环TTS 直接变慢正则能简单就简单。语法兼容Rhino 对 ES6 支持有限箭头函数、可选链这类写法先换成传统写法再试。异常兜底脚本抛错整段朗读会失败process 里加 try-catch失败时至少返回原文别放大招前不备份规则。调试技巧先用默认测试文本在编辑器里试听console.log的输出也能看到不放心就导出规则留档随时回滚。下一步从 官方帮助文档 看完整字段说明参考内置规则写出自己的多音色版本再配合文本替换规则一起用前者管复杂变换后者管固定词库基本覆盖绝大多数朗读翻车现场。【免费下载链接】tts-server-android这是一个Android系统TTS应用内置微软演示接口可自定义HTTP请求可导入其他本地TTS引擎以及根据中文双引号的简单旁白/对话识别朗读 还有自动重试备用配置文本替换等更多功能。项目地址: https://gitcode.com/GitHub_Trending/tt/tts-server-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑