Escrevemos muito sobre como extraímos dados: as ferramentas de reconhecimento, os transportes anti-bot, os clientes tipados de metadados musicais. Uma pergunta justa é porquê. Somos uma empresa de IA de voz. Porque continuamos a manter scrapers para enciclopédias de música e diretórios de rádio?
A resposta é que os dados estão a montante de tudo o que disponibilizamos. Um assistente de voz é apenas tão bom quanto as palavras que espera ouvir, as entidades que consegue reconhecer e as pronúncias que conhece. Nada disso vem de diagramas de arquitetura. Vem dos dados, e os dados interessantes raramente estão à espera num dataset pronto a usar. Estão espalhados pela web pública, em catálogos que os humanos passaram décadas a curar.
Eis o que acontece a esses dados depois de os recolhermos.
Entidades: o vocabulário de que um assistente de voz vive
Diga “toca Sultans of Swing dos Dire Straits” a um assistente. Antes de qualquer modelo poder agir sobre isso, algo tem de saber que Sultans of Swing é uma faixa e que Dire Straits é um artista. Multiplique por cada artista, álbum, estação, podcast e género que um utilizador possa nomear, e tem o verdadeiro vocabulário de um assistente de media: centenas de milhares de entidades nomeadas, nenhuma das quais aparece num corpus de treino de NLP convencional.
Os nossos clientes de media emitem exatamente isto: registos tipados com ids canónicos, normalizados no esquema mediavocab. Esses catálogos de entidades alimentam diretamente:
- Correspondência de intenção baseada em palavras-chave: as listas de entidades tornam-se gazetteers (listas de nomes conhecidos) que ancoram as consultas de media no OpenVoiceOS.
- Classificadores de intenção: os nossos datasets de intenção de media combinam entidades reais extraídas com síntese de frases por templates e assistida por LLM, produzindo enunciados como os que os utilizadores reais fazem, povoados com entidades que existem de facto. Os modelos treinados dessa forma tratam da decisão “isto é um pedido de reprodução, e de quê?” no pipeline de media do OpenVoiceOS.
- Corpora sintéticos de NER: a mesma receita generaliza-se. Pegue num catálogo de entidades reais, gere frases naturais em torno delas, e tem um dataset de entidades nomeadas etiquetado para um domínio que nenhum corpus académico cobre. As entidades são reais, portanto a distribuição é honesta. As frases são sintéticas, portanto o volume é o que precisar.
Enviesar o reconhecimento de fala para as palavras que importam
O ASR de uso geral é treinado com fala geral, por isso transcreve Dire Straits como “dire straights” e destrói todos os nomes de aldeias portuguesas. A correção não é retreinar de raiz. É biasing: dar ao reconhecedor o vocabulário do seu domínio.
Os catálogos extraídos são esse vocabulário. Concretamente:
- Biasing por modelo de linguagem: os LMs n-gram ou de shallow fusion (modelos de linguagem incorporados no passo de descodificação do reconhecedor) treinados com texto rico em entidades empurram o descodificador para palavras do domínio. O LM de um assistente de media deve ser treinado com títulos de faixas e nomes de artistas, e o nosso pode sê-lo, porque os temos: tipados, sem duplicados e com proveniência limpa.
- Reconhecimento condicionado por prompt: as arquiteturas mais recentes aceitam um prompt de texto ou uma lista de contexto no momento da inferência. Alimentar a biblioteca real do utilizador (as entidades que os nossos clientes extraíram) no contexto do reconhecedor transforma “nome próprio irreconhecível” em “item de vocabulário conhecido”.
- Dados de fine-tuning: onde o biasing não chega, os catálogos de entidades mais as nossas vozes de TTS geram fala sintética para as frases exatas que uma implementação não pode errar. Este é o serviço de construção de datasets que oferecemos comercialmente, e é construído sobre o mesmo pipeline aberto.
Pronúncia: de dicionários rastreados a G2P e TTS
Alguns dos nossos crawls mais valiosos não são catálogos de entidades, mas léxicos. Rastrear o dicionário Infopédia produziu infopedia-pt-ipa, mais de 100.000 pares palavra→IPA de português europeu (IPA é o Alfabeto Fonético Internacional, uma forma padronizada de escrever a pronúncia). Esse dataset:
- avalia e afina a nossa stack de G2P para português baseada em regras,
- ancora a pronúncia das vozes de TTS para que digam as palavras como os falantes de facto dizem,
- e serve de semente a recursos etiquetados por significado como o nosso trabalho sobre heterófonos do português, onde a mesma grafia corresponde a sons diferentes consoante o sentido.
Os dados de grafia-para-som são o canto menos glamoroso da tecnologia de fala, e o que mais decide se uma voz soa nativa. Ninguém lhe entrega estes dados. Rastreia-os, limpa-os e publica-os, para que a próxima equipa não tenha de o fazer.
Combustível honesto para LLMs
Tudo o que está acima também se aplica aos grandes modelos de linguagem, com uma reviravolta adicional: a proveniência importa agora mais do que o volume. A web aberta está cada vez mais contaminada com texto gerado por modelos. Treinar ou avaliar sobre ela recicla discretamente as saídas dos modelos de ontem. É por isso que nos importamos com fontes de proveniência humana limpa: décadas de arquivos de Usenet, enciclopédias curadas, dicionários oficiais. É também por isso que cada dataset que publicamos indica de onde veio cada registo.
Os catálogos estruturados também alimentam os LLMs no momento da inferência. Um repositório de entidades tipado e sem duplicados é exatamente o que uma camada de retrieval ou a API de ferramenta de um agente quer para ancorar as suas respostas. APIs limpas sobre fontes desordenadas são mais do que uma conveniência de scraping. São a forma de manter um modelo de linguagem agarrado aos factos.
O pipeline, de ponta a ponta
Portanto, o quadro completo tem este aspeto:
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)
Cada etapa é de código aberto, cada dataset é publicado onde o licenciamento o permite, e o mesmo pipeline que satisfaz as necessidades dos nossos próprios modelos está disponível como um projeto para os seus. Os scrapers não são uma missão secundária. São a pedreira de onde toda a stack é construída.