Гайд - Исходники - gTTS | Озвучиваем текст с помощью Python! | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Гайд Исходники gTTS | Озвучиваем текст с помощью Python!

Json Qiest

Что такое Бытие?
Автор темы
the VoX
15 Ноя 2022
764
510
93
Всем доброго времени суток, сегодня мы глянем как озвучить какой-либо текст с помощью Python и завернем все это в черновой GUI интерфейс!

Что нам понадобится дабы озвучить текст?
  • gtts - сама библиотека для озвучки текста;
  • tkinter - самая херовая библиотека для GUI интерфейса, но тут пойдет (советую юзать pyQT5);

Для начала установим все необходимое...

Далее создадим исполняемый файл 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.
  1. Сама функция озвучки текста;
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()


Всем спасибо, я пошел работать :)
 
Like
  • 1
Реакции: 1 user
Активность:
Пока что здесь никого нет