使用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提取html文件中的特定数据的实现代码
Mar 24 Python
跟老齐学Python之做一个小游戏
Sep 28 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 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-MySQL教程归纳总结
2008/06/07 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
详解VUE 数组更新
2017/12/16 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
投标邀请书范文
2014/01/31 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
大学生党员个人总结
2015/02/13 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
小学数学教学反思范文
2016/02/16 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python