Если ваша платформа принимает загружаемые аудио- или видеофайлы, вам часто необходимо знать, содержит ли файл музыку, защищенную авторским правом, прежде чем публиковать его. В этом руководстве мы создадим сканер: пользователь загружает файл, ваш бэкенд отправляет его на корпоративную конечную точку AudD, а вы получаете список всех распознанных треков с указанием лейбла, ISRC, UPC и временных меток, где они появляются.
Что вы создадите
Единую бэкенд-конечную точку — POST /scan — которая принимает загруженный файл, пересылает его на корпоративную конечную точку AudD и возвращает вердикт: список совпавших треков (с идентификаторами и временными метками) или пустой список, если файл «чист». Вы сами определяете политику: блокировать при любом совпадении, блокировать при превышении порога оценки или отправлять на проверку модератору.
Корпоративная конечная точка — правильный выбор в данном случае (а не стандартная конечная точка) по двум причинам: пользовательские загрузки имеют произвольную длину, и вам нужно найти каждую песню в файле, а не только одну. Корпоративная конечная точка разбивает файл на части на стороне сервера и возвращает по одному совпадению для каждого распознанного сегмента.
Предварительные требования
- API-токен из dashboard.audd.io. Для получения ISRC и UPC в ответах требуется тарифный план Startup или выше.
- Python 3.10+ с официальным SDK: pip install audd
- Несколько тестовых файлов. https://audd.tech/example.mp3 — это известный трек, который можно использовать для проверки успешного сценария.
Пошаговое руководство
Шаг 1: Сканирование одного файла
Начните с самого простого сканирования: отправьте файл на корпоративную конечную точку и выведите результат. Всегда передавайте параметр limit во время разработки — корпоративная конечная точка тарифицирует каждые 12 секунд обработанного аудио, а неограниченный вызов для длинного файла может привести к обработке часов аудио.
При запуске этого кода для примера файла вы увидите одно совпадение с временным кодом, исполнителем, названием и ISRC. «Чистый» файл вернет пустой список — это не ошибка.
Всегда устанавливайте limit во время разработки. Корпоративная конечная точка тарифицирует каждые 12 секунд обработанного аудио. Неограниченный вызов для многочасовой загрузки может привести к сотням платных совпадений. Начните с limit=10 и увеличивайте его только тогда, когда поймете стоимость обработки ваших реальных данных.
Всегда устанавливайте limit во время разработки. Корпоративная конечная точка тарифицирует каждые 12 секунд обработанного аудио. Неограниченный вызов для многочасовой загрузки может привести к сотням платных совпадений. Начните с limit=10 и увеличивайте его только тогда, когда поймете стоимость обработки ваших реальных данных.
Шаг 2: Прием загрузки и пересылка
Теперь подключите это к HTTP-обработчику. SDK принимает путь к файлу, необработанные байты или поток, поэтому вы можете пересылать загруженные байты напрямую, не записывая их на диск.
clean: true с пустым списком совпадений — это ваш вердикт «музыка, защищенная авторским правом, не обнаружена».
Шаг 3: Применение политики
Список необработанных совпадений является входными данными для любой политики модерации, которую вы используете. Три распространенных варианта:
«Блокировать при любом совпадении» — самая строгая политика. Большинство платформ вместо этого блокируют только коммерческие релизы (наличие лейбла или присутствие ISRC/UPC), а все остальное отправляют на проверку человеку.
Шаг 4: Ограничение затрат на длинных файлах
Для длинных загрузок, где вам нужен только ответ «да/нет», а не полный список треков, используйте выборку из файла вместо создания «отпечатков» каждого фрагмента:
every=5 сокращает объем тарифицируемого аудио примерно в пять раз, при этом все равно позволяя обнаружить длительное использование трека. Используйте полное сканирование (высокий лимит, без параметра every) только тогда, когда вам нужен полный список треков для доказательства.
Что вы получаете в ответ
Каждое совпадение в списке содержит основные теги, а также идентификаторы, важные для вынесения вердикта об авторских правах:
isrc и upc заполняются в ответах корпоративной конечной точки для учетных записей с планом Startup или выше. Если они возвращаются как null для каждого совпадения, проверьте свой тарифный план.
Этот сканер отвечает на вопрос «содержит ли файл музыку, защищенную авторским правом, и какие именно треки» — он не указывает точную секунду появления каждого совпадения в файле. Если вам нужны точные временные метки внутри файла (для подачи жалобы на нарушение или составления треклиста), см. «Создание доказательств для DMCA-запроса», где считывается позиция каждого фрагмента, возвращаемая корпоративной конечной точкой.
Обработка ошибок
Сканеру нужно различать лишь несколько случаев:
- Ошибки аутентификации (AudDAuthenticationError) — неверный или отсутствующий токен. Завершайте работу с ошибкой при запуске, а не при каждом запросе.
- Ошибки квоты / подписки (AudDQuotaError, AudDSubscriptionError) — вы достигли лимита или корпоративная конечная точка не включена для вашего токена. Сообщите операторам; не повторяйте запрос.
- Ошибки неверного аудио (AudDInvalidAudioError) — загруженный файл не является декодируемым аудио/видео. Обрабатывайте как ошибку пользователя: отклоняйте загрузку с сообщением «не удалось прочитать файл», а не как ошибку сервера.
- Ошибки соединения (AudDConnectionError) — временные. Повторите попытку с экспоненциальной задержкой; SDK уже повторяет идемпотентные вызовы.
Дальнейшие шаги
- Сохраняйте совпадения, используя ID загрузки в качестве ключа, чтобы вы могли повторно применять политику без повторного сканирования (повторное сканирование снова тарифицируется).
- Для собственного каталога (обнаружение утечек невыпущенных треков или повторное использование сэмплов) сначала загрузите свои треки в пользовательский каталог — см. «Обнаружение сэмплов в пользовательских загрузках».
- Чтобы сканировать контент, который уже опубликован по URL (TikTok, видео на YouTube), а не загружать файл, передайте URL вместо байтов — AudD анализирует социальный URL на стороне сервера.
- От совпадения к решению: политики разрешения, блокировки и проверки
- Статья 17 ЕС и DSA: где применяется распознавание музыки
- Стандартная, корпоративная или потоковая версии: как выбрать
- Оптимизация затрат корпоративной версии
- Создание доказательств для DMCA-запроса
- Документация Python SDK
- Справочник API

