Loading...

Свой Telegram-бот для преобразования текста в речь (TTS) за 5 минут

В этой статье мы разберем, как создать Telegram-бота, который преобразует текст в речь (TTS), используя язык Python и библиотеку gTTS (Google Text-to-Speech). Всего за несколько шагов вы настроите бота, установите необходимые зависимости, и сделаете его работу автономной.

 


Шаг 1: Создание бота в Telegram

  1. Зайдите в Telegram и найдите BotFather: В поиске введите BotFather и откройте чат с ним. Это официальный бот для создания и управления другими ботами.

  2. Создайте нового бота: Отправьте команду /newbot, и BotFather запросит:

    • Имя вашего бота (например, TTSBot).
    • Уникальное имя пользователя бота, которое должно заканчиваться на bot (например, MyTTSBot).
  3. Получите токен API: После создания бота BotFather предоставит вам токен — длинную строку, которая будет использоваться в коде. Сохраните его!


Шаг 2: Установка Python 3.10 и необходимых зависимостей

Если у вас еще не установлен Python 3.10, выполните следующие шаги:

  1. Обновите список пакетов:

    sudo apt update && sudo apt upgrade -y
    
  2. Установите Python 3.10:

    sudo apt install python3.10 python3.10-venv python3.10-dev -y
    
    
  3. Установите pip (менеджер пакетов для Python):

    sudo apt install python3-pip -y
    
    
  4. Создайте и активируйте виртуальное окружение (рекомендуется):

    python3.10 -m venv tts-bot-env
    source tts-bot-env/bin/activate
    
    
  5. Установите зависимости: Установите библиотеки для работы с 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

  1. Создайте службу: Создайте новый файл службы:

    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

    Замените:

    • ваш_пользователь на имя пользователя.
    • Пути на реальные пути к вашему проекту и виртуальному окружению.

     

  2. Обновите конфигурацию и запустите службу:

    sudo systemctl daemon-reload 
    sudo systemctl enable tts_bot.service 
    sudo systemctl start tts_bot.service

    Проверьте статус службы:

    sudo systemctl status tts_bot.service 

Если всё настроено правильно, бот будет автоматически запускаться при старте системы.


Теперь у вас есть свой Telegram-бот для преобразования текста в речь, работающий автономно. Скидывайте ему текст, а он его озвучит для вас приятным женским голосом.

Поделиться статьей: