Reading view

Один пакет — один мини-плеер: почему мы перенесли голос БОЛТУНа в AudioWorklet

Почему исправные 20-мс аудиопакеты всё равно превращались в щелчки? В БОЛТУНе каждый пакет запускался как отдельный AudioBufferSourceNode — до 50 мини-плееров в секунду на одного говорящего. Мы заменили это расписание одним непрерывным AudioWorklet с кольцевым буфером и проверили новую схему тестами.

Разобраться в звуке
  •  

После C++ захотелось изучить Rust поглубже. Да и под рукой не оказалось софтины с нужным функционалом Quicksort

Каждый день мы работаем с файлами: перемещаю, копируем, сортируем, раскладываем по папкам. И каждый день тратим массу времени на то, чтобы открыть нужную директорию, перетащить файл, закрыть лишние окна. В Windows эта рутина особенно утомляет: проводник, куча вкладок, постоянное переключение между папками. Хотелось простого решения: выделил файл → правый клик → выбрал папку → файл перемещён. Без лишних телодвижений, без открытия дополнительных окон.

К тому моменту уже много лет работал с C++ — WinAPI, COM, IPC, низкоуровневую работу с системой. Но в современных проектах хотелось попробовать что-то более безопасное, современное и приятное в разработке. Так я обратил внимание на Rust. Безопасная работа с памятью, богатая экосистема, отличная поддержка Windows через windows-rs — это выглядело многообещающе. А Tauri (на базе Rust) давал возможность сделать красивый GUI на React, но без тяжеловесного Electron.

Читать далее
  •  

После сборки на Tauri затрещал голос и почернел стрим: разбираем три ошибки одного теста

После сборки на Tauri голос начал трещать, автокалибровка почти минуту вмешивалась в разговор, а демонстрация экрана через минуту становилась чёрной. Разбираем запись и логи, находим усиление до ×4 без лимитера, резкие разрывы 20-мс аудиопакетов и зависший видеотрек при живом соединении LiveKit — и показываем, как исправили каждый сбой в версии 0.0.26.

Разобраться в причинах
  •  
❌