Um detector de idioma sempre dá uma resposta, até para uma tosse. Deixe a detecção ativada para áudios limpos ou com vários idiomas, e indique o idioma quando apenas um for falado sobre ruído ou com sotaque forte.
Toda transcrição começa com uma pergunta que o leitor nunca vê: que idioma é este? Se a resposta estiver errada, o resto do pipeline trabalha duro para produzir um texto fluente e sem sentido. Este artigo explica o que um detector de idioma escuta, como a detecção se comporta em áudio ao vivo e em arquivos, e quando é melhor indicar o idioma você mesmo.
Um detector de idioma não entende o que está sendo dito. Ele analisa o próprio som: o inventário de consoantes e vogais, como as sílabas são acentuadas, o ritmo das frases e as palavras curtas e frequentes em que cada idioma se apoia. O espanhol tem seu próprio conjunto de vogais e ritmo; o holandês e o alemão compartilham muita coisa, mas se separam em alguns sons. Alguns segundos de fala clara costumam bastar para distingui-los.
Muitos reconhecedores fazem isso como subproduto do reconhecimento das palavras. Eles decidem o idioma pelo início do áudio, como uma probabilidade para cada idioma que conhecem. Duas consequências vêm daí. As probabilidades sempre somam um, então não existe a resposta “nenhum idioma”: silêncio, uma tosse ou um trecho musical também recebem um idioma, muitas vezes com uma pontuação confiante. E a decisão é tomada a partir do começo, que é a pior amostra possível. Muitas gravações começam com saudações, nomes e nomes de lugares, que carregam muito pouca informação linguística: “Good morning, Maria, welcome to Berlin” é quase tão alemão quanto inglês. Outras começam com silêncio ou uma tosse, e um detector chamado a decidir ali vai decidir mesmo assim, com confiança, sobre nada. Áudio real também faz isso: um sermão em romeno que começa com ruído de ambiente e “Bună dimineața” pode muito bem ser ouvido como o italiano “Buona domenica”, com total certeza.
O custo de uma resposta errada também é pior do que parece. Um reconhecedor que decodifica no idioma errado não erra a ortografia; ele reescreve. “For God so loved the world”, decodificado como romeno, saiu como “Forgot to love the world”. O romeno “mândria slujește”, decodificado como inglês, saiu como “Pride serves”, que é uma tradução precisa de uma frase que ninguém pediu para traduzir. As palavras são fluentes, e a transcrição não dá nenhum sinal de que algo está errado. É isso que torna o erro caro.
Cinco coisas enganam os detectores com mais frequência:
Qual desses problemas afeta você depende de o áudio estar chegando ao vivo ou já estar em um arquivo.
Numa transcrição ao vivo, não há gravação inteira para analisar. O áudio chega conforme é falado, e a transcrição precisa chegar junto. Por isso o idioma é detectado enquanto o falante fala, e acompanhado se ele mudar. É isso que a nota abaixo do controle Spoken language significa quando você inicia uma transcrição ao vivo no Painel: o idioma do falante é detectado automaticamente, e ele pode trocar de idioma a qualquer momento.
Uma troca só é confirmada antes de ser aplicada, então um trecho ruidoso isolado não arrasta a transcrição para outro idioma. O ponto fraco é o começo: se as primeiras palavras forem uma saudação com ruído, a primeira linha pode sair no idioma errado. Indicar o idioma evita isso.
Arquivos funcionam de outra forma, porque a gravação inteira já está disponível.
Um arquivo é um problema melhor: não é preciso confiar nos primeiros segundos. Num arquivo, o idioma é decidido a partir da gravação como um todo, então uma saudação ruidosa no início não consegue definir sozinha o resultado.
O idioma de um arquivo ainda é uma suposição de trabalho, não um veredito. Uma gravação que realmente muda de idioma no meio, como uma entrevista que passa do inglês para o romeno na segunda metade, é acompanhada em vez de forçada, e uma que alterna entre idiomas o tempo todo também é tratada.
Um detector que decide uma vez e nunca reavalia tem confiança no lugar errado.
Nenhum detector ajuda muito quando a gravação inteira está ruidosa. A detecção é o padrão porque acerta na maioria das vezes e não custa nada a você. Para algumas gravações, no entanto, você deve indicar o idioma, e o Painel informa quais são elas: indicar o idioma falado melhora a precisão em gravações ruidosas e com sotaques fortes.
Esses são os casos em que a detecção tem menos o que analisar. O ruído remove as pistas de que o detector depende; um sotaque forte as desloca para outro idioma; um par muito parecido oferece poucas pistas para começar. Um falante de inglês com um sotaque português forte num salão com eco é difícil de situar só pelo som, e se o detector errar, a transcrição transforma a fala em inglês em português enquanto o erro durar. Indicar o idioma elimina a questão, e todo o esforço vai para as palavras.
Um checklist curto:
Indicar o idioma é uma configuração da transcrição, não da sua conta, então você pode decidir por gravação. Tudo isso se resume a uma opção da API.
spokenLanguage ausente significa detectar; session.update com o áudio em andamentoNa API, spokenLanguage é um código de idioma, como en; se você o omitir, o idioma é detectado. Ele aparece em settings de uma transcrição de arquivo ou de link e nas opções de uma sessão em tempo real. Detecção e indicação cobrem os mesmos 100 idiomas. A tradução para até 10 deles é uma escolha separada e não depende do idioma detectado ou indicado. Como a tradução acompanha o ritmo da fala é assunto de Latência da tradução ao vivo, explicada.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Uma sessão em tempo real aceita a mesma opção na criação, e você pode alterá-la enquanto o áudio está fluindo. Um frame de texto session.update com um novo spokenLanguage se aplica à fala a partir daquele momento; definir como "" ou "auto" devolve a sessão para a detecção, e um código não suportado é ignorado. Uma visualização de legendas com um botão de idioma pode permitir que o operador indique o idioma assim que vir uma primeira linha errada, sem reconectar.
{ "type": "session.update", "spokenLanguage": "ro" }
A lista de códigos, com seus nomes, está em GET /v1/languages, que não precisa de chave. O fluxo completo de tempo real, desde criar uma sessão no seu servidor até ler rascunhos e confirmações, está em Transcrição em tempo real por WebSocket, e a referência interativa está em {{api}}/docs. No Painel, a mesma escolha é o controle Spoken language ao iniciar uma nova transcrição, e as chaves da API ficam em Desenvolvedores.