使用Python实现文字转语音并生成wav文件的例子


Posted in Python onAugust 08, 2019

目前手边的一些工作,需要实现声音播放功能,而且仅支持wav声音格式。

现在,一些网站上支持文字转语音功能,但是生成的都是MP3文件,这样还需要额外的软件来转成wav文件,十分麻烦。

后来,研究Python,发现Python可以很容易的实现上面的功能。

步骤如下,

1。使用百度语音实现TTS(Text To Speech),生成mp3文件;

2。 使用pydub和ffmpeg实现mp3转wav格式。

下面,先上简单的示例代码,然后对代码作简单的分析。

#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
from aip import AipSpeech
from pydub import AudioSegment
 
# Step 1, Using baidu AI to generate mp3 file from text
#input your APP_ID/API_KEY/SECRET_KEY
APP_ID = 'Your_APP_ID' 
API_KEY = 'Your_API_KEY' 
SECRET_KEY = 'Your_Secret_Key' 
 
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 
result = client.synthesis('你好百度, good morning', 'zh', 1, { 'vol': 5,'per':4 }) 
 
if not isinstance(result, dict): 
 with open('test.mp3', 'wb') as f: 
  f.write(result)
 
# Step 2, convert the mp3 file to wav file
sound = AudioSegment.from_mp3('test.mp3')
sound.export("test.wav", format="wav")

运行上面的python代码,就会生成test.mp3和test.wav,使用命令“aplay test.wav”,可以测试播放声音。

下面对代码做解析,

1。在运行之前,需要安装下面的库,

1.1 安装百度AI模块,安装命令“pip install baidu-aip”

1.2 安装pydub,pydub是python的一个音频处理库处理,能对wav格式的音频直接进行处理,安装命令“pip install pydub”

1.3 安装ffmpeg,可以实现对mp3格式的处理,安装命令“sudo apt-get install ffmpeg”

2。需要注册百度的应用开发者账户,

用户可以自行去下面的网站去注册语音合成-百度AI​ai.baidu.com,注册百度云之后,去控制台创建应用,过程比较简单。

大家可以对上述代码进行进一步的优化,以实现自己想要的功能。

下面是完整的Python代码,大家可以拿来使用,

#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
"""
 module: baiduVoiceGenerate
 platform: Linux
 description: Generate Speech from Text, and convert the audio to wav file.
 Precondition: Please install below module before run this progrom,
     1. pip install baidu-aip
     2. pip install pydub
     3. sudo apt-get install ffmpeg
 creater: Guangwei Jiang
 create time: 2018-11-21
"""
from aip import AipSpeech
from pydub import AudioSegment
import time
 
#input your own APP_ID/API_KEY/SECRET_KEY
APP_ID = '14891501' 
API_KEY = 'EIm2iXtvDSplvR5cyHU8dAeM' 
SECRET_KEY = '4KkGGzTq2GVrBEYPLXXWEEIoyLL1F6Zt ' 
 
print("baiduVoiceGenerate: V1.0, by Guanagwei_Jiang, 20181121")
str = raw_input("请输入要转成语音的文字: ")
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 
result = client.synthesis(str, 'zh', 1, { 'vol': 5,'per':4 }) 
 
if not isinstance(result, dict): 
 with open('temp.mp3', 'wb') as f: 
  f.write(result)
 
sound = AudioSegment.from_mp3('temp.mp3')
sound.export(time.strftime("%Y%m%d_%H%M%S", time.localtime())+".wav", format="wav")

以上这篇使用Python实现文字转语音并生成wav文件的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的面向对象思想分析
Jan 14 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
ipython和python区别详解
Jun 26 Python
python 获取等间隔的数组实例
Jul 04 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
Python谱减法语音降噪实例
Dec 18 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
python re.match()用法相关示例
Jan 27 Python
django基于restframework的CBV封装详解
Aug 08 #Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 #Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 #Python
Python generator生成器和yield表达式详解
Aug 08 #Python
利用python实现短信和电话提醒功能的例子
Aug 08 #Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 #Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 #Python
You might like
PHP中用hash实现的数组
2011/07/17 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php实现点击可刷新验证码
2015/11/07 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
javascript类型转换示例
2014/04/29 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python opencv如何实现图片绘制
2020/01/19 Python
用python批量下载apk
2020/12/29 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
应届毕业生通用的自荐书范文
2014/02/07 职场文书
学生周末长期请假条
2014/02/15 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
公司的力量观后感
2015/06/05 职场文书
大学生党课感想
2015/08/11 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书