使用Python实现文字转语音并生成wav文件的例子
作者:jgw2008 发布时间:2021-06-27 03:29:52
标签:Python,文字,语音,wav
目前手边的一些工作,需要实现声音播放功能,而且仅支持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。需要注册百度的应用开发者账户,
用户可以自行去下面的网站去注册语音合成-百度AIai.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")
来源:https://blog.csdn.net/jgw2008/article/details/84324156


猜你喜欢
- 本文介绍一个用python结合xlsxwriter自动生成业务报表的程序。这里的业务数据采用的是指定的值,真实情况下需要其他程序来接入数据。
- python版本:3.5.4系统:win10 x64通过网页下载视频方法一:使用urllib.retrieve函数放函数只需要两个参数即可下
- 废话不多说 上语句:查询锁表语句:select object_name,machine,s.sid,s.serial#from v$lock
- 爆库语句,修改红色部分的数字挨个猜出库 /**/and/**/(select/**/top/**/1/**/isnull(cast([nam
- <form name="frm"><select name=school onchange="
- 一、需求来源:如果用户在文本框中填了一段<script>alert(xxx);</script>代码,然后我们还保存
- 问题你想自己去实现一个新的上下文管理器,以便使用with语句。解决方案实现一个新的上下文管理器的最简单的方法就是使用 contexlib 模
- python自带的IDLE使用起来非常方便,尤其是在编写调试小段代码的时候,但是安装了Anaconda的同志可能会发现,无法像直接安装pyt
- 本文主要介绍了python图片转为矢量图,分享给大家,具体如下:import numpy as npimport matplotlib.py
- windows系统下Python环境的搭建step1:下载Python程序 https://www.python.org/downloads
- 这样虽没有对功能有什么影响,可是体验总不怎么好,那如何解决这个问题了,网上有很多文章都有说过在被目标页加载后设置window.status
- 最近重温了一下位图分割的相关内容,发现网络上位图分割原理讲得已经很清楚了,但是代码多为C++实现或者Matlab实现,因为需要Python的
- 今天在群里,熊猫君提议整理一个帖子,一方面为初学者提供一个入门指南,另一方面也象借此和已经在从事这个行业进行一点交流。下面是我从事这个行当多
- 在Mac OS上安装redis首先是安装,它会默认安装到/usr/local/bin下cd /tmpwget http://redis.go
- 1、Bootstrap-table使用github:https://github.com/wenzhixin/bootstrap-table
- 一、什么是xml?有何特征?xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。例子:
- 本文实例为大家分享了opencv实现图像缩放效果的具体代码,供大家参考,具体内容如下图像缩放:图像缩放即对图像的大小进行调整,即放大或者缩小
- 如果我们在标识列中插入值,例如:insert member(id,username) values(10,'admin')
- 背景介绍最近在设计数据库的时候因为开始考虑不周,所以产生了大量的重复数据。现在需要把这些重复的数据删除掉,使用到的语句就是Group By来
- excel 文件内容如下:读取excel内容:import xlrdfrom datetime import datetimefrom xl