Всем доброго времени суток, сегодня мы глянем как озвучить какой-либо текст с помощью Python и завернем все это в черновой GUI интерфейс!
Что нам понадобится дабы озвучить текст?
Для начала установим все необходимое...
Далее создадим исполняемый файл app.py
Открываем файл с помощью редактора или IDE и импортируем нужные нам зависимости
Далее, импортировав зависимости создадим функцию getSayText.
Думаю функция getSayText не очень то и понятна...
Оборачиваем все в try, дабы обработать две возможные ошибки - AssertionError и gTTSError, первая возникает если поле ввода текста пустое, вторая же если не имеет пк подключение к интернету
Получаем текст из Tkinter TextBox получаем сам текст для озвучки с помощью get("1.0",'end-1c').
Проверяем с помощью os.path.exists наличие папки records, в которую собственно мы и сохраняем нашу озвучку текста в формате mp4.
И наконец мы озвучиваем с помощью gTTS наш текст, указав два аргумента - текст и язык озвучки, в нашем случае язык - русский.
Переходим к самому GUI на Tkinter.
Обсудим так же и саму GUI.
Создаем окно Tk() - так же задаем ему title и размеры окна ( в нашем случае 350x350).
В наше окно добавим парочку элементов - ScrolledText, Button и Label.
И наконец запускаем наше окно window.mainloop()
Весь код для ленивых копирщиков
Что нам понадобится дабы озвучить текст?
- gtts - сама библиотека для озвучки текста;
- tkinter - самая херовая библиотека для GUI интерфейса, но тут пойдет (советую юзать pyQT5);
Для начала установим все необходимое...
pip install gtts
Далее создадим исполняемый файл app.py
Открываем файл с помощью редактора или IDE и импортируем нужные нам зависимости
Python:import os from tkinter import Tk, Label, Button from tkinter import messagebox from tkinter import scrolledtext from gtts import gTTS from gtts.tts import gTTSError
Далее, импортировав зависимости создадим функцию getSayText.
- Сама функция озвучки текста;
Python:def getSayText(): try: say = box.get("1.0", 'end-1c') if not os.path.exists('records'): os.mkdir("records") var = gTTS(text=say, lang='ru') var.save(f'records\\recs.mp3') return messagebox.showinfo('Успешно', 'Запись сохранена в папку records') except AssertionError: return messagebox.askokcancel('Ошибка', 'Вы не указали текст для озвучки!') except gTTSError: return messagebox.askokcancel('Ошибка', 'Для использования приложения необходимо подключение к Интернету!')
Думаю функция getSayText не очень то и понятна...
Оборачиваем все в try, дабы обработать две возможные ошибки - AssertionError и gTTSError, первая возникает если поле ввода текста пустое, вторая же если не имеет пк подключение к интернету
Получаем текст из Tkinter TextBox получаем сам текст для озвучки с помощью get("1.0",'end-1c').
Проверяем с помощью os.path.exists наличие папки records, в которую собственно мы и сохраняем нашу озвучку текста в формате mp4.
И наконец мы озвучиваем с помощью gTTS наш текст, указав два аргумента - текст и язык озвучки, в нашем случае язык - русский.
Переходим к самому GUI на Tkinter.
Python:window = Tk() window.title("endway.su") window.geometry('350x350') box = scrolledtext.ScrolledText(window, width=40, height=10) box.grid(column=0, row=5) button = Button(window, text="Озвучить", command=getSayText) button.grid(column=0, row=170) label = Label(window, text="Введите ниже текст, который вы хотите озвучить\n\nНужен интернет!") label.grid(column=0, row=200) window.mainloop()
Обсудим так же и саму GUI.
Создаем окно Tk() - так же задаем ему title и размеры окна ( в нашем случае 350x350).
В наше окно добавим парочку элементов - ScrolledText, Button и Label.
И наконец запускаем наше окно window.mainloop()
Весь код для ленивых копирщиков
Python:
import os
from tkinter import Tk, Label, Button
from tkinter import messagebox
from tkinter import scrolledtext
from gtts import gTTS
from gtts.tts import gTTSError
def getSayText():
try:
say = box.get("1.0", 'end-1c')
if not os.path.exists('records'):
os.mkdir("records")
var = gTTS(text=say, lang='ru')
var.save(f'records\\recs.mp3')
return messagebox.showinfo('Успешно', 'Запись сохранена в папку records')
except AssertionError:
return messagebox.askokcancel('Ошибка', 'Вы не указали текст для озвучки!')
except gTTSError:
return messagebox.askokcancel('Ошибка', 'Для использования приложения необходимо подключение к Интернету!')
window = Tk()
window.title("endway.su")
window.geometry('350x350')
box = scrolledtext.ScrolledText(window, width=40, height=10)
box.grid(column=0, row=5)
button = Button(window, text="Озвучить", command=getSayText)
button.grid(column=0, row=170)
label = Label(window, text="Введите ниже текст, который вы хотите озвучить\n\nНужен интернет!")
label.grid(column=0, row=200)
window.mainloop()
Всем спасибо, я пошел работать :)