Speech-to-Text
A conversão de fala em texto (STT), ou reconhecimento automático de fala, transcreve áudio falado em texto com modelos neurais como o Whisper, avaliados pela taxa de erro de palavras.
A conversão de fala em texto (STT), também chamada de reconhecimento automático de fala (ASR) ou simplesmente reconhecimento de fala, converte áudio falado em texto escrito. Um modelo de STT transforma uma forma de onda em uma representação tempo-frequência, mapeia essa representação para caracteres ou unidades de palavras com uma rede neural e gera uma transcrição, muitas vezes com pontuação, marcações de tempo e rótulos que indicam quem falou. Essa é a camada de entrada dos assistentes de voz, das legendas ao vivo, das anotações de reuniões e da análise de chamadas, e as transcrições alimentam o processamento de linguagem natural (NLP) para pesquisa, sumarização e detecção de intenções. O pré-treinamento autossupervisionado com áudio sem rótulos e o treinamento fracamente supervisionado em grande escala — como o Whisper da OpenAI, treinado com 680.000 horas de áudio multilíngue da internet — tornaram os sistemas modernos precisos diante de diferentes sotaques, ruído de fundo e dezenas de idiomas.
Como funciona a conversão de fala em texto#
Primeiro, o áudio é reamostrado — para 16 kHz no Whisper — e convertido em um espectrograma log-mel, uma grade que representa a energia por faixa de frequência ao longo do tempo. O Whisper calcula 80 bandas mel em janelas de 25 milissegundos a cada 10 milissegundos, e seu modelo large-v3 usa 128 bandas. Um codificador acústico, composto por camadas convolucionais e de transformer, transforma esses quadros em características. O codificador Conformer intercala convolução, que captura padrões sonoros locais, com autoatenção, que relaciona partes distantes de um enunciado, e alcançou taxas de erro de palavras de 2,1% e 4,3% nos conjuntos test-clean e test-other do LibriSpeech, sem um modelo de linguagem externo. Três famílias de decodificadores transformam as características do codificador em texto:
- Classificação temporal conexionista (CTC): prevê um caractere, parte de palavra ou espaço em branco para cada quadro de áudio, depois elimina as repetições e remove os espaços em branco. Todos os quadros são decodificados em paralelo, o que torna a CTC rápida.
- Transdutores: RNN-T e seus sucessores emitem tokens conforme chegam os quadros de áudio, por isso são adequados ao reconhecimento em streaming em celulares e em legendas ao vivo.
- Codificadores-decodificadores com atenção: um decodificador de texto gera tokens um de cada vez enquanto presta atenção ao áudio codificado. O Whisper decodifica janelas de 30 segundos dessa forma e usa tokens especiais para também identificar o idioma, prever marcas de tempo ou traduzir para inglês.
Sistemas de streaming mostram transcrições parciais que mudam conforme chega mais áudio e finalizam um segmento quando o interlocutor faz uma pausa:
Após a decodificação, a normalização inversa de texto reescreve formas faladas, como "vinte e cinco dólares", como "$25", e a diarização de locutores divide a transcrição de acordo com quem falou e quando.
Dados de treinamento e modelos#
- Pré-treinamento autossupervisionado: o wav2vec 2.0 da Meta aprende representações da fala mascarando partes de áudio sem rótulos. Pré-treinado com 53.000 horas de fala sem rótulos e ajustado com apenas 10 minutos de áudio transcrito, alcançou taxas de erro de palavras de 4,8% e 8,2% nos conjuntos de teste clean e other do LibriSpeech.
- Supervisão fraca em grande escala: o Whisper é treinado com áudio associado às transcrições imperfeitas encontradas na internet. Seus modelos vão de 39 milhões de parâmetros na versão tiny a 1,55 bilhão na versão large, e o modelo turbo, uma versão large-v3 otimizada com 809 milhões de parâmetros, é cerca de 8 vezes mais rápido que o large.
- Alucinação: decodificadores com atenção se comportam como modelos de linguagem, por isso o silêncio ou o ruído podem levá-los a inventar texto fluente. O estudo Careless Whisper constatou que cerca de 1% das transcrições do Whisper continham frases ou sentenças inteiras ausentes do áudio, com maior frequência para locutores que faziam pausas longas.
Conversão de fala em texto vs. termos relacionados#
- Reconhecimento de fala e ASR: sinônimos de conversão de fala em texto.
- Reconhecimento e diarização de locutores: determinam quem está falando, e não o que foi dito. A diarização identifica o locutor dos segmentos de uma gravação, permitindo atribuir cada fala em uma transcrição de reunião.
- Compreensão de linguagem natural (NLU): interpreta o significado da transcrição, como a intenção e as entidades em "reservar uma mesa para dois às sete".
- Conversão de texto em fala (TTS): o sentido inverso, gerando fala a partir de texto. Assistentes de voz encadeiam STT, um modelo de linguagem grande e TTS.
Aplicações no mundo real#
- Legendas e acessibilidade: legendas ao vivo em celulares, plataformas de vídeo e softwares de reunião tornam a fala acessível a pessoas surdas ou com deficiência auditiva e permitem que qualquer pessoa pesquise o conteúdo.
- Documentação clínica: escribas ambientais transcrevem conversas entre médicos e pacientes e elaboram notas clínicas para o prontuário eletrônico.
- Centrais de atendimento: chamadas transcritas alimentam a busca, verificações de conformidade e a análise de sentimentos.
- Controle por voz de sistemas de visão: um comando transcrito, como "encontre a mochila vermelha", torna-se um prompt de texto para o YOLOE-26, a versão de vocabulário aberto do Ultralytics YOLO26, que detecta e segmenta categorias especificadas no momento da inferência, mesmo que elas nunca tenham feito parte das classes de treinamento.
Medição da acurácia#
A taxa de erro de palavras (WER) conta as substituições, exclusões e inserções necessárias para transformar a transcrição na transcrição de referência, dividindo o resultado pelo número de palavras de referência. Este código calcula a taxa usando a distância de edição em nível de palavra:
import numpy as np
reference = ["turn", "on", "the", "kitchen", "lights"]
hypothesis = ["turn", "of", "the", "kitchen", "light", "please"]
# Edit distance over words: d[i, j] is the cheapest way to turn the first i reference words into the first j hypothesis words
d = np.zeros((len(reference) + 1, len(hypothesis) + 1), dtype=int)
d[:, 0] = np.arange(len(reference) + 1) # deletions
d[0, :] = np.arange(len(hypothesis) + 1) # insertions
for i in range(1, len(reference) + 1):
for j in range(1, len(hypothesis) + 1):
substitution = d[i - 1, j - 1] + (reference[i - 1] != hypothesis[j - 1])
d[i, j] = min(substitution, d[i - 1, j] + 1, d[i, j - 1] + 1)
# Word error rate: (substitutions + deletions + insertions) / words in the reference
print(f"{d[-1, -1]} errors / {len(reference)} words = WER {d[-1, -1] / len(reference):.0%}")Ele imprime 3 errors / 5 words = WER 60%: "of" no lugar de "on" e "light" no lugar de "lights" são substituições, e "please" é uma inserção. Como as inserções são contabilizadas, a WER pode ultrapassar 100%, e benchmarks como o Open ASR Leaderboard normalizam maiúsculas e minúsculas, pontuação e variações ortográficas antes da avaliação, para que "Lights." e "lights" correspondam. Idiomas escritos sem espaços entre palavras, como chinês e japonês, são avaliados com a taxa de erro de caracteres.










