使用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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
关于Python的一些学习总结
May 25 Python
python绘制中国大陆人口热力图
Nov 07 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
python如何编写win程序
Jun 08 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
详解Python中的条件判断语句
2015/05/14 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python连接Redis的基本配置方法
2018/09/13 Python
django admin组件使用方法详解
2019/07/19 Python
Python 面向对象部分知识点小结
2020/03/09 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
六月份红领巾广播稿
2014/02/03 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
写自荐信的注意事项
2014/03/09 职场文书
主办会计岗位职责
2014/03/13 职场文书
大学生社会实践方案
2014/05/11 职场文书
大学迎新标语
2014/06/26 职场文书
地道战观后感500字
2015/06/04 职场文书
力克胡哲观后感
2015/06/10 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
生日寿星公答谢词
2015/09/29 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL