python pyttsx3模块初探及实战项目 (爬取小说后朗读出来)

实战项目: 利用urllib爬取小说网站内容后朗读出来
涉及模块 pyttsx3,(安装pip install pyttsx3)
环境PyCharm+python3.6.3
在项目进行之前,我们首先要配置下自己的环境,找到发出声音的东西。不然,硬件设备不支持,没用的!

#利用pywin32模块,来实现微软的语音接口调用
#安装pip3 install pywin32
import win32com.client
#微软这个服务器
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("你好,小姐姐,能加个微信吗?")

之后运行,就会听到悦耳的声音!
然后,我们简单看一下pyttsx3模块的用法

import pyttsx3
engine = pyttsx3.init()
engine.say('君不见,黄河之水天上来,奔流到海不复回。')
engine.say('君不见,高堂明镜悲白发,朝如青丝暮成雪。')
#运行并且等待
engine.runAndWait()

我们看一下pyttsx3.init()的源代码

image.png

从方法声明上来看,第一个参数指定的是语音驱动的名称,这个在底层适合操作系统密切相关的。如下:
drivename:由pyttsx.driver模块根据操作系统类型来调用,默认使用当前操作系统可以使用的最好的驱动
sapi5 - SAPI5 on Windows
nsss - NSSpeechSynthesizer on Mac OS X
espeak - eSpeak on every other platform
debug: 这第二个参数是指定要不要以调试状态输出,建议开发阶段设置为True
接下来看一下pyttx3的一些常规操作。
getProperty #获取当前引擎实例的属性值
setProperty #设置当前引擎实例的属性值

#更改声音(音色处理)
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
print(len(voices))
for voice in voices:
    engine.setProperty('voice', voice.id)
    engine.say('I will always love you ')
    engine.runAndWait()

发现打印出voices的长度为2,系统默认两种声音


image.png
#控制语速(频率处理)
import pyttsx3
engine = pyttsx3.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate-150)
engine.say('I will always love you')
engine.runAndWait()

到这里,运行结果听一下,有没有一种树懒的感觉,哈哈

#控制音量
import pyttsx3
engine = pyttsx3.init()
volume = engine.getProperty('volume')
#engine.setProperty('volume', volume-0.25) 不明显
engine.setProperty('volume', volume-0.75)
engine.say('I will always love you')
engine.runAndWait()

到这里,我们整理一下,对txt文件中的内容进行朗读
直接上代码,对文件操作不熟悉的,自行百度

import pyttsx3
with open('2.txt','r',encoding='utf-8') as f:
    line = f.read()#文件不大,一次性读取
    engine = pyttsx3.init()
    #调整频率
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate-50)
    # 调整音量
    volume = engine.getProperty('volume')
    engine.setProperty('volume', volume+0.25)
    engine.say(line)
    engine.runAndWait()

朗读的内容是李白的《将进酒》,不足之处,对多音字没处理(感兴趣的同学可以尝试做一下容错)


image.png

好的,到这里,开始今天的实战项目-----爬取小说,朗读出来
项目开始之前我们首先要分析:
第一步:爬取小说网站
第二步:利用xpth 获取内容
第三步:利用文件操作生成一个txt文件
第四步:处理文件内容
第五步:读取出来
直接上代码

from urllib import request
import time
import pyttsx3
from lxml import etree
#小说《大医凌然》 志鸟村 著
url = 'https://read.qidian.com/chapter/Y8j5WWawoqd1C4AOuV6yIg2/oG-HexlEuhG2uJcMpdsVgA2'
headers = {
    "Referer": "https://read.qidian.com/",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
req = request.Request(url=url,headers=headers)
response = request.urlopen(req)
content = response.read().decode()
#复制html中的文本的XPath
##//*[@id="chapter-406583253"]/div/div[2]/p[1]
# print(content)
xpath_content = etree.HTML(content)
new_content = xpath_content.xpath('//*[@id="chapter-406583253"]/div/div/p/text()')
#print(new_content)
with open('3.txt','w',encoding='utf-8') as f:
    for i in new_content:
        f.writelines(i.strip())
        f.writelines('\n')
time.sleep(2)
with open('3.txt','r',encoding='utf-8') as f:
    line = f.read()
    engine = pyttsx3.init()
    volume=engine.getProperty('volume')
    engine.setProperty('volume', volume + 0.25)
    engine.say(line)
    engine.runAndWait()

运行结束,开始朗读
我们对比下爬取文本的内容和小说内容,发现一致,

image.png

image.png

感谢阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,522评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,693评论 2 59
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,055评论 1 19
  • 今天的咖啡冥想 1,昨晚跟一个意大利人传播金刚智慧,告诉他解脱生命轮回的办法,种下学习语言的种子。 2,今早飞机,...
    Angelaxu阅读 150评论 0 0
  • 迷迷糊糊睡着了,睡几十分钟醒过来一次,每次都伴随着恶心呕吐,我感觉我快不行了。 今天就偷点懒,放个以前的随笔: 这...
    囡囡很皮呀阅读 172评论 0 0