最近工作中测试ASR,语音识别系统。人工读太累,想自动化来实现。给一段text,能给我发出正确的声音,然后按住按钮,产品能够录制下来并且正常识别。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

可不可以实现呢,万能的python当然是可以的。
搜了一下文字转语音,发现python的库还是很多的。
主要来源于单纯的声音库类,多媒体库类的音频模块,游戏库的音频模块,界面窗口库自带的媒体播放模块
pyaudio
pydub
pyglet
pygame

网页正文识别也不在话下。这里我尝试了 readability、goose3。

1.1 readability

readability 支持 Python3,使用 pip install readability-lxml 安装即可。

readability 使用起来也很方便:

import requests
from readability import Documentresponse = requests.get('http://news.china.com/socialgd/10000169/20180616/32537640_all.html')
doc = Document(response.text)
print(doc.title())

但是 readability 提取到的正文内容不是文本,里面仍包含 HTML 标签。

当然也可以结合其他组件再对 HTML 进行处理,如 html2text,我们这里就不再延伸,有兴趣的可以自行尝试。

1.2 goose3

Goose 本来是一个用 Java 编写的文章提取器,后来就有了 Python 实现版:goose3 。

使用起来也很方便,同时对中文支持也不错。使用 pip install goose3 即可安装。

 from goose3 import Goose
from goose3.text import StopWordsChinese
url  = 'http://news.china.com/socialgd/10000169/20180616/32537640_all.html'g = Goose({'stopwords_class': StopWordsChinese})
article = g.extract(url=url)print(article.cleaned_text[:150])

可以看出网页正文提取效果还不错,基本满足我们的要求,可以使用!
这样爬取网页内容就很容易了。当然你也可以自己写爬虫。

我还发现一个这样的库:
pyttsx3(Text to Speech)是一个语音转换模块,它可以在离线的环境下工作,支持多个引擎
安装

pip install pyttsx3

尝试

import pyttsx3teacher = pyttsx3.init()
teacher.say('Hello World!')
teacher.runAndWait()

朗读中文

import pyttsx3msg = '''盼望着,盼望着,东风来了,春天的脚步...'''
teacher = pyttsx3.init()
teacher.say(msg)
teacher.runAndWait()

调节语速

import pyttsx3msg = '''盼望着,盼望着,东风来了,春天的脚步...'''
teacher = pyttsx3.init()
rate = teacher.getProperty('rate')
teacher.setProperty('rate', rate + 20)
teacher.say(msg)
teacher.runAndWait()

变换声音

import pyttsx3msg = '''天行健,君子自强不息'''
teacher = pyttsx3.init()
voices = teacher.getProperty('voices')
for i in voices:teacher.setProperty('voice', i.id)teacher.say(msg)
teacher.runAndWait()

读英文还好,但是,读不出中文,于是搜了一个答案,说要在windos机器上改个注册表

engine.setProperty("voice","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0")

尝试了一下,是可以读出中文,但是读出来的太机械,很明显的机器的声音。对于我自动化已经满足,如果要来听书,还是要找个萝莉音更爽。

然后看到说有某度的AI语音识别,需要注册百度的应用开发者账户,

用户可以自行去下面的网站去注册[语音合成-百度AIai.baidu.com,注册百度云之后,去控制台创建应用,过程比较简单。
用python实现起来也比较简单:
步骤如下,

1.1 安装百度AI模块,安装命令“pip install baidu-aip”

1.2 安装pydub,pydub是python的一个音频处理库处理,能对wav格式的音频直接进行处理,安装命令“pip install pydub”

1.3 安装ffmpeg,可以实现对mp3格式的处理,安装命令“sudo apt-get install ffmpeg”

其中的参数如下:
参数 类型 描述 必传
tex String 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 是
lang String 语言选择,填写zh 是
ctp String 客户端类型选择,web端填写1 是
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为情感合成-度丫丫,默认为普通女 否

接口对单次传入的文本进行了限制,合成文本长度必须小于 1024 字节,如果文本长度过长,就需要进行切割处理,采用多次请求的方式,分别转换成语音文件,最后再将多个语音文件合并成一个
写段代码试试看

from aip import AipSpeech
from pydub import AudioSegment
import time#input your own APP_ID/API_KEY/SECRET_KEY
APP_ID = '14891501'
API_KEY = 'EIm2iXtvDSplvR5cyHU8dAeM'
SECRET_KEY = '4KkGGzTq2GVrBEYPLXXWEEIoyLL1F6Zt ' print("baiduVoiceGenerate: V1.0, by Guanagwei_Jiang, 20181121")
str = raw_input("请输入要转成语音的文字:")
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(str, 'zh', 1, { 'vol': 5,'per':4 })if not isinstance(result, dict):with open('temp.mp3', 'wb') as f:f.write(result)sound = AudioSegment.from_mp3('temp.mp3')
sound.export(time.strftime("%Y%m%d_%H%M%S", time.localtime())+".wav", format="wav")

于是就可以将爬到的文字,转换成语音。听下来效果还可以,可以根据参数换男/女声音,和感情度。

import re
from aip import AipSpeechapp_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)

