Legendagem com fala em texto

Neste guia, você aprenderá a criar legendas com conversão de fala em texto. A legendagem é o processo de converter o conteúdo de áudio de uma transmissão de televisão, webcast, filme, vídeo, evento ao vivo ou outra produção em texto e, em seguida, exibir o texto em uma tela, monitor ou outro sistema de exibição visual.

Os conceitos incluem como sincronizar legendas com o áudio de entrada, aplicar filtros de palavrões, obter resultados parciais, aplicar personalizações e identificar idiomas falados para cenários multilíngues. Este guia abrange legendas para fala, mas não inclui ID de alto-falante ou efeitos sonoros, como sinos tocando.

Aqui estão alguns cenários comuns de legendagem:

  • Cursos online e vídeos instrutivos
  • Eventos desportivos
  • Chamadas de voz e vídeo

A seguir estão os aspetos a serem considerados ao usar legendas:

  • Informe ao seu público que as legendas são geradas por um serviço automatizado.
  • Centralizar legendas horizontalmente na tela, em uma fonte grande e proeminente.
  • Considere se deseja usar resultados parciais, quando começar a exibir legendas e quantas palavras mostrar ao mesmo tempo.
  • Saiba mais sobre protocolos de legendagem, como SMPTE-TT.
  • Considere formatos de saída como SRT (SubRip Text) e WebVTT (Web Video Text Tracks). Eles podem ser carregados na maioria dos players de vídeo, como o VLC, adicionando automaticamente as legendas ao seu vídeo.

Gorjeta

Experimente o Speech Studio e escolha um clipe de vídeo de exemplo para ver os resultados das legendas processadas em tempo real ou offline.

Experimente o Azure AI Video Indexer como uma demonstração de como pode obter legendas para vídeos carregados.

As legendas podem acompanhar a fala em tempo real ou pré-gravada. Quer esteja a mostrar legendas em tempo real ou com uma gravação, pode utilizar o SDK de Fala ou a CLI de Voz para reconhecer a fala e obter transcrições. Você também pode usar a API de transcrição em lote para vídeos pré-gravados.

Formato de saída de legenda

O serviço de Fala suporta formatos de saída como SRT (SubRip Text) e WebVTT (Web Video Text Tracks). Eles podem ser carregados na maioria dos players de vídeo, como o VLC, adicionando automaticamente as legendas ao seu vídeo.

Gorjeta

O serviço de Fala fornece opções de filtro de palavrões. Você pode especificar se deseja mascarar, remover ou mostrar palavrões.

O formato de saída de período de tempo SRT (SubRip Text) é hh:mm:ss,fff.

1
00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

O formato de saída de período de tempo WebVTT (Web Video Text Tracks) é hh:mm:ss.fff.

WEBVTT

00:00:00.180 --> 00:00:03.230
Welcome to applied Mathematics course 201.
{
  "ResultId": "8e89437b4b9349088a933f8db4ccc263",
  "Duration": "00:00:03.0500000"
}

Entrada de áudio para o serviço de Fala

Para legendas em tempo real, use um microfone ou fluxo de entrada de áudio em vez de entrada de arquivo. Para obter exemplos de como reconhecer a fala a partir de um microfone, consulte o Guia de início rápido de fala para texto e Como reconhecer a documentação de fala. Para obter mais informações sobre streaming, consulte Como usar o fluxo de entrada de áudio.

Para legendar uma pré-gravação, envie a entrada de arquivo para o serviço de fala. Para obter mais informações, consulte Como usar áudio de entrada compactada.

Legenda e sincronização de fala

Você deseja sincronizar as legendas com a faixa de áudio, seja em tempo real ou com uma pré-gravação.

O serviço de Fala retorna o deslocamento e a duração da fala reconhecida.

  • Deslocamento: O deslocamento para o fluxo de áudio que está sendo reconhecido, expresso como duração. O deslocamento é medido em ticks, a partir de (zero) tick, associado ao primeiro byte de 0 áudio processado pelo SDK. Por exemplo, o deslocamento começa quando você inicia o reconhecimento, já que é quando o SDK começa a processar o fluxo de áudio. Um carrapato representa cem nanossegundos ou um décimo milionésimo de segundo.
  • Duração: Duração do enunciado que está sendo reconhecido. A duração em carrapatos não inclui silêncio à direita ou à esquerda.

Para obter mais informações, consulte Obter resultados de reconhecimento de fala.

Obter resultados parciais

Considere quando começar a exibir legendas e quantas palavras mostrar ao mesmo tempo. Os resultados do reconhecimento de fala estão sujeitos a alterações enquanto um enunciado ainda está sendo reconhecido. Os resultados parciais são retornados com cada Recognizing evento. À medida que cada palavra é processada, o serviço de Fala reavalia um enunciado no novo contexto e retorna novamente o melhor resultado. Não é garantido que o novo resultado seja o mesmo do resultado anterior. A transcrição completa e final de um enunciado é retornada com o Recognized evento.

Nota

A pontuação dos resultados parciais não está disponível.

Para legendar a fala pré-gravada ou onde a latência não for uma preocupação, você pode esperar pela transcrição completa de cada enunciado antes de exibir qualquer palavra. Dado o deslocamento final e a duração de cada palavra em um enunciado, você sabe quando mostrar as palavras subsequentes no ritmo da trilha sonora.

As legendas em tempo real apresentam compensações em relação à latência versus precisão. Você pode mostrar o texto de cada Recognizing evento o mais rápido possível. No entanto, se você puder aceitar alguma latência, poderá melhorar a precisão da legenda exibindo o Recognized texto do evento. Há também algum meio-termo, que é referido como "resultados parciais estáveis".

Você pode solicitar que o serviço de Fala retorne menos Recognizing eventos mais precisos. Isso é feito definindo a SpeechServiceResponse_StablePartialResultThreshold propriedade como um valor entre 0 e 2147483647. O valor definido é o número de vezes que uma palavra tem de ser reconhecida antes de o serviço de Voz devolver um Recognizing evento. Por exemplo, se você definir o valor da propriedade como 5, o SpeechServiceResponse_StablePartialResultThreshold serviço de Fala declarará o reconhecimento de uma palavra pelo menos cinco vezes antes de retornar os resultados parciais para você com um Recognizing evento.

speechConfig.SetProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig->SetProperty(PropertyId::SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.SetProperty(common.SpeechServiceResponseStablePartialResultThreshold, 5)
speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.setProperty(sdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
[self.speechConfig setPropertyTo:5 byId:SPXSpeechServiceResponseStablePartialResultThreshold];
self.speechConfig!.setPropertyTo(5, by: SPXPropertyId.speechServiceResponseStablePartialResultThreshold)
speech_config.set_property(property_id = speechsdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, value = 5)
spx recognize --file caption.this.mp4 --format any --property SpeechServiceResponse_StablePartialResultThreshold=5 --output vtt file - --output srt file -

Solicitar resultados parciais mais estáveis reduz a "cintilação" ou a alteração do texto, mas pode aumentar a latência à medida que você espera por resultados de maior confiança.

Exemplo de limiar parcial estável

Na sequência de reconhecimento seguinte, sem definir um limiar parcial estável, "matemática" é reconhecida como uma palavra, mas o texto final é "matemática". Em outro ponto, o "curso 2" é reconhecido, mas o texto final é "curso 201".

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied math
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZING: Text=welcome to applied mathematics course 2
RECOGNIZING: Text=welcome to applied mathematics course 201
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

No exemplo anterior, as transcrições eram aditivas e nenhum texto era retirado. Mas em outros momentos você pode achar que os resultados parciais foram imprecisos. Em ambos os casos, os resultados parciais instáveis podem ser percebidos como "cintilação" quando exibidos.

Neste exemplo, se o limite de resultado parcial estável estiver definido como 5, nenhuma palavra será alterada ou retrocedida.

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

Identificação linguística

Se o idioma no áudio puder mudar, use a identificação contínua do idioma. A identificação de idioma é usada para identificar idiomas falados em áudio quando comparados com uma lista de idiomas suportados. Você fornece até 10 idiomas candidatos, pelo menos um dos quais é esperado no áudio. O serviço de Fala retorna o idioma mais provável no áudio.

Personalizações para melhorar a precisão

Uma lista de frases é uma lista de palavras ou frases que você fornece antes de iniciar o reconhecimento de fala. Adicionar uma frase a uma lista de frases aumenta a sua importância, tornando-a mais provável de ser reconhecida.

Exemplos de frases incluem:

  • Nomes
  • Localizações geográficas
  • Homónimos
  • Palavras ou acrónimos exclusivos da sua indústria ou organização

Existem algumas situações em que treinar um modelo personalizado é provavelmente a melhor opção para melhorar a precisão. Por exemplo, se você estiver legendando palestras de ortodontia, talvez queira treinar um modelo personalizado com os dados de domínio correspondentes.

Próximos passos