使用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实现class对象转换成json/字典的方法
Mar 11 Python
Python爬取三国演义的实现方法
Sep 12 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
python实现自动登录
Sep 17 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python基于tkinter实现gif录屏功能
May 19 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的安全
2006/10/09 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
python字典排序实例详解
2015/05/20 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
使用python求解二次规划的问题
2020/02/29 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Python如何实现线程间通信
2020/07/30 Python
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
中学教师岗位职责
2013/11/26 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
合伙购房协议样本
2014/10/06 职场文书
公司周年庆典标语
2014/10/07 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python