一、使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来

1.先安装

pip install pyttsx3

2.随便新建一个python文件,输入代码

import pyttsx3
engine = pyttsx3.init()
engine.say('hello world')
engine.say('你好吗')
engine.runAndWait()

电脑开启声音,耳机或者音响就可以听到 hello word 你好吗 的语音播报。

 

二、打开一个文本文件,一次性读取出来语音播报

这里如打开一个1.txt文件

1.txt文件内容是

将进酒

唐代:李白

君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听)
钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒)
古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯)
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

python3代码如下:

import pyttsx3
with open('1.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()

 

点运行就可以实现整个文本文件的语音播报

三、爬取小说,朗读出来

项目开始之前我们首先要分析:
第一步:爬取小说网站
第二步:利用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()

视频教程如下:https://edu.csdn.net/course/detail/26216

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