使用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简单实现TCP包发送十六进制数据的方法
Apr 16 Python
Python多层装饰器用法实例分析
Feb 09 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python SMTP实现发送带附件电子邮件
May 22 Python
基于python的ini配置文件操作工具类
Apr 24 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
Python extract及contains方法代码实例
Sep 11 Python
python em算法的实现
Oct 03 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
用python对excel查重
Dec 07 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 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 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
利用Python破解验证码实例详解
2016/12/08 Python
关于Django外键赋值问题详解
2017/08/13 Python
利用python如何处理nc数据详解
2018/05/23 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
pytorch构建多模型实例
2020/01/15 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
Python3获取cookie常用三种方案
2020/10/05 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
服装厂厂长职责
2013/12/16 职场文书
冬季安全检查方案
2014/05/23 职场文书
临床专业自荐信
2014/06/22 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
安全温馨提示语大全
2015/07/14 职场文书
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL