Как я добавлял gapless playback

Некоторые альбомы должны звучать как один длинный трек. Рассказываю, как это устроено в Kalinka Player.

Это «ж-ж-ж» неспроста

Некоторые альбомы должны звучать как один длинный трек. Рассказываю, как это устроено в Kalinka Player.

Привет, Хабр! Мне принесли на доработку бомбезную электрогитару корейского производства из относительно недорогой линейки Signature Special от знаменитого бренда.
Несмотря на некоторый износ и проблемы с электроникой, которые мне пришлось устранить, инструмент оставил весьма приятное впечатление. Сейчас мы всё увидим и услышим.

Я свёл семь сервисов речевой аналитики для отделов продаж в одну таблицу и посчитал их по единой формуле. Повод был простой и немного злой: почти в каждом обзоре речевой аналитики на первом месте стоит тот, кто этот обзор и написал. Совпадение? А то.
Поэтому здесь всё наоборот, чем в вендорских топах. Сначала методика и формула, потом её изъяны, и только потом результат. Всё считается на калькуляторе, все цены с источниками. Ошибусь в цифрах, поймаете в комментариях.
Дальше по порядку: как я считал (чистая арифметика), изъяны методики (без честных оговорок нормальных сравнений не бывает) и итоги по рынку.

Задача формулировалась в одно предложение: робот должен сам звонить людям в WhatsApp, проигрывать голосовое приветствие, записывать ответ и присылать оператору расшифровку с вердиктом «да / нет / надо посмотреть руками».
Проблема в том, что официально это невозможно. У WhatsApp нет API для голосовых роботов: Business API умеет шаблонные сообщения, провайдеры на рынке умеют текстовые рассылки, голосовые звонки закрыты наглухо. Готового решения не существует ни за деньги, ни за большие деньги.
Зато существует официальное десктопное приложение, которое звонить умеет. И его можно водить за руку.
Это рассказ о том, что из этого вышло: с чего начиналось, какие подходы умерли по дороге, четыре слоя автоматизации — от CDP до виртуальных аудиокабелей — и один урок про производительность, который перечеркнул половину архитектуры уже на живых звонках.
Сразу оговорюсь: по отношению к правилам платформы это серая зона, и я не предлагаю это повторять. Мне здесь интересна чистая инженерия — как автоматизируется то, что автоматизировать не предполагалось. Ограничения и риски честно разберу в конце.
Кода будет много. Всё интересное в этом проекте живёт именно в деталях.

Ежегодно Библиотека Конгресса отбирает 25 звукозаписей, имеющие «непреходящую ценность» для американской культуры, чтобы поместить их в Национальный реестр аудиозаписей, хранящий разнообразие звукового наследия США. В мае 2026 года среди этих записей оказалось музыкальное оформление популярной видеоигры Doom, вышедшей в 1993 году, получив таким образом высочайшее признание как культурной ценности. Немногим позже, 16 июня того же года, автор этого ныне официально незабвенного музыкального произведения, Роберт «Бобби» Принс, покинул нас в возрасте 81 года.
Я сам игровой композитор и разработчик, отдавший этим занятиям уже три десятилетия, а по совместительству — цифровой археолог и автор научпопа в области истории компьютерных технологий, в особенности связанных со звуком. Кому же, как не мне, отдать дань памяти ушедшей легенде? Но миру вряд ли нужен ещё один запоздалый некролог с пересказом Википедии. Поэтому я изучил жизненный путь Роберта по немногочисленным доступным источникам, и теперь поделюсь собранным по крупицам собственным видением творчества и культурного наследия одного из титанов, на плечах которого стояли многие, и в их числе я сам.

На днях, после того, как припекло от Яндекс.Музыки, решила посмотреть, а что со Звуком? Поскольку ожидания были крайне низкими, то звук произвёл весьма положительное первое впечатление. Рассмотрела только web, ведь из AppStore их выпилили. Печаль — тк часть заявленных фичей доступна только в приложении (например, шазам) 🥲
К покупке я пока не готова, но посматривать на развитие стриминга точно буду!

Это третья статья серии о том, почему акустика, которая хорошо измеряется, может плохо звучать. В первой части мы выяснили, что АЧХ суммирует энергию не спрашивая, вовремя ли та пришла. Во второй — что комната добавляет к звуку копии и резонансы, и провели границу честности эквалайзера: ниже частоты Шрёдера он чинит физику, выше — только график.
Сегодня отправимся в самые низкие частоты спектра, где пересекаются темы предыдущих статей. Бас — это частоты, на которых колонка ещё не закончилась, а комната уже началась, и где одно-единственное конструктивное решение — каким образом нагрузить динамик — определяет характер звука сильнее, чем всё остальное железо вместе взятое.
После перестановки и наведения порядка в комнате моя система впервые за годы зазвучала собранно — и, как это всегда бывает, новая расстановка только подчеркнула фундаментальную недостачу. Описать словами мое разочарование весьма непросто, ведь там, где бас ещё оставался — у самой настройки порта, — с ним вдобавок было что-то не так. Если раньше баса было много, но он был абсолютной кашей, то теперь стало отчетливо слышно, как бочка ударника набирала вес, но теряла резкость удара: щелчок и тело ноты будто расходились во времени.
Кривая АЧХ там, у частоты настройки, ничего дурного не показывала — а слух показывал; у меня уже было правило на этот случай, ещё с прошлых стараний: если график в порядке, а слух недоволен, надо смотреть на время.

В связи с жёсткой ситуацией на рынке, в глаза особенно бросаются продуктовые косяки. С одной стороны, жёсткая конкуренция на рынке продактов, где откликаешься на вакансию на следующий день, а по ней уже перестали отсматривать кандидатов, тк забили все слоты (это реальная частая причина отказа). С другой — чёткие ожидания шаблонных ответов (а у меня мозги всегда работали нестандартно) и реализация фичей, которые не только не приносят денег, но и ухудшают пользовательский опыт.
Теперь, когда я купила подписку Я.Музыки, я считаю, что имею полное право высказывать своё недовольство, и рассмотрю сегодня именно этот продукт (обещаю в следующий раз рассмотреть пример качественного продукта).

Чтобы дать команду умной колонке, не обязательно говорить активационное слово «Алиса»: есть быстрые команды — короткие фразы, с помощью которых можно управлять музыкой, громкостью или умным домом. Например, чтобы переключить трек, достаточно просто сказать «дальше», а чтобы убавить звук — «тише». Весь список команд можно посмотреть в настройках вашего аккаунта в приложении «Дом с Алисой».
Быстрые команды удобнее не только пользователям, но и системе: запросы через слово «Алиса» требуют обращения к модели распознавания речи ASR, которой из‑за её размеров необходимы серверные вычислительные ресурсы, а модель быстрых команд устроена гораздо компактнее. Она работает прямо на устройстве, а значит, ограничена вычислительными ресурсами самой колонки — её CPU и оперативной памятью. Из‑за этого модель нельзя сильно увеличить: ей приходится оставаться компактной, зато запрос обрабатывается быстрее.
За распознавание быстрых команд отвечает нейросеть. Её архитектура почти полностью совпадает с решением для наушников Яндекс Дропс, которое подробно описал в своей статье Григорий Афанасенко. Разница в основном в масштабе: наша модель весит всего от 0,5 до 1,5 МБ в зависимости от железа конкретного устройства.
Со временем перед нами встала задача добавить к базовым командам «лайк» и «дизлайк» для управления треками, а также команды «включи блютус» и «выключи блютус». Особенно это актуально для Станции Стрит, которую часто берут с собой на природу, где нет интернета. Но главным было гарантировать абсолютное отсутствие ухудшения на уже запущенных командах и не слишком сильно увеличивать потребление ресурсов на устройстве.

У меня от трёх до пяти созвонов в день, почти все в браузере: Meet, Яндекс Телемост, ktalk, реже всего Zoom. Детали встреч мне нужны в тексте, иначе договорённости расползаются. Писал я звонки через OBS с захватом экрана, и на самих звонках началось веселье: звук временами жёстко квакал, всё чуть-чуть подвисало. Причину до конца не выяснял, моё предположение - процессор зажирался захватом и перебивал сам разговор; ktalk и браузер тут ни при чём. А экран, как потом дошло, мне вообще был не нужен.
Дальше вторая серия. Расшифровку я гонял своими Python-скриптами: конвертация → транскрибация → диаризация (разметка, кто когда говорил). На встрече с пятью участниками диаризация расставляла голоса крайне плохо, половину фраз всё равно восстанавливал по памяти.
Пошёл искать вариант, чтобы запись не мешала звонку, результат был приличный и всё крутилось локально: не хотелось ни отдавать записи в облако, ни платить подписку за минуты. Нашёл платный Audio Hijack, он подкупил лёгкостью и простотой настройки. Потом узнал, что на M-чипе быстрее всего у меня отрабатывает mlx-whisper на MLX: веса large-v3-turbo с Hugging Face, инференс на GPU Mac. Это архитектура Whisper, но рантайм — пакет mlx-whisper и бинарь mlx_whisper, не pip install openai-whisper и не репозиторий openai/whisper. Так собрался стек: Hijack пишет один mp3, mlx_whisper делает VTT, pyannote раскладывает по SPEAKER_XX. На 56-минутном звонке транскрипция заняла около пяти минут. Платный только Hijack — разовая лицензия, без подписки (цену смотрите на сайте Rogue Amoeba). Скрипты выложил в mac-call-transcribe под MIT. Ниже сборка, замеры с двух реальных звонков и грабли; повторяется на любом Mac с M-чипом.

