python3 - 文本讀音器

本篇分享的是使用python3製做一個文本讀音器,簡單點就是把指定的文本文字轉語音說出來;作這麼個小工具主要是爲了方便本身在平時看一些文章眼累的時候,可經過語音來幫助本身,固然若是你是小說迷,能夠擴展成一個小說讀音器。python

1 pip install pyttsx3

這裏我選擇了pyttsx3工具,其實百度的語音接口很不錯,不過有些麻煩,咱們姑且忽略;先安裝python的文字轉語音的工具pyttsx3,來簡單封裝一個文字轉語音的方法:工具

 1 import pyttsx3
 2 
 3 class ttsx(object):
 4     def __init__(self,rate=-10):
 5         self.rate = rate
 6 
 7     def sayText(self,str):
 8         self.engine = pyttsx3.init()
 9 
10         #語速
11         rate = self.engine.getProperty('rate') 
12         self.engine.setProperty('rate', rate + self.rate)
13 
14         #音量
15         #volume = self.engine.getProperty('volume') 
16         #engine.setProperty('volume', volume - 0.25)
17 
18         #聲音
19         #voices = self.engine.getProperty('voices')
20         #for voice in voices:
21         #   self.engine.setProperty('voice', voice.id)
22         #   print(voice.id)
23 
24         self.engine.say(str)
25         self.engine.runAndWait()

這裏採用系統默認的語音驅動,默認的語速過快,咱們能夠經過rate來設置下,而後能夠經過調用說一句你想說的話,好比:oop

1 ttx = ttsx()
2 ttx.sayText("我是神牛003,歡迎你們關注")

正常狀況下,可以聽到有電腦系統的語音,這裏也無法演示;注意在語言播放的時候程序是阻塞的,self.engine.runAndWait()這句是關鍵;爲了方便操做我加入了ui界面,先引用tkinter插件:ui

1 import tkinter
2 from tkinter.constants import *
3 from tkinter import filedialog

這裏初始化一個操做窗體並附加幾個元素,圖像界面有點low,以下:spa

圖形窗體關鍵代碼以下,或許不是很友好:插件

 1     #初始化窗體
 2     def tkMain(self,title,h=500,w=300):
 3         self.tk = tkinter.Tk()
 4         self.tk.title(title)
 5         self.tk.minsize(h,w)
 6         self.tk.resizable(False,False)
 7 
 8         tkinter.Label(self.tk, text="文本路徑:").grid(row=0, column=0)
 9 
10         self.entryvar = tkinter.StringVar()
11         entry = tkinter.Entry(self.tk,textvariable = self.entryvar,borderwidth=2,width=50)
12         entry.grid(row=0, column=1)
13 
14         tkinter.Button(self.tk,text="選擇",command=self.selectPath).grid(row=0, column=2)
15         tkinter.Button(self.tk,text="開讀",command=self.readTxt).grid(row=0, column=3)
16 
17         self.txt = tkinter.Text(self.tk)
18         self.txt.grid(row=1,columnspan=4)
19 
20         self.tk.mainloop()

再者經過filedialog並增長一個按鈕事件來達到選擇電腦磁盤中的某個文件,並讀取txt內容顯示在文本框中:3d

 1     #選擇文件
 2     def selectPath(self):
 3         self.filename = filedialog.askopenfilename() # 打開文件夾對話框
 4         if not self.filename:
 5             return
 6 
 7         self.entryvar.set(self.filename) # 設置變量entryvar,等同於設置部件Entry
 8         self.txt.delete(0.0,"end")
 9         #加入到界面txt
10         with open(self.filename,'r') as f:
11           while True:
12               line = f.readline()
13               if(line):
14                   self.txt.insert('insert',line)
15               else:
16                   break

最後開讀按鈕事件只須要獲取到文本框中內容,並調用讀音方法就好了:code

1     #讀取txt中文本
2     def readTxt(self):
3         strTxt = self.txt.get(0.0,"end")
4         self.sayText(strTxt)
相關文章
相關標籤/搜索