Мы много пишем о том, как мы извлекаем данные — про инструменты разведки, про антибот-транспорты, про типизированные клиенты музыкальных метаданных. Справедливый вопрос — зачем. Мы компания голосового ИИ; что мы делаем, сопровождая скрейперы для музыкальных энциклопедий и радиокаталогов?
Ответ в том, что данные стоят выше по течению от всего, что мы поставляем. Голосовой ассистент хорош ровно настолько, насколько хороши слова, которые он ожидает услышать, сущности, которые он может распознать, и произношения, которые он знает. Ничто из этого не приходит из архитектурных диаграмм. Это приходит из данных — а интересные данные редко лежат в готовом датасете. Они разбросаны по публичному вебу, в каталогах, которые люди курировали десятилетиями.
Вот что происходит с этими данными после того, как мы их собираем.
Сущности: словарь, на котором живёт голосовой ассистент
Скажите «play Sultans of Swing by Dire Straits» ассистенту. Прежде чем любая модель сможет действовать по этому, что-то должно знать, что Sultans of Swing — это трек, а Dire Straits — исполнитель. Умножьте на каждого исполнителя, альбом, станцию, подкаст и жанр, которые пользователь может назвать, и у вас есть настоящий словарь медиа-ассистента — сотни тысяч именованных сущностей, ни одна из которых не появляется в стандартном обучающем корпусе NLP.
Наши медиа-клиенты выдают именно это: типизированные записи с каноническими id, нормализованные в схему mediavocab. Эти каталоги сущностей напрямую питают:
- Сопоставление интентов на основе ключевых слов — списки сущностей становятся газеттирами, которые заземляют медиа-запросы в OpenVoiceOS.
- Классификаторы интентов — наши датасеты медиа-интентов сочетают реальные скрейпленные сущности с шаблонным и LLM-ассистированным синтезом предложений, производя высказывания, какие делают реальные пользователи, наполненные сущностями, которые действительно существуют. Модели, обученные так, обрабатывают решение «это запрос на воспроизведение, и чего?» в медиа-конвейере OpenVoiceOS.
- Синтетические корпуса NER — тот же рецепт обобщается: возьмите каталог реальных сущностей, сгенерируйте вокруг них естественные предложения, и у вас есть размеченный датасет именованных сущностей для домена, который не покрывает ни один академический корпус. Сущности реальны, так что распределение честное; предложения синтетические, так что объём — какой вам нужен.
Смещение распознавания речи к словам, которые важны
Универсальный ASR обучен на общей речи, так что он транскрибирует Dire Straits как «dire straights» и коверкает каждое название португальской деревни. Исправление — не переобучение с нуля, а смещение (biasing): дать распознавателю словарь вашего домена.
Скрейпленные каталоги — это тот словарь. Конкретно:
- Смещение языковой модели — n-граммные или shallow-fusion LM, обученные на насыщенном сущностями тексте, подталкивают декодер к внутридоменным словам. LM медиа- ассистента должна быть обучена на названиях треков и именах исполнителей, а наша может быть, потому что они у нас есть — типизированные, дедуплицированные, с чистым провенансом.
- Распознавание, обусловленное промптом — более новые архитектуры принимают текстовый промпт или список контекста во время инференса. Скармливание фактической библиотеки пользователя — сущностей, которые извлекли наши клиенты — в контекст распознавателя превращает «нераспознаваемое имя собственное» в «известный словарный элемент».
- Данные для дообучения — там, где смещения недостаточно, каталоги сущностей плюс наши голоса TTS генерируют синтетическую речь для тех самых фраз, которые развёртывание не должно ошибиться. Это сервис построения датасетов, который мы предлагаем коммерчески, и он построен на том же открытом конвейере.
Произношение: от краулленных словарей к G2P и TTS
Некоторые из наших самых ценных краулов — не каталоги сущностей, а лексиконы. Краулинг словаря Infopédia произвёл infopedia-pt-ipa, более 100 000 пар слово→IPA европейского португальского. Этот датасет:
- сравнивает и настраивает наш основанный на правилах стек португальского G2P,
- заземляет произношение для голосов TTS, так что они произносят слова так, как это действительно делают носители,
- и служит основой для ресурсов, размеченных по значению, вроде нашей работы по португальским гетерофонам, где одно и то же написание отображается на разные звуки в зависимости от смысла.
Данные орфография-в-звук — наименее гламурный угол речевой технологии и тот, который больше всего решает, звучит ли голос как носитель. Никто не выдаёт вам эти данные. Вы их краулите, чистите и публикуете — так что следующей команде не придётся.
Честное топливо для LLM
Всё вышесказанное применимо и к большим языковым моделям, с одним дополнительным поворотом: провенанс теперь важнее объёма. Открытый веб всё сильнее загрязняется сгенерированным моделями текстом; обучение или оценка на нём тихо перерабатывают вчерашние выводы моделей. Вот почему нас волнуют источники с чистым человеческим провенансом — десятилетия архивов Usenet, курируемые энциклопедии, официальные словари — и почему каждый публикуемый нами датасет заявляет, откуда пришла каждая запись.
Структурированные каталоги также питают LLM во время инференса: типизированное, дедуплицированное хранилище сущностей — именно то, что нужно слою извлечения или tool API агента, чтобы заземлить свои ответы. Чистые API поверх грязных источников — не просто удобство скрейпинга, это то, как вы держите языковую модель прикреплённой к фактам.
Конвейер, от начала до конца
Итак, полная картина выглядит так:
recon → resilient extraction → typed clients → normalised catalogues
→ gazetteers & intent data (NLP)
→ biasing LMs & fine-tune sets (ASR)
→ lexicons & phoneme labels (G2P / TTS)
→ provenance-clean corpora (LLMs, retrieval)
Каждая стадия — открытый исходный код, каждый датасет публикуется там, где позволяет лицензирование, и тот же конвейер, который наполняет нужды наших собственных моделей, доступен как услуга для ваших. Скрейперы — не побочный квест. Это карьер, из которого построен весь стек.