《奇巧淫技》系列-Python实现 文字转语音,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字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

在这里插入图片描述

扫描二维码关注公众号,回复: 8493177 查看本文章

从文档中提供的表格中可以看到,宅男们想要的御姐音,萝莉音,萌妹音就修改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)

既然学会了文字转语音,那我加上天气预报语音 一起 每天以邮件方式发送给喜欢的人岂不是很完美?那赶紧动手操作吧!
python!!每日早上八点自动向QQ邮箱发送天气预报邮件

https://blog.csdn.net/weixin_45081575/article/details/102886718

根据上述操作,自行DIY专属于你的语音吧!!
好了,本次的分享就到这里。
这次的分享就到这里。如果有什么疑问可以在下方留言哦。

发布了34 篇原创文章 · 获赞 210 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45081575/article/details/103043870