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 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
- 当前版本:**1.0.5**
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
- text = text.replace(/\*\*([^*]+)\*\*/gu, '$1')
483
- text = text.replace(/~~([^~]+)~~/gu, '$1')
484
- text = text.replace(/(^|[^*])\*([^*\n]+)\*/gu, '$1$2')
485
- text = text.replace(/^\s*([-*_])\1{2,}\s*$/gmu, ' ')
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, ' ')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-live-speak",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "用高保真神经语音实时播报模型输出(边生成边念),自带播放器,可随时暂停/恢复/停止。",
5
5
  "type": "module",
6
6
  "main": "./index.js",