Python将文字转成语音并读出来的实例详解


Posted in Python onJuly 15, 2019

前言

本篇文章主要介绍,如何利用Python来实现将文字转成语音。将文字转成语音主要有两种不同的实现方法:先将文字转成语音,然后再通过读取语音实现发音、直接调用系统内置的语音引擎实现发音,后一种方法的实现主要利用第三方库。

环境

Python版本:Anaconda 4.4.10

操作系统:win10

注意:在使用第三方库的时候,不同的操作系统和Python版本代码可能有所差别。

调用api

可以调用第三方的语音合成api生成音频文件,然后再播放音频文件即可,这里我使用的是百度语音合成api。

1、注册账号创建应用

在使用之前,需要先注册一个百度账号,然后再创建一个语音合成的api,需要拷贝AppID、API Key、Secret Key后面调用接口的时候需要使用。

Python将文字转成语音并读出来的实例详解

2、调用语音合成接口

python调用百度语音合成api接口详细文档:http://yuyin.baidu.com/docs/tts/196

3、安装百度提供的Python库:

如果已安装pip,执行pip install baidu-aip即可。

如果已安装setuptools,执行python setup.py install即可。

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)

播放音频文件

安装playsound:pip install playsound

from playsound import playsound

playsound("auido.mp3")

利用系统内置语音引擎实现发音

1. Pyttsx

Pyttsx是一个跨平台将文字转成语音的第三方库,它对操作系统内置的语音引擎实现了包装。

Pyttsx安装

Python2:pip install pyttsx

Python3:pip install pyttsx3

代码

import pyttsx3

engine = pyttsx3.init()
engine.say("Good")
engine.runAndWait()

pyttsx默认使用的是读取英文引擎,如果需要读取中文时需要修改语言设置,不然可能会报错或者无法发音,首先我们需要参考系统支持的语言类型和参数,通过以下代码可以查看

engine = pyttsx3.init()
voices = engine.getProperty("voices")
for item in voices:
 print(item.id,item.languages)

Python将文字转成语音并读出来的实例详解

可以看到ZH-CN的参数,表示的是中文,然后将代码修改成如下即可

engine = pyttsx3.init()
engine.setProperty("voice","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Sp
 eech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0")
engine.say("你好吗?")
engine.runAndWait()

2. gTTS

gTTS可以将文字转成语音进行保存为MP3格式,然后再读取语音实现发音,它是通过调用Google提供的TTS服务来实现将文字转语音的,因为需要调用Google的服务,所以需要翻墙,因为缺少环境所以下面的代码是没有测试过的。调用下面代码的时候,需要设置在代码中设置代码或者全局代理。

from gtts import gTTS
import os

tts = gTTS(text="come on",lang="en")
tts.save("test.mp3")
os.system("mpg321 test.mp3")

如果需要生成wav格式的音频文件,可以利用FFmpeg将MP3的音频文件转成wav格式。

操作系统内置引擎

利用win32com来调用Windows操作系统内置的语音引擎实现文字的发音

以上这篇Python将文字转成语音并读出来的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
朴素贝叶斯算法的python实现方法
Nov 18 Python
Python用GET方法上传文件
Mar 10 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
python读取LMDB中图像的方法
Jul 02 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
Django 创建/删除用户的示例代码
Jul 24 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 #Python
Python符号计算之实现函数极限的方法
Jul 15 #Python
在python 中split()使用多符号分割的例子
Jul 15 #Python
Python-Seaborn热图绘制的实现方法
Jul 15 #Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 #Python
python 用所有标点符号分隔句子的示例
Jul 15 #Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 #Python
You might like
php建立Ftp连接的方法
2015/03/07 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
深入理解JS异步编程-Promise
2019/06/03 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
决策树的python实现方法
2014/11/18 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
python实现事件驱动
2018/11/21 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python 实现线程之间的通信示例
2020/02/14 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
幼儿园元旦家长感言
2014/02/27 职场文书
党支部工作总结2015
2015/04/01 职场文书
初中毕业生感言
2015/07/31 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书