Transcription
Привет. В этом видеоролике мы с вами создадим Telegram бота, прикрутим к нему распознавание голоса и чат GPT для ответов на голосовые вопросы. Весь код будет в моём Telegram-канале, а сейчас я покажу, как будет работать этот бот.
Заходим в Telegram в бота и отправим ему голосовое сообщение. Привет, какая в тебе стоит несеть? Привет, какая в тебе стоит несеть? Вот бот печатал и ответил нам. Привет, я модель GPT4, архитектура большой трансформенной неросети, работающая и обучена Open AI. Что-то я ещё сказал. Вот такого бота мы с вами создадим. Приятного просмотра.
Для начала перейдём в Bfterer и создадим нового бота, чтобы получить ключ. Нажимаем бот. Придумываем боту имя. Придумываем боту usernрнейм. Можно взять любой, ну, в конце обязательно должно быть бот. Всё, когда у нас создалось, мы получаем апи ключ. Нажимаем на него, он копируется.
Переходим в Pharm, создаём новый проект и сразу пропишем наш токен. Пропишем всё за главными буквами, чтобы обозначить, что это константа. И теперь установим все нужные библиотеки. Телебот нам нужен для работы с АИ Телеграмом и кодингом бота. Spech recognition для преобразования речи в текст. И G4F позволяет нам бесплатно пользоваться чат GPT.
Импортируем телебот. Импортируем сch recogniz AS sr. Это нужно для того, чтобы обращаться к библиотеке Spech Recognition как переменна SR. Это будет просто короче. Импортируем библиотеку File, она нужна, чтобы работать с временными файлами. Импорт os она нужна для операции с файловой системой. Импорт сам процесс. Эта библиотека нужна для вызова внешней программы fm.g. Она перерабатывает то файлы вформат.OG файлы - это файлы телеграмовских аудио. Соответственно, мы будем брать телеграмские аудио, переводить их в точко формат из точgg и закидывать recognition.
Теперь создадём экземпляр бота и передадим сюда токен и объявим функцию, которой будет обрабатываться вся наша логика. Чтобы объявить функцию, мы сначала обвим декоратор, который будет получать на вход все сообщения, которые являются голосовыми, и уже их обрабатывать специальной функции. Пишем content type и сюда пишем в скобочках voice. Ну, это как бы обозначает, что любое сообщение, которое является голосовым, будет проходить только здесь не от, а бот.
Теперь уже напишем функцию, которая будет вызывать наш декоратор. Принимаем находж. Это будет наше голосовое сообщение. Теперь пишем true, чтобы ещё ловить ошибки. И давайте скачаем голосовое сообщение. Для этого получим его из Телеграма. Вот в эту функцию передаём ID нашего сообщения, ну, голосового сообщения, которого мы будем скачивать. Чтобы получить ID, просто можно обратиться к message.voice.file id. Тут мы получаем именно информацию о файле. Чтобы его скачать, надо обратиться немного в другую функцию. Файл info, файл пав. Здесь мы получаем конкретный звук, то есть это прямо в целый файл, и он просто хранится в переменной. То есть он не на компьютерени, а в переменной Пайтона.
Теперь откроем наш файл с помощью оператора VI. [музыка] Прописываем delete filse, чтобы он не удалялся у нас. Мы его будем сами удалять. И прописываем суфикс. Ну вот мне даже печар подсказывает. OG - это расширение нашего файла, ну телеграмовское расширение голосовых сообщений. И назовём это OGФай, чтобы обращаться к нему через как раз-таки переменную OGФай. Теперь записываем его на диск и получаем путь этого файла. Записываем в переменную, назовём её OGGP и путь хранится oggfile.name. Всё, на этом файл сам закроется, потому что мы его открываем через VI и получим VA путь к Wфайлу. Replace меняет строку одну на другую. То есть в нашем случае он поменяет в строке с путём OGG файла. Расширение OG на W.
Теперь с помощью вот этой библиотеки конвертируем файлы. Используем как раз-таки внешнюю программу FFMPG. Тут ещё важно. FFMPG должен быть доступен в системе, то есть он должен быть у вас добавлен в пути PВ. Поэтому, если у вас будет ошибка, учитывайте это и добавьте его в переменные средства. Дальше указываем параметры тире y. Этот параметр указывает на то, что мы сразу собираемся перезаписать текущий файл, если он уже есть. Также надо будет ещё один аргумент написать тире i. Этот параметр указывает входной файл. Следующий аргумент - это путь к нему в наш случае. А следующий аргумент - это OGGP. Ну это как бы путь к нашему OG G файлу. Ну я думаю, вы поняли. Ивпа. Это путь, куда мы будем сохранять наше сообщение в формате. И дальше, когда мы передали список файлами, ещё укажем некоторые значения. SCD out. Вот SCD out. Что это такое? Это поток стандартного вывода. И процесс дефнул. Вот он. Он как бы нам говорит, что не показывай вывод, ну, просто выбрось его. И вывода у нас не будет. Также надо ещё выбрать убрать вывод об ошибках. Этот параметр отключает вывод об ошибках. Мы выбираем все стандартные сообщения и все сообщения об ошибках.
Ну и перейдём к распознаванию речи. Объявляем экземпляр класса recognнайer и открываем audio файл. Вот нам подсказывает. Всё делаем как PR подсказал. Эта функция читает весь аудиопоток в память. Конечно, для больших сообщений это не подойдёт, но для телеграмовских, в принципе, небольших, очень даже подойдёт. Дальше получаем текст. Опять же, с помощью Viva у нас само ещё закрывается. Viv, вернее, а не Viva. Viv. А теперь получим текст. Пишем переменную текст. И с помощью опять-таки экземпляра класса recogniz и с помощью метода recognize. Recogniz Google. В нашем случае мы будем пользоваться гугловским переводчиком. Странно, почему-то он его не нашёл. Поча. Ну ладно. Передаём сюда аудио и язык, на котором будет наше видео. ру Вы можете и под английский сделать, и под другие языки, но я буду с русским, потому что я только русский-то и знаю. И всё. Теперь можно сделать bot reply message текст. Давайте немного покрасивее сделаем. Обвернём это всё в f- функфункцию и напишем вы сказали точа. Ой, драйвер установился. Вот вы сказали текст. Всё, нам осталось только запустить функцию. А прикрутим маниронку чуть позже, чтобы вы понимали просто, как работает этот кусок кода. Мы написали всю логику.
Теперь обработаем ошибку message. Ну, ошибку мы отправлять пользователю не будем. Мы напишем, а, произошла ошибка. Ну и себе, конечно, мы принтанём ошибку, если она как бы вылетит нас, но потелю отправлять в Телеграме мы не будем. И finally сделаем, чтобы удалить файл. Finalли вызывается в любом случае, даже если ошибка не была вызвана. Или даже если она вызвана, всё равно finally вызывается. Открываем in. OGGP и WPF, то есть кажется удалим. Теперь проверяем, существует ли файл по указанному пути. Вот печм подсказал. И удаляем его, если существует. Также у нас вот подчёркивается пав. Ну, ожив почему-то не подчёркивается. Почему подчёркивается? Потому что finли может произойти вот хоть здесь при скачке файлов, напринтернета не будет. Файл просто не скачается и вызовется ошибка, а потом. Но пав просто не сможет найти эти переменные, поэтому лучше их объявить в начале. То есть, ну вот паф, да, ваф. Так вот, это не надо делать, это фигня какая-то. Ну, просто объявим их как строки. Просто строки. Ну, и потом просто их переобъявим. Всё равно ошибка не вызовется теперь точно. И после всего этого можно писать bot полиing, чтобы запустить нашего бота.
Запускаем. Кнос. Код запустился. Переходим сюда в нашего бота. На старт он не должен реагировать. Мы не делали ему обработку команды старт, но можно сделать. А, привет. Что я говорю? Мне интересно. Вот привет. Вот сделать привет. Что я говорю? Мне интересно всё. Только я сказал, мне интересно, но я прожёвываю многие слова, поэтому вот так вот получилось. Но обычный человек так уже бы услышал. На самом деле всё, как мы видим, обработка сообщений и перевод их из голосовых в текст работает идеально.
Теперь можно прикручивать чат GPT. Давайте для этого импортируем библиотеку. Кстати, ролик про эту библиотеку уже был. Там намного лучше функции. Вы сможете после этого ролика усовершенствовать этот код. Поэтому тоже сейчас подсказка вылезет в правом верхнем углу. Посмотрите ролик. Ну а мы объявим функцию на вход message. Тут мы объявляем экземпляр класса клиент и получаем ответ от нерасти. Передаём сюда модель. В наш случай это GPT 4 и1. Это бесплатная модель данной библиотеки, то есть для неё ничего не требуется, просто бесплатно. И сообщение пишем роль. Так как это не ответ от неростити, роль у нас будет usеer. И пишем messageме message, соответственно, только не месдж. Почему-то я перепутал там вообще не месседж остаётся. Я что-то совсем чушку записал. Там контент. Вот контент. Всё, теперь ошибки нету. Нам чам даже подсказывает. Чарм красавчик вообще. Всё. И возвращаем ответ. Return response. Но мы не пустой, э, запрос возвращаем. Возвращаем respons choice. Первый по индекс, ну, нулевой, вернее. Ну, то есть как бы он первый, но и нулевой. Точка content. Всё, мы получили как бы только ответ.
И теперь надо чуть-чуть видоизменить кодик. Вот здесь вот, кстати, я же сейчас делаю всё на телеботе. Возможно, вам интереснее будет смотреть на авиограмме, если вы хотите смотреть на авиограмме. Я как бы вот даже лучше на чем телебот намного. А поэтому пишите в комментариях. Я просто не знаю, что для вас интереснее. Как бы телебот, он более для новичков либо аграam - это профессиональный прямо файвор. Ну, в общем-то, пишите в комментариях. Я все комментарии читаю и постараюсь на все отвечать. И также надо будет сделать, сейчас я это скопирую, эффект, что типа бот печатает. Это тоже очень прикольно. Все вот эти вот Telegram боты GPT, они используют это, поэтому мы тоже это будем использовать. Send, ой, точку забыл. Send chat action. Ну, типа action. Это что-то действие, по-моему, если не ошибаюсь. Не, с английским тоже беда-беда. Message chat чат ID передаём. И, соответственно, тайпинг, что печатает, ну, typйпинг, типа печатать в телеграме. И отправляем ответ от нейроти. Bot то reply to message. Нет, output. Всё, можно тебя запускать и пробовать с ней ресеть. Ну, если я, конечно, ошибку какую-нибудь не сделал тупую очень, но вроде ошибок нет.
Так, а, привет. Скажи, пожалуйста, как я могу попросить зрителей интересно подписаться на канал и подписаться на мой Telegram-канал тоже, но это всё будет на Ютубе. Ну, какое-нибудь тупое сообщение, правил, конечно. Ну ладно. Вот вы сказали: "Привет". Скажи, пожалуйста, как могу попросить зрителей подписаться на мой канал и подписаться на мой Telegram-канал. Telegram, кстати, вон как он прикольно обозначил тоже. Но это всё будет на всё будет на Ютубе. Ютубе, конечно, тупо написал, но ладно. Вот выявилось сообщение, что произошла ошибка. Так, что за ошибка? Мне интересно. No hard file found. Я, кажется, знаю, что это за ошибка. Значит, я модель неправильно написал. Да, я пофиксил ошибку. Я так и знал, что так вот этоch можно удалить. Это я думал, может, из-за этого параметра. Нет. А я так и знал, что ошибка не в коде, а в библиотеке G4F. Я это ещё говорил, когда разбирал эту библиотеку в ролике. Опять-таки быстрите его, там ссылки будут под роликом. А как разтаки я расскажу, как сделать максимально гибкий код в том ролике. Можно просто несколько моделей указывать в списке. Перейдите на ролик, который я записал про эту библиотеку, и посмотрите. Опять-таки, я поменял просто вот модель, и код заработал.
Привет. Расскажи, пожалуйста, про какие-нибудь интересные Python библиотеки. Всё, отправляем. Всё. Вот. Привет. Расскажите, пожалуйста, какие-нибудь интересный Python. Видите, он Python как язык программирования в контексте понимает. Это очень круто. Всё, ждём. О, во, отправился, отправилось сообщение. Да, вон какое-то долгое, не долгое, вернее, длинное. Даже Jonпился. Мне интересно, что это за Gonфайл. Почему-то код открылся. App Git Happy User. Я не знаю, что это за апи. Оно, конечно, не должно быть, но ладно. Request все знают. Оно не прикольно. Beтивост тоже все знают. Короче, ну вот так вот. J файл, конечно, странно, но ладно, давайте ещё что-нибудь запишем. Ага, привет. Вообще, что умеешь? Такое достаточно дефолтное сообщение. Ждём обработки. То есть обработка очень быстро происходит. Вот тайпинг было только что и всё, она уже отправила. Я умею та написание текстов. Вот так вот работает этот бот. Кому нравился ролик, подписывайтесь на мой Telegram и YouTube канал. Вот он. Всем удачи и пока. เฮ