dsh-live-speak 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE-NOTES.md +19 -1
- package/index.js +9 -4
- package/package.json +1 -1
package/RELEASE-NOTES.md
CHANGED
|
@@ -204,6 +204,24 @@ dsh-live-speak
|
|
|
204
204
|
|
|
205
205
|
---
|
|
206
206
|
|
|
207
|
+
## 1.0.6 更新说明
|
|
208
|
+
|
|
209
|
+
**不会再把「※」念出来了**
|
|
210
|
+
|
|
211
|
+
有人反馈:播报中间突然念出一个「※」。查下来是 markdown 的星号没洗干净——模型用 `**加粗**`、`*斜体*` 标重点,插件本该把这些标记剥掉再念;成对的标记好剥,**被截断的半对标记**就漏了。
|
|
212
|
+
|
|
213
|
+
原因是模型逐字往外写,插件在字数够了就把已有文字送去合成。如果那一刀正好切在 `**` 中间(只剩下 `**核心`),成对正则匹配不上,星号就留在了要念的文本里,语音引擎把它念成一个音节。
|
|
214
|
+
|
|
215
|
+
现在改成一条统一规则:**markdown 的元字符一律不念**(`*` `_` `~` 反引号 `#` `>` `|`,以及 `※` `★` `☆`)。不管它成对还是落单、写完还是被截断——只要是格式符号,就不进播报。
|
|
216
|
+
|
|
217
|
+
**中文标点一个都不删**:`。,!?;:、()《》` 是断句的唯一依据,删了长文会连成一片,标题和正文之间那 0.39 秒的停顿也就没了。
|
|
218
|
+
|
|
219
|
+
验证覆盖 12 个样本:`**核心`(未闭合)、`*斜体*`、`海风酿造的浪漫。*。`(孤立星号)、标题、列表、表格、行内代码,以及 `50%`、`v1.0.5` 这类数字读数——星号全部消失,标点和数字一个没伤。
|
|
220
|
+
|
|
221
|
+
当前版本:**1.0.6**
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
207
225
|
## 1.0.5 更新说明
|
|
208
226
|
|
|
209
227
|
**修好了「本地语音」在部分电脑上显示「未检测到可用声线」**
|
|
@@ -218,7 +236,7 @@ dsh-live-speak
|
|
|
218
236
|
|
|
219
237
|
**说明**:这个毛病只影响「本地语音」档和设置页的下拉列表。用「线上语音」的话声线是固定的晓晓,从来没受影响。
|
|
220
238
|
|
|
221
|
-
|
|
239
|
+
历史版本:**1.0.5**
|
|
222
240
|
|
|
223
241
|
---
|
|
224
242
|
|
package/index.js
CHANGED
|
@@ -479,10 +479,15 @@ function cleanForSpeech(raw) {
|
|
|
479
479
|
text = text.replace(/^\s{0,3}>\s?/gmu, '')
|
|
480
480
|
text = text.replace(/^\s{0,3}[-*+]\s+/gmu, '')
|
|
481
481
|
text = text.replace(/^\s{0,3}\d+[.)]\s+/gmu, '')
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
482
|
+
// 统一规则:markdown 元字符一次性清干净,不再逐条匹配「成对 / 落单」。
|
|
483
|
+
// 这几种都会被 TTS 念成怪音(`*` 念成"星号",用户实测听到"※"),对听感毫无意义;
|
|
484
|
+
// 被实时首块截断的半对标记(`**核心`)、落单的 `*`,也在这一条里一并消失。
|
|
485
|
+
// 但语言标点(。,!?;:、()《》)必须留——那是断句的唯一依据,
|
|
486
|
+
// 删了长文会连成一片,标题和正文之间那 0.39 秒的停顿就没了。
|
|
487
|
+
text = text.replace(/[*_~`#>|※★☆]/gu, '')
|
|
488
|
+
text = text.replace(/^\s*[-—–]\s*$/gmu, ' ')
|
|
489
|
+
// 星号删掉后会露出重复标点("浪漫。*。" → "浪漫。。"),合并成一个,免得念两次停顿
|
|
490
|
+
text = text.replace(/([。!?;:,、])\1+/gu, '$1')
|
|
486
491
|
|
|
487
492
|
// 表格里残留的竖线、emoji、各种装饰符号
|
|
488
493
|
text = text.replace(/[|]/gu, ' ')
|