|
В этой статье мы разберем, как создать Telegram-бота, который преобразует текст в речь (TTS), используя язык Python и библиотеку gTTS (Google Text-to-Speech). Всего за несколько шагов вы настроите бота, установите необходимые зависимости, и сделаете его работу автономной.
|
Шаг 1: Создание бота в Telegram
-
Зайдите в Telegram и найдите BotFather: В поиске введите BotFather
и откройте чат с ним. Это официальный бот для создания и управления другими ботами.
-
Создайте нового бота: Отправьте команду /newbot
, и BotFather запросит:
- Имя вашего бота (например,
TTSBot
).
- Уникальное имя пользователя бота, которое должно заканчиваться на
bot
(например, MyTTSBot
).
-
Получите токен API: После создания бота BotFather предоставит вам токен — длинную строку, которая будет использоваться в коде. Сохраните его!
Шаг 2: Установка Python 3.10 и необходимых зависимостей
Если у вас еще не установлен Python 3.10, выполните следующие шаги:
-
Обновите список пакетов:
sudo apt update && sudo apt upgrade -y
-
Установите Python 3.10:
sudo apt install python3.10 python3.10-venv python3.10-dev -y
-
Установите pip (менеджер пакетов для Python):
sudo apt install python3-pip -y
-
Создайте и активируйте виртуальное окружение (рекомендуется):
python3.10 -m venv tts-bot-env
source tts-bot-env/bin/activate
-
Установите зависимости: Установите библиотеки для работы с Telegram API и TTS:
pip install python-telegram-bot gTTS
Шаг 3: Написание кода бота
Используйте следующий код, адаптировав его под свои нужды. Например, замените токен на тот, который вы получили от BotFather, и добавьте свои ID в список AUTHORIZED_USERS
.
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
from gtts import gTTS
import os
# Список разрешенных ID пользователей
AUTHORIZED_USERS = [AUTHORIZED_USER1, AUTHORIZED_USER2, AUTHORIZED_USER3] # Замените на свои ID
# Функция для старта бота
def start(update: Update, context: CallbackContext) -> None:
user_id = update.message.from_user.id
if user_id in AUTHORIZED_USERS:
update.message.reply_text('Привет! Отправь мне сообщение, и я озвучу его!')
else:
update.message.reply_text('У вас нет прав для использования этого бота.')
# Функция для озвучки текста
def text_to_speech(update: Update, context: CallbackContext) -> None:
user_id = update.message.from_user.id
if user_id in AUTHORIZED_USERS:
text = update.message.text # Получаем текст сообщения
tts = gTTS(text, lang='ru') # Преобразуем текст в речь (язык — русский)
audio_file = 'speech.mp3'
tts.save(audio_file) # Сохраняем аудиофайл
# Отправляем аудиофайл пользователю
with open(audio_file, 'rb') as f:
update.message.reply_voice(voice=f)
# Удаляем файл после отправки
os.remove(audio_file)
else:
update.message.reply_text('У вас нет прав для использования этого бота.')
# Основная функция для запуска бота
def main() -> None:
# Укажите здесь свой токен
token = 'Ваш_токен_бота'
# Создаем объект Updater и передаем ему токен бота
updater = Updater(token)
# Получаем диспетчер для регистрации обработчиков
dispatcher = updater.dispatcher
# Регистрируем команды и обработчики
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, text_to_speech))
# Запуск бота
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Сохраните этот код в файл, например, tts_bot.py
.
Шаг 4: Автозагрузка бота как службы на Ubuntu
-
Создайте службу: Создайте новый файл службы:
sudo nano /etc/systemd/system/tts_bot.service
Добавьте следующее содержимое:
[Unit]
Description=Telegram TTS Bot
After=network.target
[Service]
User=ваш_пользователь
WorkingDirectory=/путь/к/папке/с_ботом
ExecStart=/путь/к/виртуальному/окружению/bin/python3 /путь/к/папке/с_ботом/tts_bot.py
Restart=always
[Install]
WantedBy=multi-user.target
Замените:
ваш_пользователь
на имя пользователя.
- Пути на реальные пути к вашему проекту и виртуальному окружению.
-
Обновите конфигурацию и запустите службу:
sudo systemctl daemon-reload
sudo systemctl enable tts_bot.service
sudo systemctl start tts_bot.service
Проверьте статус службы:
sudo systemctl status tts_bot.service
Если всё настроено правильно, бот будет автоматически запускаться при старте системы.
Теперь у вас есть свой Telegram-бот для преобразования текста в речь, работающий автономно. Скидывайте ему текст, а он его озвучит для вас приятным женским голосом.