python3 - 文本读音器
本篇分享的是使用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 - 文本读音器的更多相关文章
- Python 文本解析器
Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...
- 文本切换器(TextSwitcher)的功能和用法
TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果.与ImageSwitcher相似的是,使用TextSw ...
- 使用pl/sql的文本导入器时如何设置主键自增长
在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequence SEQ_Userinf start with 1 increment by 1nomaxv ...
- (转)Python3.5——装饰器及应用详解
原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...
- python3.7 装饰器
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...
- Excel 通过pl/sql导入到数据库 文本导入器 odbc导入器
Excel 通过pl/sql导入到数据库 第一种方法:文本导入器 1.准备Excel导入数据 jc.xls 2.把 jc.xls 文件 改为 jc.csv文件 3.在数据库里建一张jc表(FLH ...
- Python3——MP3播放器
sql # 创建数据库 CREATE DATABASE `music_player` CHARACTER SET 'utf8'; # 创建MP3音乐文件的表 CREATE TABLE mp3_file ...
- python3练习-装饰器
在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程.记录一下自己的课后习题解法. 问题: 请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call ...
- C#txt文本分割器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
随机推荐
- python的加、减、乘、除、取整、取余计算
加法: 输入以下代码: >>>1+1 >>>1.0+1 减法: 输入以下代码: >>>1-2 >>>1.0-2 乘法: 输入以下 ...
- 如何在markdown中打出上标、下标和一些特殊符号
转自:https://www.jianshu.com/p/80ac23666a98 如何在markdown中打出上标.下标和一些特殊符号 这是朕的江山 关注 2016.08.16 17:07* 字数 ...
- Mac下安装git
gti下载地址 https://git-scm.com/downloads 一步一步来就完事了.安装完以后执行 git version 查看是否更新到了该版本
- I/O-----字符输出流
package io.day04; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileR ...
- Docker系列之swarm集群搭建
学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...
- 从壹开始微服务 [ DDD ] 之十 ║领域驱动【实战篇·中】:命令总线Bus分发(一)
烽火 哈喽大家好,老张又见面了,这两天被各个平台的“鸡汤贴”差点乱了心神,博客园如此,简书亦如此,还好群里小伙伴及时提醒,路还很长,这些小事儿就随风而去吧,这周本不打算更了,但是被群里小伙伴“催稿”了 ...
- Javascript的内存泄漏分析
作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题.只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C ...
- http/2.0时代已经来临了!
知识分享 文章转自:https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/78906348 现在是资源共享的时代,同样也是知识分享的时代,如 ...
- SpringBoot从零单排 ------ 拦截器的使用
在项目开发中我们常常需要对请求进行验证,如登录校验.权限验证.防止重复提交等等,通过拦截器来过滤请求.自定义一个拦截器需要实现HandlerInterceptor接口.代码如下: import org ...
- 第15章 时间常数字符串比较 - IdentityModel 中文文档(v1.0.0)
在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.Is ...