可以将分段的语音,按照我前文的操作,所有的合并起来,就成了一个整体了。
或者使用pydub和ffmpeg实现wav转mp3格式。这样就实现了文字转声音。

python自制有声小说相关推荐

  1. Python喜马拉雅有声小说音频文件爬虫

    今天爬取的是喜马拉雅有声小说. 目标网址:https://www.ximalaya.com/youshengshu/ 分析操作开始: 首先在喜马拉雅有声小说页面,播放任意音频. 当播放音频时,打开抓包 ...

  2. 用Python制作有声小说

    作者:菜鸟哥 来源:程序员GitHub 大家好,欢迎来到 「Python数据之道」 ! 有不少朋友都热衷于看小说.俗话说:小说阅读一时爽,一直阅读一直爽.但是小说阅读时间久了,会给我们的眼睛带来很严重 ...

  3. 越来越好玩,用ChatGPT+Python 做有声小说!

    菜鸟学Python-第623篇原创 现在我们几百人的会员群已经玩的越来越高级了,利用chatgpt花色玩法!有玩百度问一问每天早上6点多起来抢单的,有玩微信机器人帮人部署接单的,也有玩咸鱼去给大学生指 ...

  4. python有声读书_来香一个,用Python做有声小说!

    对于小说,想必很多朋友都是十分的喜欢,也很热衷于阅读小说,小说阅读一时爽,一直阅读一直爽.但是小说阅读时间久了,会给我们的眼睛带来很严重的负担,造成眼部的一些不适. 为了解决这个问题,同时能够让大家体 ...

  5. Python制作属于自己的有声小说

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:merlin& PS:如有需要Python学习资料的小伙伴可 ...

  6. 懒人畅听网,有声小说类目数据采集,多线程速采案例,Python爬虫120例之23例

    多线程在 Python 爬虫学习过程中应用落地,提速,提速,再提速. 目标站点分析 本次要抓取的目标为懒人畅听网,其中我随机选择了一个分类,有声小说频道,其余频道可使用雷同的办法抓取,增加遍历之后,可 ...

  7. python爬取有声小说网站实现自动下载实例

    最近想下载一些有声小说,但是苦于没有找到批量下载,每次都是单集单集的下载的,觉得很麻烦,就考虑用python写一个爬虫来实现自动搜集小说,自动下载.下面就是开始展开漫漫的爬虫之路. 基础的就不多说了, ...

  8. python爬取有声小说_2019-04-23-Python爬取有声小说

    Python爬取有声小说 [toc] 通过python爬取网站的资源,实现批量下载功能: 记录一次自己的学习经历,小白,非专业,难免有不足之处,望读者取其精华! 摘要 功能如下: 1.批量下载 2.批 ...

  9. Python爬取有声小说

    Python爬取有声小说 文章目录 Python爬取有声小说 摘要 1.获取下载链接 2.分析规律,循环爬取 3.保存到本地,批量命名 4.界面设计 5.效果展示 通过python爬取网站的资源,实现 ...

最新文章

  1. 《概率机器人》里程计运动模型gmapping中代码解析
  2. 国家标准油类计算机,食用油新国标正式实施 产品配方将不再是“机密”
  3. java input 数组_Java基础之:数组
  4. 西电计算机学院(原软件学院)软件工程考研复试
  5. visual studio for mac的离线安装初体验
  6. HDU - 7084 Pty loves string kmp + fail树 + 主席树
  7. 简要安装FreeBSD 6.2及配置桌面环境[zz]
  8. strutr2运行流程
  9. Spring Cloud Bus 消息总线实现配置自动刷新
  10. linux下安装配置svn独立服务器
  11. Ora-12505 故障
  12. ThinkPHP5.0-多语言切换
  13. 【模电】0007 有源滤波器2(二阶有源滤低通波器)
  14. 成功学大师枭哥搞砸了,听懂掌声!
  15. 【2021最后一波官方福利】七天玩转Redis | 打卡还能领周边活动开始啦
  16. C++ uint8_t
  17. C语言int型数据范围
  18. 3D游戏建模线上和线下学习的区别
  19. php开源 tpshop,TPshop免费开源商城系统
  20. 市场调研—全球及中国细胞模型行业研究及十四五规划分析报告

热门文章

  1. [转载]堆排序(HeapSort) Java实现
  2. Mybatis if test 中int判断非空的坑
  3. python package 的两种组织方式
  4. Android SubsamplingScaleImageView(subsampling-scale-image-view)单双击长按事件【系列2】
  5. elasticsearch Java API 之Delete By Query API
  6. VNC客户端连接MacOS时一闪而过的解决办法
  7. 表1 中的值 给表2
  8. Nodejs线上日志部署
  9. 容器编排技术 -- 从零开始k8s
  10. 解决小程序图片在开发者工具能显示,测试时真机不显示问题