本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来;做这么个小工具主要是为了方便自己在平时看一些文章眼累的时候,可通过语音来帮助自己,当然如果你是小说迷,可以扩展成一个小说读音器。

 pip install pyttsx3

这里我选择了pyttsx3工具,其实百度的语音接口很不错,不过有些麻烦,我们姑且忽略;先安装python的文字转语音的工具pyttsx3,来简单封装一个文字转语音的方法:

 import pyttsx3

 class ttsx(object):
def __init__(self,rate=-):
self.rate = rate def sayText(self,str):
self.engine = pyttsx3.init() #语速
rate = self.engine.getProperty('rate')
self.engine.setProperty('rate', rate + self.rate) #音量
#volume = self.engine.getProperty('volume')
#engine.setProperty('volume', volume - 0.25) #声音
#voices = self.engine.getProperty('voices')
#for voice in voices:
# self.engine.setProperty('voice', voice.id)
# print(voice.id) self.engine.say(str)
self.engine.runAndWait()

这里采用系统默认的语音驱动,默认的语速过快,我们可以通过rate来设置下,然后可以通过调用说一句你想说的话,比如:

 ttx = ttsx()
ttx.sayText("我是神牛003,欢迎大家关注")

正常情况下,能够听到有电脑系统的语音,这里也没法演示;注意在语言播放的时候程序是阻塞的,self.engine.runAndWait()这句是关键;为了方便操作我加入了ui界面,先引用tkinter插件:

 import tkinter
from tkinter.constants import *
from tkinter import filedialog

这里初始化一个操作窗体并附加几个元素,图像界面有点low,如下:

图形窗体关键代码如下,或许不是很友好:

     #初始化窗体
def tkMain(self,title,h=,w=):
self.tk = tkinter.Tk()
self.tk.title(title)
self.tk.minsize(h,w)
self.tk.resizable(False,False) tkinter.Label(self.tk, text="文本路径:").grid(row=, column=) self.entryvar = tkinter.StringVar()
entry = tkinter.Entry(self.tk,textvariable = self.entryvar,borderwidth=,width=)
entry.grid(row=, column=) tkinter.Button(self.tk,text="选择",command=self.selectPath).grid(row=, column=)
tkinter.Button(self.tk,text="开读",command=self.readTxt).grid(row=, column=) self.txt = tkinter.Text(self.tk)
self.txt.grid(row=,columnspan=) self.tk.mainloop()

再者通过filedialog并增加一个按钮事件来达到选择电脑磁盘中的某个文件,并读取txt内容显示在文本框中:

     #选择文件
def selectPath(self):
self.filename = filedialog.askopenfilename() # 打开文件夹对话框
if not self.filename:
return self.entryvar.set(self.filename) # 设置变量entryvar,等同于设置部件Entry
self.txt.delete(0.0,"end")
#加入到界面txt
with open(self.filename,'r') as f:
while True:
line = f.readline()
if(line):
self.txt.insert('insert',line)
else:
break

最后开读按钮事件只需要获取到文本框中内容,并调用读音方法就行了:

     #读取txt中文本
def readTxt(self):
strTxt = self.txt.get(0.0,"end")
self.sayText(strTxt)

python3 - 文本读音器的更多相关文章

  1. Python 文本解析器

    Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...

  2. 文本切换器(TextSwitcher)的功能和用法

    TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果.与ImageSwitcher相似的是,使用TextSw ...

  3. 使用pl/sql的文本导入器时如何设置主键自增长

    在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequence SEQ_Userinf start with 1 increment by 1nomaxv ...

  4. (转)Python3.5——装饰器及应用详解

    原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...

  5. python3.7 装饰器

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...

  6. Excel 通过pl/sql导入到数据库 文本导入器 odbc导入器

     Excel 通过pl/sql导入到数据库 第一种方法:文本导入器 1.准备Excel导入数据   jc.xls 2.把 jc.xls 文件 改为 jc.csv文件 3.在数据库里建一张jc表(FLH ...

  7. Python3——MP3播放器

    sql # 创建数据库 CREATE DATABASE `music_player` CHARACTER SET 'utf8'; # 创建MP3音乐文件的表 CREATE TABLE mp3_file ...

  8. python3练习-装饰器

    在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程.记录一下自己的课后习题解法. 问题: 请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call ...

  9. C#txt文本分割器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

随机推荐

  1. js中函数的写法

    js提供了灵活的函数写法,我们常见的函数写法和调用可能是: function ask(){ console.log(1); } ask(); 这样就完成了函数的定义和调用,司空见惯. 还有js里面的匿 ...

  2. Oracle的nvl

    在Oracle中nvl(字段名,value)函数用于对没有值的字段做处理在MySql中ifnull(字段名,value)是一样的功能

  3. pingo--util.go 源码阅读

    :] } var _letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-&qu ...

  4. BZOJ_4867_[Ynoi2017]舌尖上的由乃_分块+dfs序

    BZOJ_4867_[Ynoi2017]舌尖上的由乃_分块+dfs序 Description 由乃为了吃到最传统最纯净的美食,决定亲自开垦一片菜园.现有一片空地,由乃已经规划n个地点准备种上蔬菜.最新 ...

  5. BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和

    BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和 题意:有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点, ...

  6. BZOJ_1774_[Usaco2009 Dec]Toll 过路费_floyd

    BZOJ_1774_[Usaco2009 Dec]Toll 过路费_floyd 题意: 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生 财之道.为了发财,他设置了一 ...

  7. 转载iOS开发中常见的警告及错误

    iOS警告收录及科学快速的消除方法     前言:现在你维护的项目有多少警告?看着几百条警告觉得心里烦么?你真的觉得警告又不是错误可以完全不管么? 如果你也被这些问题困惑,可以和我一起进行下面的操作. ...

  8. mysql5.7安装和修改密码

    mysql5.7安装 第一 下载 https://downloads.mysql.com/archives/community/ 首先下载mysql5.7.18zip安装包 根据电脑配置选择32/64 ...

  9. 搭建SpringCloud-Eureka 注册中心以及服务提供与调用

    纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于springcloud是什么我就不废话了~ Eureka  Eureka(原来以为是缩写,原来 ...

  10. 零基础入门学习javase,应该怎么学?这是我给你的一个建议

    我们知道Java有三个方向,JavaSE,JavaME,JavaEE(老程序员可能会叫J2EE等,不过SUN已经改名了).JavaME主要是嵌入式与游戏开发.那我们先看JavaSE,因为只有学好了Ja ...