По статье PYTHON: ПРОСТЕЙШИЙ ГОЛОСОВОЙ ПОМОЩНИК нам несколько раз писали в личные сообщение вопросы про возможность интеграции “голосового помощника” в telegram. Мы изначально не планировали этого делать, но потом задали себе вопрос – почему бы не попробовать?
Используемые библиотеки
Для решения данной задачи нам понадобятся следующие библиотеки.
- telebot (pyTelegramBotAPI) – по словам автора библиотеки, простая, но расширяемая реализация на Python для Telegram Bot API.
- requests – библиотека для обработки HTTP запросов.
- random – библиотека для, как не странно, рандома.
- speech_recognition – используем туже распозновалку голоса, что и в прошлой статье.
- pyttsx3 – если раньше мы использовали консольный аналог say, то теперь нам нужно отправлять на сервера telegram голосовые файлы в формате oga
- os – нам нужна для работы с файловой системой.
- time – нужно только в одном моменте для sleep.
import telebot import requests import random import speech_recognition as sr import os import pyttsx3 import time
Сразу отмечу, что тут указаны не все, но мы постараемся ничего не пропустить по ходу статьи
ТОП 4 ТЕЛЕГРАММ БОТА ДЛЯ ОЗВУЧКИ ТЕКСТА/ difiya / #gachalife #gachaclub #gacha
Получение токена и создание оболочки бота
Одной из важных вещей, которым делится с нами Крестный отец – токен нашего бота. Его мы и указываем в коде. В статье токен изменен для соблюдения анонимности
token = ‘fa3hnerpw25mga095mt125aga1si2lr!fk39sktndsawg’ bot = telebot.TeleBot(token)
Про ffmpeg
Так как в telegram использует в голосовых сообщениях файлы формата oga- (да не простой oga, а opus’овский), но мы можем обрабатывать библиотекой speech_recognition файлы формата wav, то на помощь придет к нам библиотека pydub, которой для работы нужно FFmpeg.
FFmpeg – это кроссплатформенное решение для записи, конвертации и записи аудио и видео. В нашем случае необходима для конвертации oga в wav и обратно. Для удобства FFpeg мы распаковали архив в директорию кода (ffmpeg был взят на сайте gyan.dev в разделе release). Про установку FFmpeg следует отметить, что корректно работать будет только после перезагрузки сервера или пк – это избавит нас от ошибки winerror 2.
В коде указываем для pydub расположение ffmpeg.
from pydub import AudioSegment AudioSegment.converter = os.getcwd() + «\ffmpeg\bin\ffmpeg.exe» AudioSegment.ffmpeg = os.getcwd() + «\ffmpeg\bin\ffmpeg.exe» AudioSegment.ffprobe = os.getcwd() + «\ffmpeg\bin\ffprobe.exe»
Инициализация голосового движка
Для формирования text-to-speech файлов нам понадобится pyttsx3. Особенностью pyttsx3 является возможность работы оффлайн, нам это навряд ли это пригодится, но отметить стоит. А также мы не забываем выбрать “голос” нашего бота.
import pyttsx3 text_to_speach = pyttsx3.init() voices = text_to_speach.getProperty(‘voices’) for voice in voices: print(‘———————‘) print(‘Имя: %s’ % voice.name) print(‘ID: %s’ % voice.id)
——————— Имя: Microsoft Irina Desktop — Russian ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_RU-RU_IRINA_11.0 ——————— Имя: Microsoft Zira Desktop — English (United States) ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_ZIRA_11.0 ——————— Имя: Microsoft David Desktop — English (United States) ID: HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_DAVID_11.0
Не густо. Выбираем из доступных русскоговорящих голосов (или устанавливаем дополнительно в случае отсутствия или вкусовых предпочтений), в нашем примере имеется только IRINA, классический женский роботизированный голос. IRINA, I choose you.
RU_VOICE_ID = «HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_RU-RU_IRINA_11.0» text_to_speach.setProperty(‘voice’, RU_VOICE_ID)
Начало (/start)
Наконец, мы добрались до самого бота. На команду /start бот напишет нам небольшое приветствие.
Подсказки (/help)
Наш новый бот будет иметь практически тоже самое, что его первая версия, но для понятия какой функционал имеется, воспользуемся командой /help.
Обработка контента
В Telegram используется достаточно большое количество типов контента: видео, аудио, голосовые сообщения, стикеры и т.д. И для каждого события отправки пользователем определённого типа сообщения мы можем задать различную обработку. В нашей сатье мы воспользуемся только text и voice. Начнем с text.
Обработка текстовых сообщений
Тип контента text – это отправленные пользователем текстовые сообщения. Наша версия первого бота с некоторыми улучшениями приведена ниже.
Обработка голосовых сообщений
С обработкой голосовых сообщений все несколько сложнее. Как мы упоминали ранее, telegram хранит голосовые сообщения в формате oga. Нам нужно их обработать в wav для обработки speech-to-text (можно этого и не делать – имеется отличный аналог от Яндекса с обработкой oga, но руки до него так и не дошли).
Текущие результаты
А вот так звучит наша Irina (Пример_1.mp3, Пример_2.mp3)
Планы развития
- Развертывание на облачных серверах
- Решить проблему с отправкой oga в telegram – не везде могут открываться отправленные потом голосовые сообщения
- Внедрение “напоминалок” для пользователей бота
- Изменение интерфейса на более юзерфрендли
- Внедрение логирования событий сразу в бд
- Отработка исключений, возникающих при нестандартных действиях пользователя
- Перевод части существующего функционала в отдельные подфункции
Заключение
Вот мы и закончили с первой попыткой внедрения бота в telegram. Что-то получилось хорошо, что-то не очень. Не бойтесь комментировать и задавать вопросы – только так будет развиваться профсообщество и все мы вместе с ним!
Источник: newtechaudit.ru
Как изменить голос в Телеграм при разговоре
Как изменить голос в голосовом сообщении Телеграмм? Воспользуйтесь ботами Voice Effects, Text to Speech Bot или Voicy. Как вариант, можно установить специальные приложения из Гугл Плей, к примеру, Voicechanger. Ниже рассмотрим основные способы, как поменять звук во время общения или при отправке писем в чатах Телеграмм.
Как поменять при разговоре
Для начала разберемся, как изменить голос в Telegr
am при разговоре, чтобы остаться инкогнито или пошутить над своим товарищем. В таком случае можно воспользоваться одним из многочисленных приложений. Для примера рассмотрим Graph Messenger. Сделайте следующие шаги:
- Установите программу на смартфон по ссылке play.google.com/store/apps/details?id=ir.ilmili.telegraph для Андроид.
- Войдите в приложение и кликните на кнопку «Начать общение» внизу.
- Введите телефонный номер аккаунта.
- Укажите код подтверждения, свидетельствующий, что именно вы являетесь владельцем.
- Войдите в нужный чат и кликните три точки справа в углу.
- Жмите на вкладку «Изменение голоса».
- Выберите один из доступных вариантов.
Как вариант, можно воспользоваться и другими приложениями:
- Бесплатный Voice Changer (play.google.com/store/apps/details?id=voicechanger.voiceeffects.soundeffects.voiceavatar) позволяет изменить звук во время общения. Его можно записывать с необходимыми эффектами, а потом отправлять в виде сообщения другому человеку.
- Смена голоса (play.google.com/store/apps/details?id=com.audio.voicechanger.music.editor). Также позволяет записывать звук с новыми эффектами, делиться аудиофайлами (к примеру, в сообщении Телеграмм), записывать и вносить изменения напрямую.
- Изменитель голоса (play.google.com/store/apps/details?id=com.ponicamedia.voicechanger). Редактор, позволяющий придать самые разные эффекты. С его помощью легко решить вопрос, как поменять голос на женский или детский, добавить разные эффекты и т. д.
Как изменить в голосовом сообщении
При желании можно использовать боты для замены голоса, предусмотренные специально для решения таких задач. Выделим несколько основных вариантов:
Как видно, существует достаточно способов, позволяющих изменить звук в письме или во время разговора в Телеграмм. В первом случае удобнее всего использовать возможности бота, а во втором проще поставить специальное приложение на мобильном устройстве. Функционал такого софта во многом случае идентичен, а отличаются только доступные эффекты.
В комментариях расскажите, какой из вариантов вы пробовали использовать, и с какими сложностями приходилось столкнуться. Поделитесь другими способами, как изменить голос в голосовом сообщении Телеграмм.
Источник: telegramzy.ru