使用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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
详解Python中break语句的用法
May 14 Python
node.js获取参数的常用方法(总结)
May 29 Python
使用python实现BLAST
Feb 12 Python
python绘制立方体的方法
Jul 02 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
Python操作qml对象过程详解
Sep 26 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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初学者头疼十四条问题大总结
2008/11/12 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
用cssText批量修改样式
2009/08/29 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Python定时器线程池原理详解
2020/02/26 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
2019年.net常见面试问题
2012/02/12 面试题
西柏坡导游词
2015/02/05 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android