博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python制作专属有声小说(调用百度语音合成接口)
阅读量:2070 次
发布时间:2019-04-29

本文共 2804 字,大约阅读时间需要 9 分钟。

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:merlin&

这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取


百度云接口调用

百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调用这个接口五千次,非常适合我们玩转这些功能。

注册百度云账号

首先打开百度云语音合成模块接口地址

打开网址后点击《立即使用》选项,然后会出现登录的选项界面。如果没有账号,需要先注册一个百度云账号,注册方法非常简单,我就不过多赘述了

登录账号之后,会自动进入控制台界面,因为现在我们还没有创建应用,这里显示的就是0个

在这里插入图片描述
点击应用列表,创建应用,弹出的创建应用配置项,其中的内容随意填写即可
在这里插入图片描述
填写完成,点击立即创建,返回到应用列表,此时可发现我的应用下多出了一个应用项目
在这里插入图片描述

使用接口

  • 安装模块

在python环境下使用该接口必须要安装模块

pip install baidu-aip

安装成功可见如下提示

在这里插入图片描述

  • 生成一段语音

通过查看百度语音合成的技术文档,可以发现如下的几个参数:

在这里插入图片描述
将这些参数传递到技术文档所给的框架中,就可以生成一段语音:

from aip import AipSpeechapp_id = '你的Appid'api_key = '你的API key'secret_key = '你的 screct key'client = AipSpeech(app_id,api_key,secret_key)result = client.synthesis('人生得意须尽欢,莫使金樽空对月','zh','1',                         {
"vol": 9, "spd": 4, "pit": 9, "per": 3, })with open("audio.mp3","wb") as f: f.write(result)

运行完这一段代码之后,就会在当前文件夹下生成一个audio.mp3的音频文件,打开之后就是可以听到朗诵的诗句

  • 小说文字转语音

在阅读了技术文档之后,可知这个模块最大的限制就是一次转换的语音不能超过1024字节(大约是512个汉字),所以我们要进行的第一步操作就是将一篇小说切割成若干个五百字数的文本文档。

首先我先找到一篇小说,将它复制到文档中,命名为read.txt 接下来我准备使用代码来切割小说内容,一段的字数为500字

先将小说的内容提取出来,每隔1000个字节(500字)加上“—”的符号作为切割标志

with open('read.txt','r') as a:    text = a.readlines()for cut in text:    #以1000个字节的长度进行分割    text_cut = re.findall('.{1000}', cut)    text_cut.append(cut[(len(text_cut) * 1000):])    #在分割后的字符串中间插入"---"    text_final = '---'.join(text_cut)#计算文本中有多少个"---"标志times = text_final.count('---')

之后将文本以—为标志进行分割,并分别将内容赋值到name变量中。正常来说,列表的起始位为第0位,但是为了满足我们的阅读习惯,所以将这些文本从1开始计数

for n in range(0,times+1):    name = text_final.split('---')[n]

最后一步,将提取出来的文本内容传入api接口,输出语音文件

完整代码

将三个参数替换成之前申请的内容

import refrom aip import AipSpeech===========================||python学习群:695185429 ||===========================app_id = 'id'api_key = 'APIkey'secret_key = 'screctkey'client = AipSpeech(app_id,api_key,secret_key)with open('read.txt','r') as a:    text = a.readlines()for cut in text:    #以1000个字节的长度进行分割    text_cut = re.findall('.{1000}', cut)    text_cut.append(cut[(len(text_cut) * 1000):])    #在分割后的字符串中间插入"---"    text_final = '---'.join(text_cut)#计算文本中有多少个"---"标志times = text_final.count('---')for n in range(0,times+1):    name = text_final.split('---')[n]    result = client.synthesis(name, 'zh', '1',                              {
"vol": 9, "spd": 4, "pit": 9, "per": 3, }) with open('test/' + str(n + 1) + '.mp3', "wb") as d: print('正在生成第' + str(n + 1) + '段语音......') d.write(result)

实现结果:

在这里插入图片描述
打开test文件夹,点击mp3文件就可以开始听小说了
在这里插入图片描述
有一说一,这个百度人工智能所装换的语音非常像有个人在你旁边给你读书,体验感远超pyttsx3模块,非常nice!

百度的人工智能接口还有非常多好用的功能,例如人脸识别、语音转文字、人脸对比…感兴趣的同学可以自己去探索一下

转载地址:http://bwnmf.baihongyu.com/

你可能感兴趣的文章
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>