-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathText_To_Speech.py
119 lines (93 loc) · 3.38 KB
/
Text_To_Speech.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from tkinter.ttk import Combobox
import pyttsx3
import os
root=Tk()
root.title("Text to speech")
root.geometry("900x450+200+200")
root.resizable(False, False)
root.configure(bg="#305065")
engine=pyttsx3.init()
def speaknow():
text = text_area.get(1.0,END)
gender=gender_combobox.get()
speed = speed_combobox.get()
voices = engine.getProperty('voices')
def setvoice():
if (gender == 'Male') :
engine.setProperty('voice',voices [0].id)
engine.say(text)
engine.runAndWait()
else:
engine.setProperty('voice',voices [1].id)
engine.say(text)
engine.runAndWait()
if (text):
if (speed=="Fast"):
engine.setProperty('rate', 250)
setvoice()
elif (speed == 'Normal'):
engine.setProperty( 'rate', 150)
setvoice()
else:
engine.setProperty('rate', 60)
setvoice()
def download():
text = text_area.get(1.0, END)
gender = gender_combobox.get()
speed = speed_combobox.get()
voices = engine.getProperty('voices')
def setvoice():
if gender == 'Male':
engine.setProperty('voice', voices[0].id)
path = filedialog.askdirectory()
if path:
os.chdir(path)
engine.save_to_file(text, 'text.mp3')
engine.runAndWait()
else:
engine.setProperty('voice', voices[1].id)
path = filedialog.askdirectory()
if path:
os.chdir(path)
engine.save_to_file(text, 'text.mp3')
engine.runAndWait()
if text:
if speed == "Fast":
engine.setProperty('rate', 250)
setvoice()
elif speed == 'Normal':
engine.setProperty('rate', 150)
setvoice()
else:
engine.setProperty('rate', 60)
setvoice()
#icon
image_icon=PhotoImage(file="speak.png")
root.iconphoto(False,image_icon)
#Top Frame
Top_frame=Frame(root,bg="white",width=900,height=100)
Top_frame.place(x=0,y=0)
Logo=PhotoImage(file="speaker logo.png")
Label(Top_frame,image=Logo,bg="white").place(x=10, y=5)
Label(Top_frame,text="TEXT TO SPEECH",font="arial 20 bold",bg="white",fg="black").place(x=100,y=30)
#######
text_area=Text(root,font="Robote 20",bg="white",relief=GROOVE,wrap=WORD)
text_area.place(x=10,y=150,width=500,height=250)
Label(root,text="VOICE",font="arial 15 bold",bg="#305065",fg="white").place(x=580,y=160)
Label(root,text="SPEED",font="arial 15 bold",bg="#305065",fg="white").place(x=760,y=160)
gender_combobox=Combobox (root, values=['Male', 'Female'], font="arial 14", state='r',width=10)
gender_combobox.place(x=550, y=200)
gender_combobox.set('Male')
speed_combobox=Combobox (root, values=['Fast', 'Normal', 'Slow'], font="arial 14", state='r',width=10)
speed_combobox.place(x=730, y=200)
speed_combobox.set('Normal')
imageicon=PhotoImage(file="speak.png")
btn=Button (root, text="Speak", compound=LEFT, image=imageicon, width=130, font="arial 14 bold", command=speaknow)
btn.place(x=550, y=280)
imageicon2=PhotoImage(file="download.png")
save=Button (root, text="Save", compound=LEFT, image=imageicon2,width=130, bg="#39c790", font="arial 14 bold", command=download)
save.place(x=730, y=280)
root.mainloop()