python语音识别转文字,python3将语音转换成文字
准备
我使用Python版本2.7.10进行测试。如果你的版本是Python3.5,这里不适合。
使用语音API
原则
我们的想法是用微软的语音接口,所以必须调用相关接口。所以我们需要安装pywin32来帮助我们完成这个底层交互。
示例代码
导入win32com.client
speaker=win32 com . client . dispatch( SAPI。sp voice’)
扬声器。说话(‘你好,它工作了!’)
小总结
没错,就是调用接口实现语音功能这么简单,但是我们不得不说一下这种方式的缺点。
对中文的支持不够好,就这一点,国内估计没几个人用。
还有就是无法很好的控制语速。
Pyttsx模式
原则
Pyttsx是一个非常好的关于文本到语音的Python库。我们还可以使用pyttsx在线读取rfc文件或本地文件,最重要的是,它很好地支持中文。
示例代码
#编码:utf-8
导入系统
重新加载(系统)
sys.setdefaultencoding(utf8 )
# __author__=fzdwk
# __date__=2016年8月6日
# __Desc__=文本到语音输出
导入pyttsx
engine=pyttsx.init()
engine.say(“你好,世界”)
Engine.say(你好,xhdmt )
engine.runAndWait()
#读一遍
engine.endLoop()
小总结
有了pyttsx,我们可以用它强大的API实现我们的基本业务需求。很酷吧。
pyttsx的深入研究
做完上面的小实验,你一定会觉得为什么这么无聊。
别急,让我们一起走进pyttsx的世界,深入研究它的工作原理。
语音引擎工厂
与设计模式中的“工厂模式”类似,pyttsx通过初始化来获取语音引擎。当我们第一次调用init操作时,我们将返回pyttsx的一个引擎对象。当我们再次调用它时,如果有引擎对象的实例,我们将使用现有的实例,否则我们将创建另一个实例。
pyttsx.init([driverName : string,debug : bool]) pyttsx。发动机
从方法语句来看,第一个参数指定了语音驱动的名称,这个名称与底层的操作系统密切相关。如下所示:
1.drivename:由pyttsx.driver模块根据操作系统的类型调用,默认使用当前操作系统可用的最佳驱动。
Windows上的sapi5 - SAPI5
Mac OS X上的nsss - NSSpeechSynthesizer
espeak -其他平台上的espeak
2.debug:第二个参数指定是否在调试状态下输出。建议在开发阶段将其设置为True。
引擎接口
想用好一个库,不了解它的API是不行的。我们来看看pyttsx。发动机的发动机API。发动机
方法签名
参数列表
返回值
简单的解释
连接(主题:字符串,cb:可调用)
主题:要描述的事件的名称;Cb:回调函数
字典
添加给定主题的回叫通知。
断开连接(令牌:dict)
Token:回调损失的返回标记。
空的
端部连接
结束循环()
没有人
无
简单来说,就是结束事件循环。
getProperty(名称:字符串)
这个名字有这些枚举值:比率、暴力率、暴力次数、暴力量。
对象
获取当前引擎实例的属性值。
setProperty(名称:字符串)
这个名字有这些枚举值:比率、暴力率、暴力次数、暴力量。
对象
设置当前引擎实例的属性值。
说(文本:unicode,名称:字符串)
Text:要朗读的文本数据;名称:关联扬声器,一般不使用。
无
要朗读的文本数据是预设的,也是“万事俱备,只欠东风”中的“万事俱备”
runAndWait()
没有人
无
这个方法就是‘东风’。当事件队列中的所有事件都为空时返回。
开始循环([useDriverLoop : bool])
UseDriverLoop:是否启用驱动循环?
无
打开事件队列。
元数据音调
在pyttsx.voice.Voice中,对合成器的发音进行处理。
年龄
说话人的年龄,默认为无。
性别
字符串类型的说话者的性别:男性、女性或中性。默认值为无。
编号
关于语音的字符串确认信息。通过pyttsx . engine . engine . set property value()设置活动发音签名。该属性始终是定义的。
语言
发音支持的语言列表,如果没有,则为空列表。
名字
发音人名称,默认为没有。
更多测试
朗读文本
导入pyttsx
engine=pyttsx.init()
引擎。说(’莎莉在海边卖贝壳。)
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
事件监听
导入pyttsx
定义onStart(名称):
打印"起始",姓名
定义单词(名称、位置、长度):
打印"单词",名称,位置,长度
def onEnd(姓名,已完成):
打印"完成",名称,已完成
engine=pyttsx.init()
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
打断发音
导入pyttsx
定义单词(名称、位置、长度):
打印"单词",名称,位置,长度
如果位置10:
发动机停止()
engine=pyttsx.init()
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
更换发音人声音
engine=pyttsx.init()
声音=引擎。getproperty(“声音”)
对于声音中的声音:
engine.setProperty(voice ,voice.id)
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
语速控制
engine=pyttsx.init()
rate=engine.getProperty(rate )
engine.setProperty(rate ,rate 50)
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
音量控制
engine=pyttsx.init()
体积=发动机。getproperty(卷)
engine.setProperty(volume ,volume-0.25)
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。)
engine.runAndWait()
执行一个事件驱动循环
engine=pyttsx.init()
定义onStart(名称):
打印"起始",姓名
定义单词(名称、位置、长度):
打印"单词",名称,位置,长度
def onEnd(姓名,已完成):
打印"完成",名称,已完成
if name==fox :
engine.say(多懒的狗啊!,狗)
elif name==dog :
engine.endLoop()
engine=pyttsx.init()
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。,狐狸)
engine.startLoop()
使用一个外部的驱动循环
engine=pyttsx.init()
引擎。说(’那只敏捷的棕色狐狸跳过了那只懒狗。,狐狸)
engine.startLoop(False)
必须在外部循环()内部调用# engine.iterate()
外部循环()
engine.endLoop()
总结
以上就是计算机编程语言如何实现文本转语音的全部内容,看完了上面的讲述,是不是感觉计算机编程语言实现文本转语音还是蛮简单的?那么,大家快来尝试尝试吧。希望本文对大家学习计算机编程语言有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。