Python实战---制作专属有声小说(调用百度语音合成接口)
这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。
百度云接口调用
百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调用这个接口五千次,非常适合我们玩转这些功能。
注册百度云账号
首先打开百度云语音合成模块接口地址
打开网址后点击《立即使用》选项,然后会出现登录的选项界面。如果没有账号,需要先注册一个百度云账号,注册方法非常简单,我就不过多赘述了
登录账号之后,会自动进入控制台界面,因为现在我们还没有创建应用,这里显示的就是0个
点击应用列表,创建应用,弹出的创建应用配置项,其中的内容随意填写即可
填写完成,点击立即创建,返回到应用列表,此时可发现我的应用下多出了一个应用项目
使用接口
安装模块
在python环境下使用该接口必须要安装模块
pip install baidu-aip
安装成功可见如下提示
生成一段语音
通过查看百度语音合成的技术文档,可以发现如下的几个参数:
将这些参数传递到技术文档所给的框架中,就可以生成一段语音:
from aip import AipSpeech
app_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 re
from aip import AipSpeech
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!
百度的人工智能接口还有非常多好用的功能,例如人脸识别、语音转文字、人脸对比......感兴趣的同学可以自己去探索一下
Python实战---制作专属有声小说(调用百度语音合成接口)的更多相关文章
- js调用百度地图接口
原文:js调用百度地图接口 这是前几天公司做的新项目,上面需要用到地图的数据.第一次做这类型的东西没啥思路,咱们经理说,这东西简单,截个图存文件夹里调整好尺寸,数据库里存上图片的地址动态调用就行了.心 ...
- Winform调用百度地图接口简单示例
1.首先用一个html文件调用百度地图接口(主要注册一个序列号): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- python录音并调用百度语音识别接口
#!/usr/bin/env python import requests import json import base64 import pyaudio import wave import os ...
- Winform调用百度地图接口
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using ...
- PHP 最完美调用百度翻译接口代码示例 (原)
php调用百度翻译最新接口代码 问 题:写的过程遇到了一个问题,url拼接好的原翻译内容,appid,sign的地址直接输出到浏览器可以打开看到翻译后的返回值,但是各种curl,file_ ...
- .net core 和 WPF 开发升讯威在线客服系统:调用百度翻译接口实现实时自动翻译
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...
- PHP调用百度天气接口API
//百度天气接口API $location = "北京"; //地区 $ak = "5slgyqGDENN7Sy7pw29IUvrZ"; //秘钥,需要申请,百 ...
- Unicode浅析——调用科大讯飞语音合成接口(日语)所遇到的天坑
如题,最近做的项目需要调用科大讯飞的语音合成接口,将日文合成日语.然后坑爹的是跟我对接的那一方直接扔过来一份接口文档,里面并未提及日语合成所需要的参数.中文.英文合成倒是没问题,就这个日语合成的音频始 ...
- python调用百度语音识别接口实时识别
1.本文直接上干货 奉献代码:https://github.com/wuzaipei/audio_discern/tree/master/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5% ...
随机推荐
- [组件封装]微信小程序-图片批量上传照片墙
描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...
- 关于MySQL数据库事务的机制学习总结
这几天面试多次被问到了数据库事务机制.隔离级别.乐观锁悲观锁类的问题,之前对这些只能说有所了解,有些概念还停留在记忆层面,没有理解,所以回答的不好.后面翻书学习了下,理解了一些东西,在此做一个记录. ...
- Web_Servlet—— Servlet生命周期
第4章 Servlet生命周期(重要) 4.1 Servlet生命周期概述 1,应用程序中的对象不仅在空间上有层次结构的关系,在时间上也会因为处于程序运行过程中的不同阶段而表现出不同的状态和不同的行为 ...
- JavaScript 模式》读书笔记(4)— 函数2
这篇,我们仍旧继续学习函数. 二.回调模式 函数都是对象,这表示它们可以作为参数传递给其它函数. function writeCode(callback) { // 执行一些事务... callbac ...
- 题解 P1748 【H数】
我来讲讲 \(dp\) 的做法 前言 昨天 \(PHY\) 大佬问我,这题怎么做?考虑到他没学过 \(set\) . \(priority_queue\) 和 \(queue\) .之后,我就想到了可 ...
- Tensorflow 介绍和安装
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:AI小昕 本系列教程将手把手带您从零开始学习Tensorfl ...
- 使用FME将CAD中块参照数据转换为shp数据
暴露出需要导出的字段值,首先在数据查看器中看看CAD中各个图层分别有哪些隐含的字段. CAD快参照中含有多个部分,需要将点按照原始编码聚合成一个点. 属性字段创建,并按照属性字段一一对应CAD中的字段 ...
- ehcahe + redis 实现多级缓存
1,了解数据存储的位置的不同 数据库:存储在磁盘上 redis:存储在内存上 ehcache:应用内缓存 缓存的目的:是为了将数据从一个较慢的介质上读取出来,放到一个较快的介质上,为了下次读取的时候更 ...
- 使用tensorflow实现cnn进行mnist识别
第一个CNN代码,暂时对于CNN的BP还不熟悉.但是通过这个代码对于tensorflow的运行机制有了初步的理解 ''' softmax classifier for mnist created on ...
- HashMap中使用自定义类作为Key时,为何要重写HashCode和Equals方法
之前一直不是很理解为什么要重写HashCode和Equals方法,才只能作为键值存储在HashMap中.通过下文,可以一探究竟. 首先,如果我们直接用以下的Person类作为键,存入HashMap中, ...