Python文本转语音时处理多音字

背景是以前开发的叫号系统,最近发现了一个问题,就是多音字发音不正常。比如姓曾读成了céng,姓覃读成了tán,姓绮读成了qī ,姓缪读成了móu等等。

环境是

Windows 11 专业版
python 3.12.2
gTTS 2.5.1
pyttsx3 2.90

之前用的是pyttsx3 后面换成了gTTS ,也尝试过其他的tts引擎,问题仍然存在。示例代码如下:

import pyttsx3

engine = pyttsx3.init()  

engine.setProperty('rate', 100)  
engine.setProperty('volume', 0.8) 

engine.say("曾")  # céng
engine.say("曾小姐")  # céng
engine.say("曾思思")   # céng
engine.say("曾叶")   # céng
engine.say("曾小红")  # zēng 
engine.say("曾某某") # zēng 

engine.runAndWait()

一般在文本转语音之前,可以进行预处理,比如去除标点符号和特殊字符、文本分词、指定词库拼音等,但是对于这个问题,预处理的成本显然不小。当然可以尝试更换其他的tts引擎,或使用第三方云厂商提供的接口,方式方法都有,只是成本偏高。

所以想了一个临时的解办法,汉字不光有多音字,还有同音字。比如: 曾同增,缪同庙,覃同勤等等,做一个简单的映射表,在发音之前替换一下。这个成本是最低的。如下

import pyttsx3

engine = pyttsx3.init()  

engine.setProperty('rate', 100)  
engine.setProperty('volume', 0.8) 

engine.say("增")  # zēng
engine.say("增小姐")  # zēng
engine.say("增思思")   # zēng
engine.say("增叶")   # zēng
engine.say("增小红")  # zēng 
engine.say("增某某") # zēng 

engine.runAndWait()

至此,基本就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值