使用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中的几种数据类型
Jan 02 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python中int()函数的用法浅析
Oct 17 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
Python实现的质因式分解算法示例
May 03 Python
Python中一些深不见底的“坑”
Jun 12 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
python中struct模块之字节型数据的处理方法
Aug 27 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python道路车道线检测的实现
Jun 27 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
使javascript也能包含文件
2006/10/26 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Python迭代器和生成器定义与用法示例
2018/02/10 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
pycham查看程序执行的时间方法
2018/11/29 Python
python实现键盘输入的实操方法
2019/07/16 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
企业宣传口号
2014/06/12 职场文书
资产运营委托书范本
2014/10/16 职场文书
员工升职自荐信
2015/03/27 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP