本文章纯野生,无任何借鉴或抄袭他人文章。坚持原创
前提一:有一篇你很喜欢的文章或者小说,阅读起来眼睛会很干涉之类的。
前提二:老人家看书不方便,将文字转换成语音,再进行播放。
前提三:想DIY你自己的御姐音,萝莉音,萌妹音…
通通都没有问题!python帮助你实现
前言
有以上前提之一,看这篇文章就对了。
而这篇文章!!将详细讲解如何实现文字转换为语音。
主要运用到的技术是 百度AI的语音合成,是百度AI开放平台提供的。
本次内容共有下面三个步骤。
1.创建百度AI应用
1.1创建应用
首先注册一个百度的账号,然后在登陆的主页:https://ai.baidu.com/ 这里选择 创建应用。
因为本次讲的是文字转语音,后面会调用到语音合成,所以在这里主要勾选文字识别的接口就足够了。
应用创建成功后,如下图。可以看到有 AppID,API Key,Secret Key对应着一堆字符,下面会用到。
1.2 查看开发文档
开发文档 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top
安装一个模块,即可进行百度语音识别的调用。
# cmd 执行以下命令即可
pip install baidu-aip
2.文字转语音代码
2.1 建立连接
基于百度文字识别的接口,我们就可以轻松的获取语音合成能力。
先来看一下开发文档说明,这个时候就需要用到创建应用的三个key了。
上面创建应用时候的三个APP_ID,API_KEY,SECRET_KEY现在就可以排上用场。
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
2.2 请求说明实例
看到请求说明,合成文本的长度是不能超过1024字节的。
合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制
从文档中提供的表格中可以看到,宅男们想要的御姐音,萝莉音,萌妹音就修改per的值就可以 了。
参数 | 类型 | 描述 | 必须 |
---|---|---|---|
tex | String | 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 | 是 |
cuid | String | 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内 | 否 |
spd | String | 语速,取值0-9,默认为5中语速 | 否 |
pit | String | 音调,取值0-9,默认为5中语调 | 否 |
vol | String | 音量,取值0-15,默认为5中音量 | 否 |
per | String | 发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 | 否 |
2.2.1 成功请求实例
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhCxxxxxxxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
print(result)
可以看到请求成功后返回的的是语音二进制文件的。
2.2.2 失败请求实例
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofMxxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5Uxxxxxxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', {
'vol': 5, 'per': 0
})
print(result)
而请求失败,则是返回dict
2.2.3 将文字合成语音文件
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grRRK87palH7LoR9cs7A'
SECRET_KEY = 'Ry7xN5UhC1mpnSGGcx7dyn8Zjwij8scY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
可以看到该程序的文件夹下面多了一个audio.mp3文件,打开听一听,就是文字转换后的语音文件了。
2.2.4 打造专属于你的御姐音,萌妹音等
这一步特别简单,只需要修改per的值便可,可男声可女声
pit的值也可以进行修改,可低音可高音。这些根据个人喜好DIY即可。
3.完整代码
如果不知道自己想生成一些什么语音,笔者在这里推荐一些API。
今日诗词 API:https://www.jinrishici.com/
每日一文 API:https://www.98api.cn/api/EveryArt.php
金山每日一句 API:https://api.ooopn.com/ciba/api.php
3.1 字符串合成语音
from aip import AipSpeech
APP_ID = '177657xx'
API_KEY = 'ofM3grxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhC1mpxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
3.2 txt文本合成语音
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grRRK87xxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhC1mpnSxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# test.txt 为同级目录下的文本
with open('test.txt', 'r') as f:
f_read = f.read()
result = client.synthesis(f_read, 'zh', 1, {
'vol': 5, 'per': 0
})
# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
既然学会了文字转语音,那我加上天气预报 与 语音 一起 每天以邮件方式发送给喜欢的人岂不是很完美?那赶紧动手操作吧!
https://blog.csdn.net/weixin_45081575/article/details/102886718
后话
根据上述操作,自行DIY专属于你的语音吧!!
好了,本次的分享就到这里。
如果有什么疑问可以在下方留言哦。