python实现语音在线合成,让你的小说自己念给你听
时间:2022-07-25
本文章向大家介绍python实现语音在线合成,让你的小说自己念给你听,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
有声小说相信大家都不陌生了, 里面的音频基本都是一些声优录制的。其实除了录制音频, 咱们可以利用百度开放的api接口使用python语言在线合成语音。
制作属于自己的有声小说, 一睹为快吧!!
本文内容:
- 爬取指定章节的小说
- 调用百度api开放接口实现文字转换语音
- 读取文本的处理, 保存音频数据
环境介绍:
- python 3.6
- pycharm
- requests
- re
- aip
代码
import re
import requests
from aip import AipSpeech
def get_novel(number):
# 1、分析目标网页,确定爬取的url路径,headers参数
url = 'http://www.xbiquge.la/10/10489/'
# 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据
response = requests.get(url)
response.encoding = response.apparent_encoding # 自动识别响应体的编码
html_data = response.text
# print(html_data)
# 3、解析数据
result_list = re.findall("<dd><a href='(.*?)' >.*</a></dd>", html_data)
# print(result_list)
# 为了测试只下载一个章节的小说
sound = result_list[int(number)]
# 构造小说内容页的网址
all_url = 'http://www.xbiquge.la' + str(sound)
# print(new_url)
response_1 = requests.get(all_url)
response_1.encoding = response.apparent_encoding
html_data_2 = response_1.text
result = re.findall('<div id="content">(.*?)<p>.*</p></div>', html_data_2, re.S)
# print(result)
# 保存数据
with open('a.txt', mode='w', encoding='utf-8') as f:
f.write(result[0].replace(' ', '').replace('<br/>', 'n').replace('<br />', ''))
def change_talk():
""" 你的 APPID AK SK """
app_id = ''
api_key = ''
secret_key = ''
client = AipSpeech(app_id, api_key, secret_key)
# 处理文本长度
with open('a.txt', 'r', encoding='utf-8') as f:
flag = 0
while True:
flag += 1
text = f.read(1023) # 每次读取 1024 个字节(即 1 KB)的内容
if not text:
break
# print(text)
# print('*' * 300)
result = client.synthesis(text, 'zh', '1',
{"vol": 9,
"spd": 4,
"pit": 9,
"per": 0,
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict): # 如果返回的数据不是字典, 那就是二进制音频数据
with open('video\{}.mp3'.format(str(flag)), 'wb') as file:
file.write(result)
print('正在生成第 {} 段语音........'.format(flag))
if __name__ == '__main__':
num = input('输入想要朗读的章节(数字):')
get_novel(num)
change_talk()
成果展示:
- asp.net mvc中的路径选择
- MVC中实现加载更多
- 在ASP.NET MVC 中获取当前URL、controller、action
- [转自Scott]ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景
- MVC前台Post/Get异步获得数据时参数的取值问题
- IQueryable与foreach的困惑?
- ModalPopupExtender用法示例
- MVC中局部视图的使用
- MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题
- ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
- View与Control间的数据交互
- C#中Dispose和Close的区别!
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django封装交互接口代码
- 使用K.function()调试keras操作
- tensorflow图像裁剪进行数据增强操作
- ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
- Python+PyQt5+MySQL实现天气管理系统
- 浅谈Python协程
- Python logging模块异步线程写日志实现过程解析
- php-fpm重启导致的程序执行中断问题详解
- Python Socket TCP双端聊天功能实现过程详解
- django 将自带的数据库sqlite3改成mysql实例
- 利用python对mysql表做全局模糊搜索并分页实例
- PHP chop()函数讲解
- Linux下安装Memcached服务器和客户端与PHP使用示例
- PHP xpath()函数讲解
- CentOS7编译安装php7.1的教程详解