首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
tts-server-android 语音规则完全指南:如何写出第一条 JS 朗读规则
📅 2026/10/17 2:03:39
✍️ 爱科研究院
👁 阅读 3,247
tts-server-android 语音规则完全指南如何写出第一条 JS 朗读规则【免费下载链接】tts-server-android这是一个Android系统TTS应用内置微软演示接口可自定义HTTP请求可导入其他本地TTS引擎以及根据中文双引号的简单旁白/对话识别朗读 还有自动重试备用配置文本替换等更多功能。项目地址: https://gitcode.com/GitHub_Trending/tt/tts-server-androidtts-server-android 语音规则让 TTS 在合成前先跑一段 JavaScript把文本按内容分段、打标、切句再交给不同的音色。下面从一条能直接跑的规则讲起帮你在十分钟内让旁白和对话各归其位。先看看它到底错在哪朗读不自然往往不是音色问题而是文本还没准备好。常见表现日期数字2024年3月5日 被逐位念成 二、零、二、四特殊符号AB 念出 加号或干脆跳过对话提示引号里的台词和叙述混成同一个声音角色全糊在一起这类问题靠调语速、音量解决不了得在朗读前动手。语音规则就是那个动手的地方按下播放前用一段脚本对原始文本做一次可控的改写与切分。原始文本是怎么变成语音的整条链路很短。原始文本先过前置替换规则再由语音规则脚本Rhino 引擎执行调用handleText分段打标程序按标签把每段路由到对应 TTS 配置接着splitText切成句子最后过一遍后置替换再送合成。环节由谁做作用分段打标语音规则handleText把文本切成带 tag 的片段路由音色系统按 tag 匹配不同片段交给不同配置分句语音规则splitText按标点切成可合成的句子一句话语音规则不决定念得多好听它决定把什么内容、按什么节奏、交给哪个声音。如何写下第一条语音规则规则是一个叫SpeechRuleJS的对象必须带元信息name、id、author、version、tags和两个方法。最小可跑版本let SpeechRuleJS { name: 我的第一条规则, id: demo.rule, author: me, version: 1, tags: { plain: 通用 }, handleText(text) { return [{ text: text, tag: plain }]; // 原样返回只打一个标签 }, splitText(t) { return t.match(/[^。!?;][。!?;]?/g) || [t]; } };逐句说id是规则唯一标识tags声明键→显示名handleText返回的tag必须对上某个键程序才能把片段派给绑定该标签的 TTS 配置splitText返回字符串数组一句一个元素。还有第三个可选方法getTagName只在界面上显示标签名。三个实用技巧 符号与数字归一化。在handleText开头把机器写法改成人话function clean(t) { return t.replace(//g, 加).replace(//g, 减) .replace(/(\d{4})-/.-/./g, $1年$2月$3日); } // handleText 内text clean(text)对话识别。内置规则speech_rule.js的核心用中文双引号切旁白/对话if (c “) { out.push({ text: buf, tag: narration }); buf ; cur dialogue; } else if (c ”) { out.push({ text: buf, tag: dialogue }); buf ; cur narration; }“之前归旁白”之前归对话两段打不同 tag就能分配两个音色。改写公式与代码。命中数学式就替换成可读文字text text.replace(/(\d)\s*[×*]\s*(\d)/g, $1乘$2);进阶组合、分支与容错语音规则可以和替换规则叠加替换规则分前置 / 后置两种时机正好包在handleText前后。多条配置绑定同一个 tag 时先精确匹配id、再随机挑一个。想更细可用tagsData在对话里声明角色实现角色级匹配。健壮性很关键handleText一旦抛错整段合成会被记为失败。所以脚本里少写裸循环、给正则加边界拿不准就try/catch兜底并返回一个合法数组。常见问题排查 标签没生效、全走一个音色→ 多半handleText返回的tag与tags键或 TTS 配置对不上 → 核对标签键是否一致。分句太碎或根本不切→ 多半是splitText的分隔标点不合适 → 调整可匹配的分隔符。改了代码没反应→ 脚本每次合成时重新读取确认已保存version只是版本标识。合成直接失败→ 多半脚本报错或返回结构不是[{text, tag}]→ 打开日志页看报错保证每个片段都含text与tag。资源导航想深入直接翻这几处规则引擎model/rhino/speech_rule/SpeechRuleEngine.kt处理链路service/systts/help/TextProcessor.kt内置规则assets/defaultData/speech_rule.js配置conf/SpeechRuleConfig.kt官方说明help/js/speechRule.md【免费下载链接】tts-server-android这是一个Android系统TTS应用内置微软演示接口可自定义HTTP请求可导入其他本地TTS引擎以及根据中文双引号的简单旁白/对话识别朗读 还有自动重试备用配置文本替换等更多功能。项目地址: https://gitcode.com/GitHub_Trending/tt/tts-server-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/17 2:03:39
xerj CLI 实战:一条命令将 65 万行 OpenSSH 攻击日志灌入本地索引并完成安全分析
2026/10/17 2:03:39
大模型蒸馏轻量分类器:UltraData-Math L2质量精选的完整方法论
2026/10/17 2:03:39
CKEditor 4 表格选择键盘交互修复实录:Tab 切换后按 Backspace 的选区保持问题(4802)
2026/10/17 2:58:42
AI Agent核心原理与LangChain集成实战指南
2026/10/17 2:58:42
VS2010+CEF3 90.6.0:MFC窗口嵌入浏览器与JS双向通信实战
2026/10/17 2:58:42
大模型安全测试实战:从红队模拟到供应链防护
2026/10/17 2:58:42
AI Agent 管理为何是份全职工作:从 Demo 到生产的工程挑战
2026/10/17 2:58:42
编译原理实验避坑:PL/0扩展ELSE语句的词法、语法与代码生成全解析
2026/10/17 2:53:42
前端大文件上传与断点续传:从FormData到分片并发实战
2026/10/17 0:02:58
NetSpot 实战:用信道分析与频宽优化解决 Wi-Fi 卡顿
2026/10/17 0:02:58
C++ split() 字符串分割的五种实现与性能实测
2026/10/17 0:02:58
R语言坐标轴范围设置:从xlim/ylim到coord_cartesian的完整指南
2026/10/16 1:17:36
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/16 1:17:35
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/16 1:17:35
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/16 1:17:35
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/16 18:46:48
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/16 18:46:46
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)