Python文本语音识别模块大比拼,看看青铜与王者的差别!

本文介绍了Python文本转语音的三个模块:青铜级的pywin32,白银级的pyttsx3,以及王者级的百度语音识别API。pywin32简单但效果不佳,pyttsx3提供了更多个性化配置,而百度API则提供高级的语音合成服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于作息问题

自从开始公众号写作,作息问题就成了一件让人很头大的事情,相对平时学习时间的基础上,每天需要再多抽出来至少两个小时进行公众号写作,这些时间只能从睡眠中挤出来。别人研究怎么碎片化学习,我现在每天盘算的是怎么碎片化打盹。不知道该怎么解决作息的问题,好苦恼…

文本转语音

如果把Python比喻成游戏中的一个英雄,你觉得它是谁?对于Dota老玩家来说,我会想到钢琴手卡尔!感觉Python和卡尔一样,除了生孩子什么都可以做的角色。日常生活中,我们会涉及到很多语音播报的场景,比如郭德纲版的高德地图导航、超市门口的红外感知提醒欢迎光临、银行的自助叫号系统,等等…今天就和大家聊聊Python文本转语音,看看这些从青铜到王者的模块。

青铜-pywin32

通过**pip install pywin32**安装模块,pywin32是个万金油的模块,太多的场景使用到它,但在文本转语音上,它却是个青铜玩家,简单无脑但效果不好。代码示例:

import win32com.client

speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("一天什么时候最安全?中午,因为早晚会出事...")

因为这个模块使用了很多次,自信执行,结果报错了…

Traceback (most recent call last):
File “D:\Python37\lib\site-packages\win32com\client\dynamic.py”, line 89, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221005, ‘无效的类字符串’, None, None)

这个模块之前在公司和家里笔记本用过很多次的,怎么会报错呢?一脸懵逼…结果查了半天发现,代码在调用语音识别组件的时候报错了。
语音识别组件
打开控制面板发现语音识别组件我的台式机电脑没有,原来现在很多GHOST版WIN系统为了精简体积都去除了语音识别组件,所以在安装语音朗读语音叫号类软件时,都不能正常发音。本来这种青铜小选手,像我这种王者级别的不羞于为伍,但既然是模块介绍还是确定下到底是不是这个问题吧。网上找了一个语音识别的TTSwidnows补丁包安装了一下,再次执行成功。如果跟我存在一样问题的选手,可以网上搜索安装一下。下载补丁包执行bat文件一键无脑安装。
为什么说这个模块是青铜,因为太无脑了,你填写文本它默认输出,没有任何可配置的地方,而且语音生硬…

白银-pyttsx3

pyttsx3 is a text-to-speech conversion library in Python.
Unlike alternative libraries, it works offline, and is compatible with both Python 2 and 3.

  • SAPI5 on Windows XP and Windows Vista and Windows 8,8.1 , 10
  • NSSpeechSynthesizer on Mac OS X 10.5 (Leopard) and 10.6 (Snow Leopard)
  • espeak on Ubuntu Desktop Edition 8.10 (Intrepid), 9.04 (Jaunty), and 9.10 (Karmic)

pyttsx3使用pyttsx移植过来的,因为pyttsx不支持python3…针对不同的系统,模块会自动所有系统对应的语音驱动,前提是你的系统存在该驱动…
它依赖pywin32模块,可以说它时针对无脑的pywin32接口,进行了升级的个性化配置。先来看下最简单的使用:

import pyttsx3
engine = pyttsx3.init()
engine.say("明天你好,我叫干不倒!")
engine.runAndWait()

代码初始化模块后,填写你所需转化的文本,之后执行runAndWait方法完成语音转化。再来看看其相关操作:

事件监听
import pyttsx3

def onStart(name):
    print('starting', name)

def onWord(name, location, length):
    print(</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值