Собрал ассистента встреч, который работает целиком на моём маке: локальный STT, живая диаризация голосов, мгновенные ответы на вопросы собеседника и самообновляемый граф знаний в Obsidian. Внутри — грабли: ловушка обращений при расстановке имён, 23 «голоса» из-за осколков кластеризации, num_ctx и бюджет RAM в Ollama. Код открыт, Apache 2.0.

Меня зовут Саша Сойфер — я физик‑океанолог, работала на обоих полюсах, жила на Шпицбергене, писала статьи, делала замеры в тропиках и в северных крошках‑озерах на моторке. В общем, много времени провела в любовном изучении природы.
Параллельно с этим я всю жизнь увлекалась музыкой, и, работая с измерениями рек, вдруг подумала, что будет круто выявить звук гидрологических данных. Почему именно их?
Уровень реки — первичная метрика её «силы», от которой будет зависеть её напор, перенос вещества и так далее. Во‑первых, обычно у уровня рек есть выраженная сезонность, и это яркая точка пересечения с акустикой, так как звук синтезируется через периодические гармоники. При этом важно, что уровень реки меняется сильно и достаточно быстро: помимо четкого годового хода, он реагирует на атмосферные условия. Это легко сложилось для меня в цельную историю: озвучив архивные данные, можно сравнить, как прошёл каждый год, какой тренд в целом в жизни реки и какие краткосрочные события с ней происходили.
Вдобавок, в России обширная сеть гидрологических постов — это даёт простор для построения художественного высказывания.
Уже проговорилась, что из доступных гидрологических параметров для создания звука я выбрала уровень рек. Чтобы не слить данные, я работала не с абсолютными значениями, а относительными и немного их аугментировала — так, что это не оказывает влияния на звук, но не позволяет восстановить точные значения. (; Для проекта я выбрала Енисейский бассейн.

В 90-е и начале нулевых производитель телефонов Nokia был самым известным в мире: его модели считались хитами продаж, а мелодия Nokia Tune стала одним из популярных аудиобрендов. В нашей статье — подробнее об этом звуке и о том, как он регистрировался в разных странах мира. Спойлер: не без приключений.

Как устроен KalinkaPlayer: модульный бэкенд, нативный аудиоплеер, пайплайн метаданных и мобильное управление в одном проекте.

Описываю настроение словами — и Raspberry Pi находит подходящие треки в моей коллекции, полностью локально, без облака и подписки. Как это устроено внутри.
В этом тексте я написал про то как настроить I2S трансивер работать в полнодуплексном режиме (Full Duplex). Показал как настроить на микроконтроллере STM32F407VG одновременное воспроизведение и запись встречного аудио потока по интерфейсу I2S.

В прошлой статье я разобрал Fire & Forget II – гонку 1990 года – и пересобрал её на C. Но у игры, кроме пикселей, есть звук, и с ним получилась отдельная история: звуковой драйвер тоже переехал в порт целиком, вместе со всеми своими данными. А когда в руках живой музыкальный движок 1990 года – грех не заставить его объяснить, как вообще звучала та эпоха.
Под катом – 28 минут саундтрека игры в настоящем Winamp с окном живых регистров чипа, разбор синтезатора OPL2 по этим регистрам на пяти коротких видео – от одной ноты до взрывов и вертолётов – и виртуальная машина музыки: байткод, интерпретатор и пьеса, которую композитор вырезал из игры.
Я часто ловлю тонкий, почти на грани слышимости писк, когда работаю с LLM на своем MacBook Pro. Иногда — когда вроде бы вообще ничего не запускал. Довольно долго подозревал, что профдеформация переросла в галлюцинацию.
Оказалось — нет, это физика.

Привет, Хабр! Меня попросили создать педаль гитарного перегруза, внешний вид и звучание которой должны максимально приблизиться к легендарному японскому овердрайву Barbarossa Gargoyle, выпускаемому в очень малых количествах и продаваемому по высоким ценам.
Музыкантам надо помогать, поскольку они делают нашу жизнь лучше и интереснее. Поэтому мне пришлось отложить в сторону другие дела и заняться новым проектом.
Под катом вас ждёт видео со звучанием, схема моей версии эффекта и подробное описание того, как она работает.

Доброе утро, фанаты! История длиной в 2 года о том, как придумать дейтинг приложение с выходом на иностранный рынок: получать отказы от Spotify, потерять в последний момент инвестиции — но всё же выпустить приложение!