1.用pywin32模块来将文本转化为语音

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

import win32com.client

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

2.利用pyttsx3来转化

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('word', name, location, length) def onEnd(name, completed):
print('finishing', name, completed) engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

中断话语

import pyttsx3
def onWord(name, location, length):
print 'word', name, location, length
if location > 10:
engine.stop()
engine = pyttsx3.init()
engine.connect('started-word', onWord)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

改变声音

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
engine.setProperty('voice', voice.id)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

改变语速

import pyttsx3
engine = pyttsx3.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate+50)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

改变音量

import pyttsx3
engine = pyttsx3.init()
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.25)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

运行驱动程序事件循环

import pyttsx3
engine = pyttsx3.init()
def onStart(name):
print 'starting', name
def onWord(name, location, length):
print 'word', name, location, length
def onEnd(name, completed):
print 'finishing', name, completed
if name == 'fox':
engine.say('What a lazy dog!', 'dog')
elif name == 'dog':
engine.endLoop()
engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.say('The quick brown fox jumped over the lazy dog.', 'fox')
engine.startLoop()

使用外部事件循环

import pyttsx3
engine = pyttsx3.init()
engine.say('The quick brown fox jumped over the lazy dog.', 'fox')
engine.startLoop(False)
# engine.iterate() must be called inside externalLoop()
externalLoop()
engine.endLoop()

3.使用百度语音

百度语音识别api:baidu-aip是百度开放的公共语音转化服务。只需要在百度注册相关的app及秘钥信息即可使用。

使用流程如下:

  1. 访问语音合成-百度AI开放平台:http://ai.baidu.com/tech/speech/tts

  2. 之后使用百度账号即可登陆(没有百度账号的,自己注册一个)

  3. 创建应用,添加语音识别的功能,并完成注册

  4. 保存你的app_id, API_Key, Secret_Key 三项数据留着后续使用

  5. 切换回语音合成首页,点击立即使用旁边的技术文档按钮,进入API文档

  6. 定位 语音合成—>SDK文档—>Python SDK,即可看到详细的开发文档说明

接下来,我们看看文档中的相关说明:

  • 接口描述

基于该接口,开发者可以轻松的获取语音合成能力

  • 请求说明

合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

举例,要把一段文字合成为语音文件:

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result  = client.synthesis('你好百度', 'zh', 1, {
   'vol': 5,
}) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
   with open('auido.mp3', 'wb') as f:
       f.write(result)

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码

if not isinstance(result, dict):

with open('auido.mp3', 'wb') as f:

f.write(result)

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

相比于前两种模块,baidu-aip却是高端很多啊…喜欢的朋友可以下载了玩玩

转载网址:https://bbs.huaweicloud.com/blogs/115130?from=singlemessage&isappinstalled=0

使用Python将任正非400+篇演讲批量转化为语音https://www.jianshu.com/p/05f9874b6989

												

15.Python文本转化语音方法的更多相关文章

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

    文本转语音 如果把Python比喻成游戏中的一个英雄,你觉得它是谁?对于Dota老玩家来说,我会想到钢琴手卡尔!感觉Python和卡尔一样,除了生孩子什么都可以做的角色.日常生活中,我们会涉及到很多语 ...

  2. Python 文本转语音

    文本转语音,一般会用在无障碍开发.下面介绍如何使用Python实现将文本文件转换成语音输出. 准备 使用Speech API 原理 示例代码 小总结 pyttsx方式 原理 示例代码 小总结 pytt ...

  3. py库:文本转为语音(pywin32、pyttsx)

    http://blog.csdn.net/marksinoberg/article/details/52137547 Python 文本转语音 文本转为语音(使用Speech API) 需要安装 py ...

  4. Python如何实现文本转语音

    准备 我测试使用的Python版本为2.7.10,如果你的版本是Python3.5的话,这里就不太适合了. 使用Speech API 原理 我们的想法是借助微软的语音接口,所以我们肯定是要进行调用 相 ...

  5. python练习一—文本转化渲染为html

    想学习python已经很久了,以前使用ArcGIS的时候学习过一些简单的python语法,用来进行一些简单的GIS数据处理,但是后来并没有用到工作中也就荒废了,后来断断续续看过一些,最近想学习一门新的 ...

  6. python文本 单独处理每个字符的方法汇总

    python文本 单独处理字符串每个字符的方法汇总 场景: 用每次处理一个字符的方式处理字符串 方法: 1.使用list(str) >>> a='abcdefg'    >&g ...

  7. C# 将html文本转化为 文本内容方法TextNoHTML

    不记得在哪看过这个,挺实用的 /// <summary> /// 将html文本转化为 文本内容方法TextNoHTML /// </summary> /// <para ...

  8. Python实现机器人语音聊天

    一.前言说明 1.功能简述 登录后进入聊天界面,如果服务器都在同一个地址,则都进入同一个房间 进入/离开/发消息同一房间用户都可以看到,输入“tuling”或“chatbot”可以切换为和Tuling ...

  9. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

随机推荐

  1. js递归遍历树结构(tree)

    如图: 代码: let datas = [] //是一个树结构的数据 setName(datas){ //遍历树 获取id数组 for(var i in datas){ this.expandedKe ...

  2. SpringBoot使用logback输出日志并打印sql信息 --经典---

    最近在学习springboot以及一些springcloud插件的使用,其中发现默认的配置并不能打印一些有用的日志,所以需要自定义一些日志输出方式以便于查看日志排查问题,目前只整理了两种使用方式,如下 ...

  3. H3C 面向连接和无连接的服务

  4. javascript 元素的大小

    1.偏移量 元素的可见大小由其高度.宽度决定,包括所有内边距.滚动条和边框大小(不包含外边距).通过下列4个属性可以获取元素的偏移量: offsetHeight: offsetWidth: offse ...

  5. java分配内存空间

    分配内存空间 数组名=new 数据类型[数组长度]: new关键字用来实现为数组或对象分配内存 (堆内存) 数组具有固定的长度.获取数组的长度: 数组名.length 定义数组+分配内存空间 数据类型 ...

  6. HTML DOM clearInterval() 方法

    定义和用法 clearInterval() 方法可取消由 setInterval() 设置的 timeout. clearInterval() 方法的参数必须是由 setInterval() 返回的 ...

  7. Django入门总结

  8. win10 uwp release 因为 Entry Point Not Found 无法启动

    本文告诉大家如果在使用 release 编译时,无法启动应用,出现 Entry Point Not Found 如何让应用运行. 程序"[30760] xx.exe"已退出,返回值 ...

  9. poj 3275 "Ranking the Cows"(DFS or Floyd+bitset<>)

    传送门 题意: 农场主 FJ 有 n 头奶牛,现在给你 m 对关系(x,y)表示奶牛x的产奶速率高于奶牛y: FJ 想按照奶牛的产奶速率由高到低排列这些奶牛,但是这 m 对关系可能不能精确确定这 n ...

  10. idea运行项目时报错:Error:java无效的源发行版:1.8

    解决办法:project structure中设置 JDK 和language 匹配即可.如图: 另外如果有maven,需要把maven中JDK版本设置成一样的.