使用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的struct模块中进行数据格式转换的方法
Jun 17 Python
Python3 queue队列模块详细介绍
Jan 05 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
python爬取微博评论的实例讲解
Jan 15 Python
Python入门基础之数字字符串与列表
Feb 01 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
php4的session功能评述(一)
2006/10/09 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
js自定义回调函数
2015/12/13 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
js中this对象用法分析
2018/01/05 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
python抓取网页中链接的静态图片
2018/01/29 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
什么是唯一索引
2015/07/05 面试题
物流仓管员岗位职责
2013/12/04 职场文书
收入证明怎么写
2015/06/12 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript