Пока ElevenLabs 🤩
Вышел новый сервис Voicebox и он клонирует почти любой голос всего по нескольким секундам аудио и полностью локально на твоей машине.
Без загрузок в облако. Никакие голосовые данные не покидают девайс.
Работает на Qwen3-TTS, прорывной голосовой модели от Alibaba.
→ Загружаешь пару секунд аудио
→ Получаешь почти идеальный клон голоса
→ Генеришь речь на любом языке
→ Миксуешь мульти-голосовые диалоги в DAW-подобном таймлайне
Всё локально. Ноль зависимости от облака.
100% open source. Лицензия MIT.
macOS + Windows уже доступны. Linux скоро.
👉 @PythonPortal
Вышел новый сервис Voicebox и он клонирует почти любой голос всего по нескольким секундам аудио и полностью локально на твоей машине.
Без загрузок в облако. Никакие голосовые данные не покидают девайс.
Работает на Qwen3-TTS, прорывной голосовой модели от Alibaba.
→ Загружаешь пару секунд аудио
→ Получаешь почти идеальный клон голоса
→ Генеришь речь на любом языке
→ Миксуешь мульти-голосовые диалоги в DAW-подобном таймлайне
Всё локально. Ноль зависимости от облака.
100% open source. Лицензия MIT.
macOS + Windows уже доступны. Linux скоро.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Кто-то собрал ИИ, который одновременно пишет код и лазит по вебу.
Называется Accomplish и работает локально, не сжигая API-кредиты.
Без Claude Desktop. Без Cursor. Без ежемесячных подписок.
Большинство AI-инструментов для кодинга заставляют выбирать что-то одно:
Claude Desktop → только работа с компьютером
Cursor → только кодинг
Windsurf → только кодинг
Accomplish объединяет обе возможности, чтобы Claude мог и изучить библиотеку, и сразу внедрить ее, не переключаясь между инструментами.
Ты просишь: "Найди самые свежие доки Stripe API и собери платежную интеграцию"
Accomplish:
1. Открывает браузер → читает документацию Stripe
2. Пишет Python-код на основе актуального API
3. Тестирует интеграцию
4. Дебажит ошибки
Все в одной сессии. Без переключения контекста.
100% open source.
👉 @PythonPortal
Называется Accomplish и работает локально, не сжигая API-кредиты.
Без Claude Desktop. Без Cursor. Без ежемесячных подписок.
Большинство AI-инструментов для кодинга заставляют выбирать что-то одно:
Claude Desktop → только работа с компьютером
Cursor → только кодинг
Windsurf → только кодинг
Accomplish объединяет обе возможности, чтобы Claude мог и изучить библиотеку, и сразу внедрить ее, не переключаясь между инструментами.
Ты просишь: "Найди самые свежие доки Stripe API и собери платежную интеграцию"
Accomplish:
1. Открывает браузер → читает документацию Stripe
2. Пишет Python-код на основе актуального API
3. Тестирует интеграцию
4. Дебажит ошибки
Все в одной сессии. Без переключения контекста.
100% open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤9👍3🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Твоя Python-прога может внезапно встать колом на несколько секунд. Обычно виноват garbage collector, который пошел “наводить порядок” в памяти.
И важный момент: это может случиться даже если ты сейчас почти не аллоцируешь и не освобождаешь память. И пауза не из-за того, что он долго “чистит” память в прямом смысле.
Достаточно, чтобы программа когда-то создала очень много объектов. Даже если ты эти объекты удержал (они живые и никуда не деваются), проблема все равно останется.
В Python есть инструменты, чтобы с этим разбираться. А если спросишь, твой любимый ИИ разложит все по полочкам.
Читать статью🙈
👉 @PythonPortal
И важный момент: это может случиться даже если ты сейчас почти не аллоцируешь и не освобождаешь память. И пауза не из-за того, что он долго “чистит” память в прямом смысле.
Достаточно, чтобы программа когда-то создала очень много объектов. Даже если ты эти объекты удержал (они живые и никуда не деваются), проблема все равно останется.
В Python есть инструменты, чтобы с этим разбираться. А если спросишь, твой любимый ИИ разложит все по полочкам.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
В Python 3.15 появится полноценный иммутабельный словарь.
В модуль builtins добавляется новый публичный неизменяемый тип frozendict.
Ожидается, что
Зачем это вообще нужно:
▪️ Хочешь использовать мапу как ключ в другом
▪️
▪️ Дефолты в аргументах функций: вместо “мутабельного дефолта” можно давать
Как выглядит по API:
▪️ Конструктор “как у dict”:
▪️ Порядок вставки сохраняется (как в обычном
▪️ Хэш не зависит от порядка элементов (логика через
▪️ Есть объединение через
▪️
Важный момент:
И бонус для stdlib: авторы наметили места, где можно заменить константные/публичные мапы на
👉 @PythonPortal
В модуль builtins добавляется новый публичный неизменяемый тип frozendict.
Ожидается, что
frozendict будет “safe by design”, потому что он предотвращает любые непреднамеренные изменения. Это полезно не только для стандартной библиотеки CPython, но и для сторонних мейнтейнеров: можно опираться на надежный неизменяемый тип словаря.Зачем это вообще нужно:
dict или засунуть в set? Обычный dict нельзя, а frozendict можно (если значения тоже хэшируемые). @functools.lru_cache() и аргументы-словари: с dict будет сложно, с frozendict нормально. frozendict(...) и не ловить сюрпризы. Как выглядит по API:
frozendict(), frozendict(**kwargs), frozendict(mapping) или iterable пар, плюс можно смешивать с **kwargs. dict). frozenset(items)), и сравнение тоже по содержимому, а не по порядку. | и “обновление” |= (но |= не мутирует объект, а создает новый). .copy() в CPython по сути возвращает тот же объект (shallow), а если надо глубоко, то copy.deepcopy(). Важный момент:
frozendict НЕ наследуется от dict. Это специально, чтобы нельзя было обойти “неизменяемость” вызовом dict.__setitem__ и подобных трюков. И бонус для stdlib: авторы наметили места, где можно заменить константные/публичные мапы на
frozendict (в том числе там, где сейчас MappingProxyType). Please open Telegram to view this post
VIEW IN TELEGRAM
Python Enhancement Proposals (PEPs)
PEP 814 – Add frozendict built-in type | peps.python.org
A new public immutable type frozendict is added to the builtins module.
👍14❤5
Разраб придумал гениальную капчу против ИИ-агентов: чтобы записаться к нему на созвон, нужно 10 раз громко сказать «NIGGA».
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42🤣19🤯3🔥1
Посмотрим как ты знаешь классы в Python 🤩
Вопрос по Python:
Какой будет вывод у этого кода и почему?
👉 @PythonPortal
Вопрос по Python:
Какой будет вывод у этого кода и почему?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Этот тул умеет скачивать буквально что угодно по ссылке
100% бесплатно. опенсорс. без рекламы.
https://cobalt.tools/
👉 @PythonPortal
100% бесплатно. опенсорс. без рекламы.
https://cobalt.tools/
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯7👍5❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁35🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
Делюсь этим Python-скриптом под OSINT: это простая, но полезная штука для расследований по возможным группам киберпреступности, потому что она позволяет в реальном времени логировать статусы присутствия в Telegram. Мониторинг определяет такие состояния:
- В СЕТИ
- БЫЛ(А)
- БЫЛ(А) НЕДАВНО
- БЫЛ(А) НА ЭТОЙ НЕДЕЛЕ
- БЫЛ(А) В ЭТОМ МЕСЯЦЕ
- БЫЛ(А) ОЧЕНЬ ДАВНО
- СТАТУС НЕИЗВЕСТЕН
Хотя это только видимые метаданные, анализ временных паттернов может помочь заметить синхронные всплески активности, возможные смены между аккаунтами, повторное использование профилей или профили, которые выглядят разными, но ведут себя синхронно.
Бот может работать по запросу (через кнопку проверки), но его также можно доработать под мониторинг изменений в реальном времени, логирование переходов статусов и авто-алерты, когда аккаунт становится В СЕТИ или меняет паттерн активности. Это позволяет заранее видеть операционные пики, выявлять неактивные или приманочные аккаунты и усиливать стратегический анализ, строго в рамках закона и для легитимных целей исследования.
👉 @PythonPortal
- В СЕТИ
- БЫЛ(А)
- БЫЛ(А) НЕДАВНО
- БЫЛ(А) НА ЭТОЙ НЕДЕЛЕ
- БЫЛ(А) В ЭТОМ МЕСЯЦЕ
- БЫЛ(А) ОЧЕНЬ ДАВНО
- СТАТУС НЕИЗВЕСТЕН
Хотя это только видимые метаданные, анализ временных паттернов может помочь заметить синхронные всплески активности, возможные смены между аккаунтами, повторное использование профилей или профили, которые выглядят разными, но ведут себя синхронно.
Бот может работать по запросу (через кнопку проверки), но его также можно доработать под мониторинг изменений в реальном времени, логирование переходов статусов и авто-алерты, когда аккаунт становится В СЕТИ или меняет паттерн активности. Это позволяет заранее видеть операционные пики, выявлять неактивные или приманочные аккаунты и усиливать стратегический анализ, строго в рамках закона и для легитимных целей исследования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤6🔥5
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):
1.
2.
3.
4.
5.
👉 @PythonPortal
1.
= NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).2.
NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.3.
LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.4.
COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.5.
NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤11
Немного базы Python:
Когда вы проходите циклом по итерируемому объекту, функция
В примере ниже обратите внимание на пробел между кавычками (
У
👉 @PythonPortal
print по горизонталиКогда вы проходите циклом по итерируемому объекту, функция
print печатает каждый элемент с новой строки. Это потому, что у print есть параметр end. По умолчанию значение этого параметра содержит символ перевода строки (end="\n"). Чтобы печатать в одну строку, нужно убрать перевод строки и заменить его на пустую строку (end="").В примере ниже обратите внимание на пробел между кавычками (
" "): он нужен, чтобы числа печатались с пробелами между ними. Если убрать пробел (""), числа выведутся слитно, вот так: 1367. Вот код, который это показывает:In [1]: my_list = [1, 3, 6, 7]
for number in my_list:
print(number, end=" ")
// 1 3 6 7
У
print есть еще один параметр: sep. Мы используем sep, чтобы задать, чем разделять выводимые значения. Ниже в качестве разделителя используется символ /:In [2]: print('12', '12', '1990', sep='/')
// 12/12/1990Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🤯3