Объект
Когда хочешь понять, что такое объект, а ответ на вопрос вызывает только это:
Превращаем Текст в Голос: Мастер-класс по Python для Чудесного Синтеза Речи!
Привет, Pikabu! Сегодня я хочу поделиться с вами простым и эффективным способом превращения текста в речь на Python. Мы будем использовать библиотеку gTTS от Google, которая не только проста в использовании, но и обеспечивает отличное качество синтезированной речи.
Шаг 1: Установка gTTS
Для начала нам нужно установить библиотеку. Это можно сделать с помощью pip: pip install gTTS
Шаг 2: Написание Скрипта
После установки библиотеки напишем простой скрипт для преобразования текста в речь:
Этот скрипт сначала создает объект gTTS с вашим текстом и языком (в данном случае, русским). Затем он сохраняет синтезированную речь в файл output.mp3 и воспроизводит его.
Шаг 3: Наслаждаемся Результатом
После запуска скрипта вы услышите ваш текст, преобразованный в речь. Это отличный способ добавить озвучку для ваших проектов или просто поиграть с технологией синтеза речи.
Этот код довольно оптимален по нескольким причинам:
Простота использования: gTTS очень проста в установке и использовании.
Качество речи: Благодаря технологиям Google, качество синтезированной речи довольно высокое.
Поддержка множества языков: gTTS поддерживает различные языки, что делает ее универсальной для многих пользователей.
Надеюсь, это руководство окажется полезным для всех, кто начинает свой путь в Python и ищет легкие и понятные методы для преобразования текста в речь. Благодарю вас за внимание и интерес к статье. Успехов во всех ваших начинаниях с Python!
Подробнее про различные трюки на Python можно почитать в моем тг канале https://t.me/python_per_month
Как подготовить машину к долгой поездке
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
Войти в IT
Приветствую всех. Подскажите пожалуйста. Натолкнуло меня на этот вопрос волна приложений "честная цена".
Допустим, новичок хочет быть программистом - делать небольшие игры. Но при этом понимает, что игродел - это скорее хобби, а хотелось бы в дальнейшем какую-никакую, а копейку за свою работу получать, а кому этого бы не хотелось?
Почему-то мне показалось, что будущее за вебом и мобильной разработкой. Логика в целом такая, что даже на пикабу если полистать посты, то и дело можно увидеть, как кто-то написал приложение за пару часов, кто-то игру какую-то онлайн делает, кто-то сайт запилил на коленке за день. Создается иллюзия, что это более возможно и доступно для обычного новичка, потому как постов о полновесных проектах серьезных не так уж и много.
Но, начиная изучать что-то из этого, понимаешь - что-то тут не то.
Из популярных языков - это либо, огромный локомотив типа С# и .NET, на котором можно сделать абсолютно ВСЁ, но в то же время и ничего, потому как реализация через фреймворки определенных задач будет похожа на забивание гвоздя отверткой.
Либо это легкий и непринужденный инструмент, вроде Python, на котором можно сделать тоже абсолютно ВСЁ, но это всё будет несерьезным и легковесным, скорее как дополнение к чему-то.
Либо это совсем какие-то узконаправленные языки, на которых кроме определенной задачи ничего и не сделаешь. Вот создан язык, чтобы на нем сайты делать - вот и делай на нём только сайты.
Казалось бы, всё просто, так оно и работает, в одиночку никто проекты не разрабатывает и в проектах как раз и есть условные 3 человека, которые знают все эти 3 разные технологии и объединяют в единое целое. НО!
НО! Тогда кто все эти люди, которые за вечер клепают свои альфа проекты? Они тебе и игры запилят, и сайты, и десктоп, и андроид приложения. И вообще оказывается это всё они пилят после просмотра пары роликов на ютуб. Но не могут же они знать абсолютно все технологии и языки, чтобы так легко переключаться с одного на другой?
И так с абсолютно каждым языком. У кого ни спроси - это всегда какие-то абстрактные ответы по типу, что для каждой задачи свой язык.
Неужели среди программистов, где чуть ли не правило - не изобретать велосипед, если его уже сделали до тебя, до сих пор нет понятного примерного плана пути для начинающего? Не того road map, где стрелочками отмечены абсолютно все существующие технологии по определенной сфере, а что-то понятное, то через что проходили все, прежде чем стать профессионалами, прежде чем начать делать что-то своё?
Не хочется же быть тем человеком, который потратит, скажем, пару месяцев на изучение языка, а оказывается его никто и не использует в реальной деятельности. Или узнать, что то, над чем ты мучался месяцы и кучей кода на другом языке делается за пару минут.
P. S. Я знаю, что сейчас в IT не войти, надо работать на заводе, а на 100 резюме джунов приходится всего 1 вакансия. У меня другая работа, которая устраивает. Это скорее попытка узнать, какую ошибку я совершил в молодые годы, когда выпустился из техникума со специальностью "информационные технологии", где максимум тебя научили писать "hello, world" на двух разных ЯП, а из-за обилия выбора направлений в дальнейшем я запутался, заблудился и не воспользовался шансом, когда он еще был.
Хочу стартануть в пентесте
Начал прохождение курса на Skillfactory(не реклама), но я овощ в этом плане, но интересно ппц) есть советы по литературе или может по комплексным видео о базисах в этой теме, заранее благодарю)
Первые попытки освоить движок Godot - делаем простой платформер
Уже неделю моя гоблинская тушка не подавала признаков жизни на Пикабу. Все кто думали что я сдох - не дождетесь, я мудитировал и искал знания в молитвах Горку и Морку. В переводе на человеческий - смотрел и читал обучающие материалы по Godot.
Проблема состоит в том, что проще выдать замуж троллиху, чем найти годный и главное понятный материал по данному движку на русском языке. Конечно, есть какие то азы, но дальше чем кривое управление платформера они не уходят, либо уже мне как новичку становится непонятно.
На помощь приходит всеми любимый зарубежный Ютуб и переводчик видео от Яндекса, наткнулся на пару каналов где информацию доносят более-менее доходчиво. И так, чему же я научился за эту неделю?
Тут наша сцена и связанные с ней узлы...
Создаем карту
Пока что обучаюсь на примере платформера, а это значит нам нужно создать какое либо поле, где может бегать наш персонаж. На данный момент я изучил два способа, первый - TileMap про который лучше рассказать в отдельном посте, а вот второй более гоблинский.
Все мы иногда статичное тело...
Правой кнопкой мыши жмякаем на нашу 2D сцену "World" и выбираем "Добавить дочерний узел". В списке ищем "StaticBody2d" и теперь у нас есть база. Добавляем два дочерних узла уже в статичный объект - "Polygon2D" и "CollisionPolygon2D".
Для тех кто не понимает на басурманском - объясню, что есть что. Первый - это визуальная геометрическая фигура, а второй - область столкновения (collision - столкновение). Все это нужно для того, чтобы мы могли увидеть наш объект, а игрок не проваливался внутрь него при столкновении.
Рисуем будущую карту при помощи CollisionPolygon2D...
При помощи области столкновения мы наметим будущую карту. Для того чтобы ее было проще рисовать - сделаем привязку к сетке, а далее добавляем по клеткам метки. Должно получится нечто схожее со скриншотом выше.
Код приравнивающий форму фигуры к форме области столкновения...
Теперь нам нужно сделать так, чтобы визуальная фигура повторяла форму области столкновения. Нажимаем на нашу сцену и добавляем к ней скрипт. GD-script во многом схож с языком Python и более-менее прост в понимании. Сначала добавим наши узлы в виде переменных, для этого зажимаем "ctrl" и перетаскиваем в код после блока extends.
Прописываем функцию ready, она будет воспроизводится сразу во время запуска сцены. А дальше просто приравниваем форму фигуры к форме области столкновения (polygon_2d.polygon = collision_polygon_2d.polygon).
Получаем дешевую и сердитую карту - все в гоблинском стиле!
Карта готова, но что делать теперь? Пора добавить нашего персонажа-марионетку.
Создаем новую сцену и для ее основы берем узел CharacterBody2D. Для будущей простоты восприятия я переименовал его в Player. Чтобы увидеть нашу тушку - добавим к ней дочерний узел "Sprite2D", а чтобы можно было еще и потрогать "CollisionShape2D".
Добавляем иконку
Выделяем область столкновения...
Тыкаем спрайт, выбираем текстуру и из быстрой загрузки возьмем иконку Godot. Пока что этого хватит, ведь в этом посте мы не будем затрагивать тему анимации. Далее выделяем область столкновения и сцепляем все это в одну группу кнопкой вверху панели.
Тело готово, пора научить его шевелиться и реагировать на физику. Для этого мы создаем для нашего Player свой скрипт.
Наши переменные...
Задаем переменные через const (constants - постоянное значение). Значения констант не могут быть изменены в ходе самой программы, на то они и постоянные. Для чего нужны эти значения расскажу ниже.
const SPEED = 150.0
const JUMP_VELOCITY = -300.0
const FRICTION = 1000.0
const ACCELERATION = 600.0
На этот раз мы берем не функцию ready, а другую - physics_process. В отличии от простого process, здесь время между выполнением функции будет одинаковым. Это обеспечит нам стабильность при передвижении объектов.
Начнем с настройки гравитации!
Дело в том, что система координат X-Y в Godot имеет свои приколы. Ось X идет от отрицательной к положительной слева направо, однако ось Y идет от отрицательной к положительной сверху вниз. То есть ось Y буквально перевернута с ног на голову. Если непонятно - объясню проще:
Хотим передвинуть вправо - прибавляем к оси X;
Хотим передвинуть влево - вычитаем из оси X;
Хотим передвинуть вниз - прибавляем к оси Y;
Хотим передвинуть вверх - вычитаем из оси Y;
Гравитация... беспощадная ты с*ка!
Как же нам заставить персонажа падать под давлением гравитации? Для начала добавим переменную GRAVITY равную 1000. Затем создаем свою пользовательскую функцию и называем ее aplay_gravity.
Мы должны падать когда находимся в воздухе, то есть не на полу. Буквально говорим программе "Если объект не на полу сделай следующее: измени положение по оси Y в положительную сторону на заданное нами расстояние".
if not is_on_floor():
velocity.y += GRAVITY * delta
Что такое delta? Это время между кадрами, благодаря чему перемещение будет стабильным вне зависимости от FPS.
velocity - это параметр скорости изначально зашитый в наш объект. По этой причине его так же не требуется объявлять как переменную. Грубо говоря сюда мы задаем то расстояние, на которое должен переместиться объект по осям X и Y.
Так как мы каждый раз увеличиваем прошлое значение velocity.y, гравитация будет усиливаться с каждой секундой в воздухе. Благодаря этому у нас не получится прыгать бесконечно вверх и нас прижмет к полу.
Отлично, нас прижало как после "Балтики 9"!
Теперь настраиваем прыжки!
Для этого создаем еще одну пользовательскую функцию handle_jump. Мы говорим ей: "Если мы нажимаем кнопку прыжка и находимся на полу - измени положение по оси Y в отрицательную сторону". Напомню, что константа прыжка имеет отрицательное значение.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y += JUMP_VELOCITY
К гравитации добавляются прыжки...
Прыжок веры...
С прыжками и гравитацией мы освоились, теперь научимся ходить-бродить!
Надеюсь вы еще не забыли, что направление у нас зависит от отрицательного или положительного значения? Есть такая штука в Input как get_axis, где мы задаем две клавиши. Нажатие первой клавиши прировняет переменную к значению -1, нажатие второй клавиши наоборот к 1. Если ни одна из клавиш не нажата, переменная принимает значение 0.
Создаем переменную input_axis внутри physics_process, на этот раз через var, ведь она будет менять свои значения в процессе. А далее задаем машине установку "Если нажата одна из двух клавиш, то мы меняем значение по оси X в зависимости от выбранного направления".
Для этого используем move_toward, где первое значение - наша начальная точка, второе - конечная точка, а третье - промежутки которые будут проходится для их достижения.
Начальная точка - velocity.x
Конечная точка - наша скорость SPEED помноженная на направление (-1 или 1)
Промежутки - наше ускорение ACCELERATION помноженное на время между кадрами delta
if input_axis !=0 :
velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * delta)
Вот наш код...
А вот признаки жизни... беги Форест - БЕГИ!
Двигаться мы можем, а вот с остановкой проблема. Что не дает нам вечно кататься по земле? СИЛА ТРЕНИЯ!
Для того чтобы создать силу трения мы делаем похожую функцию. Только теперь конечной точкой у нас выступает 0, а вместо ACCELERATION берем параметр FRICTION. Включается все когда мы не нажимаем кнопки движения, то есть input_axis равен нулю.
if input_axis == 0 :
velocity.x = move_toward(velocity.x, 0, FRICTION * delta)
Бегаю, никого не трогаю... к земле притягиваюсь во время прыжка...
Вишенкой на торте внутри физической функции является move_and_slide которая и отвечает за все эти процессы. Без нее указанные выше шаманские обряды просто не запустятся.
Получился максимально простой гоблинский платформер. Конечно, это пока сложно назвать игрой... но оно работает во славу Горка и Морка! В данном посте я рассказал лишь основы изученного, благо материал заготовлен почти на месяц вперед.
Надеюсь для тех кто в первый раз сталкивается с Godot данный пост будет хоть немного полезен, а более опытные орки и гоблины знатно посмеются с попыток новичка вкатиться в разработку игр.
Если вам интересно и дальше смотреть на то как я собираю лбом грабли, а может и самим чему-то научиться вместе со мной - подписывайтесь на данный блог!
P.S.
Вот так полностью выглядит код управления персонажем, если кому то нужно для ознакомления.
Традиционный тематический гоблин в конце!
Продолжение поста «Прошу помощи программистов с#»
Такс, всем привет. Возможно кому-то будет полезна эта инфа.
Около полугода назад я решил попробовать начать учить с# и потихоньку погружаться в ит сферу.
Я полный нубас, на момент начала не знал вообще ничего, да и сейчас изменилось немногое.
В самом начале я прогуглил разные языки программирования, писал в гугле запросы в духе "сферы применения языков программирования" и на одной из первых же ссылок нашёл графики где, какой и в какой пропорции они используются.
По всем параметрам лично я выбрал для себя с#, сразу же допустив ошибку, не проверив, что он не самый простой для освоения новичком.
Дальше я начал искать учебные материалы по выбранному языку. Нагуглил кучу книг, но как правило они или подразумевают хоть какие-то знания на минимальном уровне, или просто тяжелы в понимании теории без параллельной практики.
Тут на пикабу подсказали ресурс "Степик", там много материалов, по разным языкам на русском. Как правило первые курсы "для чайников" бесплатные. Да и платные не сравнятся по ценам со всякими скилбоксами и им подобным, цены от 3к, примерно до 8к.
Курсы идут как уроки в школе: дали тему, послушал или почитал, следом пошёл выполнять практические задания.
Тут я снова допустил ошибку: по хорошему нужно бы проходить тему и отрабатывать задания по ней, они легко гуглятся по таким запросам как "практические задачи для начинающих *название языка*". Но на степике есть счётчики занятий по календарю и не хочется надолго прерывать цепочку, поэтому пока прохожу курс, а потом буду браться за отдельно взятые темы.
В принципе, для старта, с полного нуля - этого мне более чем достаточно, что бы вкурить самые азы.
А теперь к сложностям.
Часто бывает, что задачи не поддаются, даже при том, что интуитивно знаешь как должно быть, не хватает мозгов грамотно сформулировать команды.
К пунктуации, в принципе, привык довольно быстро, но до сих пор часто вылезают всякие точки с запятой, которые забыл, скобки не той формы и все в этом духе, благо я учусь в визуал студии, она мне почти всегда показывает где я ошибаюсь, на счёт других языков хз.
Английский, я его знаю на уровне "ай донт спик инглиш", но на самых первых парах - это не самая большая проблема, хотя в дальнейшем он обязательно понадобится.
Я учу инглиш в приложении дуолинго. Бесплатная штука, учить, в принципе вполне удобно. Я занимаюсь на работе, во время обеденного перерыва, минут по 20-25. В английском, по ощущениям, прогресс движется быстрее чем в кодинге.
Самая большая проблема: самодисциплина и мотивация.
Если второе у меня есть, то вот с дисциплиной у меня огромные проблемы. Каждый раз, как надо сесть учить, начинаются торги с собой. Побеждаю с переменным успехом, каждый раз когда заставляю себя учить - время проходит практически незаметно. Когда не справляюсь и не учу чувствую себя говном. Если у кого есть советы по самодисциплине с удовольствием послушаю))
Главное не расстраиваться, если что-то не получается. У меня часто бывает, что над одной задачей могу сидеть 3 дня, так и не понять. Лезу в кометы или в гугл, ищу решение и удивляюсь как можно быть таким тупым и не додуматься. Скорее всего так и в других языках бывает.
На последок, если кому интересно: прошло около 5 месяцев, с момента как я начал учиться. Сам, курсами, книгами, и продвинулся я не так чтоб далеко: в данный момент я только подбираюсь к массивам. И если честно очень их боюсь))
@mestih, ты просил тебя позвать)
Как я пробую в программирование
Никогда не думал что буду писать пост связанный с программированием, но вот случилось. Где то неделю назад через знакомых устроился электромонтажником(до этого никогда в этой среде не работал), хватило меня на два дня и понял что не мое, ни физически ни ментально, хотя работа интересная
Вот пример того что делал, так толком и не понял, что и для чего, просто сказали берешь эту х#@ню и монтируешь на кабель, и сам кабель прикрепляешь к стене, и ушли, дальше сам
Но это как говорится совсем другая история...
Решил я посмотреть в сторону программирования, на компе был уже установленный Python со средой PyCharm( насмотревшись роликов, где объяснялось, что самый простой синтаксис, и лучше начинать с него), год назад хотел начать изучать его, но планы поменялись.
Но вот момент настал, я снова решил начать пробовать программирование, к слову вообще далёк от программирования, и от компьютеров в целом. Решил я пропустить теорию, и попробовать сразу что нибудь написать тупо под копирку, телеграм бот например. Вот я нашел подходящее получасовое видео как написать телеграм бот, и с самого начала все просто повторял, установил библиотеку, и тут с первых строчек понимаю что, что то не так, у меня не выходит окошко когда пишу, с подсказками, начал все проверять, в терминале ругается какой то Power Shell, начал в инете искать решение проблемы, нужно обновить, пытаюсь обновить, чтобы его обновить, нужно также обновить какой то .Net Framework, не получается, потому что версия Windows не подходит( не обновлял с 2015го года, так как не пользовался ноутом), у меня Windows 10 сборка 1511, начал обновлять через центр обновлений, все шло хорошо, а потом зависло на 49%, пробую по другому, скачиваю обновление с оф сайта, все хорошо, скачалось, началась подготовка к установке и оно тоже зависло на 99%, и вот уже 12 часов примерно так, теперь незнаю, что это? вселенная мне знаки дает, что не нужно это тебе, не пытайся...