Comments 79
Послушал музыку и новости. Есть несколько недостатков, но в целом впечатляет.
Из недостатков: музыка (был блюз) вдруг прервалась неким взрывом, потом возникла снова, тут же сбилась с ритма и уже потом сткбилизировалась; в новостях неверно произнесли слово collectables (хотя российские IT-лекторы делают ещё более грубые ошибки на своих лекциях, классах и презентациях).
Это очень круто
Там какой-то план "Freemium", кажется. Каждый месяц начисляется 100 тыс. токенов бесплатно, плюс я беру дополнительные пакеты — 1 млн за 1000 рублей. В день на все новостные блоки, подкасты и прочее уходит токенов, около 40 тыс. Но еще есть куда расширяться. :)
Скрин с дашборда хранилища. 38 гиг, 400 тг счет на 22 февраля. Это кажется ~ 70 рублей

На одном сервере в МСК располагаются icecast2 + контейнеры под каждую станцию + контейнеры, которые рулят эфиром каждой станции. Виртуалка 7 ядер Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz, 8GB RAM тащит примерно 8 стримов + сайт + бекендом там же.
Графана с прометеусом почти не потребляют ресурсов в моих условиях. Они задеплоены на другое железо, с тяжелыми фоновыми задачами. Может и графана притормаживает, но я не тороплюсь. Самое потребляющее тут - это ffmpeg, который клеит новостные блоки, подкасты и сервисы которые грузят/конвертируют музыку с soundcloud с creative common лицензией и с suno
Чего бы не использовать serverless/autopilot kubernetes, где платить приходится только за фактически используемые ресурсы?
Нет, сумма выходит 400 рублей в сутки. В целом, я бы развернулся ещё больше, генерировал бы больше ежедневного контента, включая интерактивный, и тогда расходы на TTS увеличились бы. Но пока решил не расширять затраты
3 виртуалки в Росси, 1 в Европе, TTS провайдеры, GPT, DeepSeek
В целом - не сильно много
Читаю Хабр давно, но это впечатляет и вызывает эмоции настолько что зашёл в аккаунт и написал комментарий впервые за четыре года
Яндексовские TTS не рассматривали? Или они есть среди "нескольких"?
По правде говоря, я начал поиски именно с Yandex SpeechKit. Однако потом поймал себя на мысли, что воспринимаю их топовые голоса как голоса переводчиков с YouTube - благодаря их сервису синхронного перевода, которым в свое время активно пользовался
В итоге остановился на Салюте, ElevenLabs и Cartesia. У Cartesia, кстати, есть очень живой голос, похожий на закадровый голос ведущего Битвы Экстрасенсов ))
Использовал его как раз на случай fallback есть трансляция упадет
Невероятно. Страшно становится как нейронки врываются во все сферы жизни семимильными шагами. Уверен, что умных роботов они производить раньше это сделают люди.
Включаем радио. Берём первый-же попавшийся трек. Dj Space'c - Funkytown и находим его на Ютубе. Трек позиционируется как для фитнес музыки. Видимо выложен под свободной лицензией. А также вышеозначенный трек 2016 года выпуска, когда об AI и не слышали. пруф: https://www.youtube.com/watch?v=Qj8w3KLHufo
Вывод: новости, погода и подкасты сгенерены AI, а музыка написана человеком, но под максимально открытой лицензией, позволяющей использовать музыку в коммерческих целях.
Вы правы, недавно в эфир добавлена музыка, созданная человеком. Часть эфира состоит из нейро-музыки, а часть - из сгенерированных композиций Suno. Опытным путем выяснилось, что пока слушать исключительно нейро-музыку довольно затруднительно
Но я добавил стрим исключительно с нейро-музыкой для экстрималов
А вы зачем роботам подыгрываете? Они ж нас всех уволят.
Отовсюду лился поток манипулятивной информации, и я мечтал о фильтре, который бы отсеивал весь этот информационный шлак.
Надо поискать радио из Швамбрании. Во всех порядочных радиовещаниях красавиц похищают и спасают, и в Швамбрании их тоже похищают и спасают (в цикле, без передышки).
А ещё там герцогиня Каскара Саграда, дочь герцога Каскара Барбе, всем обещала строго хранить тайну о том, что кое-кто, нацепив бумажные эполеты, пойдёт на войну с Пилигвинией и привезёт ей трофей.
Тем временем в плену томится Клавдюшка с соседнего двора, которая была приглашена специально на роль пленной и по очереди считается то швамбранской, то пилигвинской сестрой милосердия. Скоро её «будут освободить с плену», а пока что под давлением превосходных сил противника наши доблестные войска в полном порядке отступили на заранее приготовленные позиции.
А ещё там кадет — на палочку надет.
Какая хорошая у вас трава. И никакого AI не нужно) А статья весьма интересная. Насколько реально такое решение оффлайн сделать с минимальным трафиком со стороны интернета?
Эту траву звали Лев Кассиль. Он написал книгу «Кондуит и Швамбрания». Случайно или нет, но это был реальный мануал по эскапизму.
Не нашел ссылки в формате IceCast/ShoutCast. Как из VLC послушать ?
Вот например для основного стрима: https://app.st101.ru/live/radio_192_mp3
Через средства разработчика в браузере все видно.
правда некоторые станции вместо урла аудиопотока пилят свои велосипеды и их тогда не используешь вне их вэб морды. Но иногда выручает, что их ретранслируют на pcradio.ru, а там уже используют "нормальные" аудиопотоки.
Если кто-то задумывался о своём интернет радио, то рекомендую https://www.azuracast.com/
Красавчик, что тут ещё скажешь!
А как генерируются диалоги из суммаризированного текста новости? И как случается, что одинаковые новости встречаются, правда рассказанные с разными словами?
Из-за неоптимального подхода к проверке похожих новостей по тегам одинаковые новости, к сожалению, всё ещё встречаются. Однако у меня есть взрослое решение, и я планирую реализовать его в ближайшее время.
Что касается новостных блоков, то они просто склеиваются из сгенерированных ТТС по суммаризованным текстам новости. Раз в час процесс запускается и верстает аудио блок из последних событий.
Что касается подкаста, где два ведущих обсуждают новости (в интерфейсе есть выпуск), то его сценарий полностью прописывает DeepSeek, получая в промпте характеры всех ведущих и текст новости, которую они должны обсудить
Очень интересная статья и конечный результат радует, большая работа проделана, автор молодец!
Инди можно брать из SoundCloud. Такую радиостанцию запилил в 2014, проблем с правами не было, проверяла великая и ужасная GEMA. Склейка треков бесшовная если они с одинаковым битрейтом. Делал управление музыкой по заявкам слушателей через чат. Если интересно, напишите, остались наработки управления icecast из Java.
Как раз недавно и подключил SoundCloud. Треки с лицензией cc-by, cc-by-sa, cc-by-nd вполне походят для вещания, спасибо! Есть нюанс что там много шлака, но это решается фильтрацией по количеству прослушиваний.
Спасибо, если что, обращусь!
Icecast умеет в многоканалку. Грубо говоря /jazz /schlager /rock и т.д. и через чат где каждый может запустить свой канал с любимыми треками с саундклауда - добавлять и убирать из из ротации, голосовать за них. Год гонял все это дело, ресурсов мультиплексирование почти не ест, только трафик. Но и интереса ни у кого не было. Сейчас на новом витке развития и NewsAPI можно озвучивать, и LLM научить со слушателями чатиться. Удачи.
замечательная работа! рассматриваете ли делать радиостанции на заказ?
На самом деле, такая техническая возможность уже есть:
Каждая станция может иметь свой собственный набор жанров.
Для каждой станции можно задать тайм-слоты с определёнными жанрами.
Станция может состоять только из AI-музыки, только из человеческой или комбинировать оба варианта.
Для каждой станции можно назначить свой набор джинглов.
Опционально можно отключать новостные блоки и подкасты.
Веб-интерфейс для каждой станции можно хостить на выделенном поддомене, где будет только плеер и контент данного стрима, без других трансляций.
Если кому-то это пригодится - почему бы и нет? Серверы сами за себя не заплатят. :)
Послушал эфир, очень достойно! Снимаю перед вами шляпу за проделанную работу. Я тоже задался вопросом создания собственного радио, но только для локального вещания в машине во время длинных поездок, где нет ни радио, ни интернета.
В качестве железа использую Raspberry Pi 5. Программное обеспечение — Icecast + Liquidsoap. Поначалу я тестировал систему на виртуалке, но в итоге решил, что не хочу тратить деньги на сервер, который нужен лишь раз в месяц.
Самое сложное для меня — это создание джинглов. TTS выручает, но вот с музыкальными вставками возникают трудности. Приходится тратить много времени на поиск музыкальных вставок и редактирование аудио.
Liquidsoap в целом хороший инструмент, но возникали трудности с использованием. Из документации мне помогла книга от авторов с примерами, которая оказалась очень полезной. Но часто бывало что пример не работал как нужно, приходилось подбирать разные варианты и прослушивать эфир снова и снова. На данный момент у меня реализованы вставки с озвучиванием текущего времени, которые накладываются на основной поток музыки, прогноз погоды и джинглы.
Успехов вам в вашем проекте! Идея действительно классная, но, к сожалению, мне так и не удалось найти self-hosted TTS, который бы меня полностью устроил. Это немного ограничивает меня как в финансовом, так и в техническом плане. Поэтому оффлайн не мой вариант
Здравствуйте, интересно, сколько у вас выходит в сутки минут TTS и сколько стоит именно TTS?
Я ищу способ недорогой озвучки длинных статей, по моим подсчётам получается везде порядка 50+ рублей за час озвучки, я рассчитывал на стоимость раз в 10 меньше.
У вас SaluteSpeech основной TTS? По моим подсчётам если там брать пакет на год, то получится примерно 38 часов в месяц и 22 руб/час, это похоже на ваши расходы?
Небольшое пожелание - текстовые врезки делать покороче. Ухо устает слушать монотонный тект электронного диктора. :)
Теперь понятно какое радио останется после "Армагеддона")
А можно ещё пару слов про обход капчи в Suno (не сильно принципиально именно этот сервис, а сам подход)
Есть ещё способы автоматической генерации музыки без нейросетей, на одной математике. Применялись ещё на ламповых ЭВМ, так были сделаны «Уральские напевы». Существует и современная реализация - Muzz в составе пакета PaintCAD от @blackstrip.
офигеть. Позавчера попытался углубиться в тему - и тут фигакс и статья со ВСЕМИ почти фишками. Великолепно. Снимаю шляпу и все такое.
Но вот с ботом у Вас проблемка - проигрывается трек и потом резко обрывается и тишина. У Суно есть такая фигня - он часто кончает (гусары молчать) резко. Для решения проблемы попробуйте в тексте (ну где стихи типа пишутся) писать только одно: [end] а в описании музыки уже промпт для стиля. Тогда он в большинстве случаев делает корректное аутро на инструменталках. Либо вариант - фейдаут на ffmpeg на последних 2 секундах или типа того. Ну и почему в радио не продолжается автоматом на следующий трек?
И еще вопрос - как Вы автоматизировали суно? У них нет официального АПИ, Вы использовали что-то на nodeJS, а что? там только граббер, или есть и промптинг и создание? Ну и насчет капчи - на коммерческих планах она есть тоже? А то там за 30 баксов можно нагенерить треков дофигища. У меня пока автоматизация Суно - главный затык.
suno это нечто=) Спасибо за ссылку.
Проект интересный, глобальный. Развития вам.
В плане генерации голоса посмотрите на XTTS v2 или на этот проект на ее основе https://github.com/DrewThomasson/ebook2audiobook
Прелесть в том, что можно скормить 6 секунд образца голоса, и потом им зачитывать текст
Еще такое появилось https://www.opennet.ru/opennews/art.shtml?num=62733
Предлагаемый вместе с моделью инструментарий поддерживает функцию клонирования голоса, позволяющую синтезировать речь желаемым голосом, для воспроизведения которого модели достаточно предоставить эталонную запись речи говорящего, продолжительностью 10-30 секунд
XTTS2 неплох, но очень прожорлив. Еще там часто артефакты звука - он вставляет слова (скорее частички) которых нет в тексте, это не критично, но для конечного продукта вряд ли такое сгодится. Еще, помню, он длинные тексты не принимал, их надо было разбивать на чанки, особенности архитектуры (там контекстное окно как у LLM). В общем, для своих нужд использовать можно, но для продукта вроде этого уже вряд ли получится.
Так как весь аудиоконтент сгенерирован нейросетями, эфир не подпадает под авторское право.
Это очень сильно зависит от страны и политики. Suno заплатили правообладателям за обучение на их музыке всего один раз. А тут появляются деривативы и тоже начинают генерировать музыку фактически на основе оплаченных один раз треков правообладателей. Правообладатели захотят еще добавки.
А причем тут k8s?
Спасибо за такой интересный сервис. В течение дня слушал немного. Что заметил, некоторые композиции повторяются. Может глюк какой был.
Слушал ии радио, и там попадались интересные песни, хотел как-то передать ссылку на них, но не разобрался можно ли так делать. Потом захотел переслушать одну песню, там реп како-то был. Интересно читал, но чушь полная))
Если возможно и не сильно затратно будет, может стоит реализовать историю за 24 или 12 часов, чтоб можно было перематывать на нужную композицию и прослушать заново.
Еще один момент пришел, было недавно, ехали с женой домой на машине и слушали наше радио. Там была передача с приветами, ведущие зачитывали приветы. Может можно попробовать организовать ии ведущего, который будет в реальном времени зачитывать из чата сообщения? Хотя наверно это сложно будет сделать и затратно
Интересный проект. Но как это монетизировать? Или такой цели изначально и не ставилось?
Оч. круто. Не знаю, как по содержанию, послушаю пока.
Интересно было бы добавить счетчик, сколько сейчас слушателей на станции. как в радио 101
Спасибо за статью, потрясающе.
Еще бы написали инфраструктурные детали, как это все у вас работает согласовано
Как я создал полностью автоматизированное онлайн радио с AI ведущими и музыкой