使用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实现文件复制删除
Apr 19 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
全面分析Python的优点和缺点
Feb 07 Python
python利用微信公众号实现报警功能
Jun 10 Python
10个Python小技巧你值得拥有
Sep 29 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
python实现双色球随机选号
Jan 01 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python实现滑雪小游戏
Sep 25 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作的文本留言本的例子(六)
2006/10/09 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
Destoon模板制作简明教程
2014/06/20 PHP
php常用图片处理类
2016/03/16 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
Ext 今日学习总结
2010/09/19 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
Vue基础配置讲解
2019/11/29 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Django REST framework内置路由用法
2019/07/26 Python
pywinauto自动化操作记事本
2019/08/26 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
师范应届毕业生自荐信
2013/11/18 职场文书
销售文员岗位职责
2013/11/29 职场文书
服务标语口号
2014/07/01 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers