利用正则表达式改善TTS听书效果

news/2024/11/8 18:38:20/

最近一直在用 TTS Server 来听书,这个APP的语音很厉害,可以设置两种不同的声音,分别对应【旁白】和【对话】,听书的时候很有感觉。

在最近的一次听书时发现,它用【双引号“”】来区分【对话】的。

这样,出现了一个问题:书里有很多的名词描述是用【双引号“”】来标记的。

比如下面这一段,第一行用【旁白】和【对话】两种声音来读,听起来十分难受。

武官叫做“指挥使”,一千人为一“军”,武官为“将军”,一万人为“统”。

所以我要把这类的不是【对话功能】的【双引号“”】改成其他的字符,比如:

武官叫做[指挥使],一千人为一[军],武官为[将军],一万人为[统]。

正好初学了一遍正则表达式,就来实操一下。

以下面的文本为例,有点复杂。

大概是些“你好”、“我叫月儿”之类的字句,李森心里嘀咕:“有点不妙啊!”。
武官叫做“指挥使”,一千人为一“军”,武官为“将军”。
“怎么心有点定不住?”洪易定“神”寻思。
说过这句话之后,摆摆手:“去吧。”

通过思考,我用【零宽度断言】的方法,分成几步来实现:

1. 【对话】的结尾都有结束的标点符号,如【。!?…】等,将这类带有结束标点符号的右引号改掉:

正则表达式 负后发断言?<! 匹配:(?<![。!?,—~…])”
替换:】

改完后结果为(通过editplus查找替换):

大概是些“你好】、“我叫月儿】之类的字句,李森心里嘀咕:“有点不妙啊!”。
武官叫做“指挥使】,一千人为一“军】,武官为“将军】。
“怎么心有点定不住?”洪易定“神】寻思。
说过这句话之后,摆摆手:“去吧。”

2. 再将对应的左引号改掉:

正则表达式 正先行断言?= 查找和符号】相匹配的:匹配:“(?=.*】)
替换:【

但是,结果不完美,因为正则表达式贪婪匹配,改完后,第三行有问题:

大概是些【你好】、【我叫月儿】之类的字句,李森心里嘀咕:“有点不妙啊!”。
武官叫做【指挥使】,一千人为一【军】,武官为【将军】。
【怎么心有点定不住?”洪易定【神】寻思。    //这行第一个字符不对
说过这句话之后,摆摆手:“去吧。”
我中间也换了几个思路:
比如用负先行断言?! 只查找【左引号“ 】右边不是对应的【右引号”】
匹配:“(?!.*”)    
但这会导致第1行无法匹配。

3. 最好试了好几次,按下面的,把第3行修正过来

正先行断言 ?=匹配:【(?=.*[。!?,—~…]”)(?!.*“)
替换:“注:匹配后面的(?!.*“) 不能去掉,不然第1行又会出问题

这中间修改好几次,最终没有问题了,可以安心听书。

@20221128,其实还有匹配中文字符的方式来快速解决:

第1步:匹配:(?<![。!?,—~…])”
替换:】第2步:匹配:“(?=[\u4E00-\u9FA5]+】)
替换:【


http://www.ppmy.cn/news/806274.html

相关文章

语音合成 - TTS pyttsx3

目录 1. 简单介绍 2. 代码示例 1. 简单介绍 pyttsx3 PyPIText to Speech (TTS) library for Python 2 and 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.https://pypi.org/project/pyttsx3/pyttsx3 是…

C#调用TTS语音

运行界面如下图 代码如下 卡界面运行 private void button2_Click(object sender, EventArgs e){//https://developer.aliyun.com/article/264926#:~:text%E5%8E%9F%E6%96%87%3A%20C%23%E8%AF%AD%E9%9F%B3%E6%9C%97%E8%AF%BB%E6%96%87%E6%9C%AC%20%E2%80%94%20TTS%E7%9A%84%E5…

android tts 语音合成

最近公司需求 制作语音提醒功能&#xff0c; 确保设备上又合成语音的引擎 我用的是 谷歌文字转语音引擎-google_18489_20160603.apk 注意 有些设备可能已经默认设置完成&#xff0c;可以先使用demo测试一下&#xff0c;播报失败再进行设置 设置引擎的方法如下 1、安装 谷…

tts高级编程 android,Android TTS(TextToSpeech) 使用

TTS 是什么&#xff1f; TTS 是 Text To Speech 的缩写&#xff0c;即“从文本到语音”&#xff0c;是人机对话的一部分&#xff0c;让机器能够说话。 TTS 技术对文本文件进行实时转换&#xff0c;转换时间之短可以秒计算。 TTS 不仅能帮助有视觉障碍的人阅读计算机上的信息…

edge-tts微软文本转语音库

Edge-TTS是一个Python库,比较好用&#xff0c;直接pip安装。 pip install edge-tts 输入edge-tts&#xff0c;输出提示信息&#xff0c;安装完成。 usage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l] [--rate RATE] [--volume VOLUME] [-O OVERLAPPING][--write-me…

语音合成 - TTS gTTS

目录 1. 简单介绍 2. 代码示例 1. 简单介绍 https://gtts.readthedocs.io/en/latest/https://gtts.readthedocs.io/en/latest/ gTTS 是基于 Python 的文本转语音库&#xff0c;用于语音合成。 2. 代码示例 安装&#xff1a; pip install gTTS Python: from gtts import…

语音合成TTS

一、核心概念 1、TTS&#xff08;Text-To-Speech&#xff0c;从文本到语音&#xff09; 我们比较熟悉的ASR&#xff08;Automatic Speech Recognition&#xff09;&#xff0c;是将声音转化为文字&#xff0c;可类比于人类的耳朵。 而TTS是将文字转化为声音&#xff08;朗读出…

Coqui TTS 安装与测试

前言 本篇记录一下 Coqui TTS 的安装。Coqui-TTS 的主要作者是德国人&#xff0c;这个库似乎之前和 Mozilla 的 TTS &#xff08;https://github.com/mozilla/TTS&#xff09;有千丝万缕的关系&#xff0c;但是现在后者的 TTS 已经停止更新&#xff0c;而 Coqui TTS 更新一直很…