Legendagem com conversão de fala em texto

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

Os conceitos incluem como sincronizar legendas com seu á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 aborda a legenda de fala, mas não inclui a identidade do orador ou efeitos sonoros, por exemplo, sinos tocando.

Veja alguns cenários de legendagem comuns:

  • Cursos online e vídeos instrucionais
  • Eventos esportivos
  • Chamadas de voz e vídeo

Veja abaixo aspectos a serem considerados no uso de legendas:

  • Informe seu público-alvo de que as legendas são geradas por um serviço automatizado.
  • Centralize as legendas horizontalmente na tela, em uma fonte grande e proeminente.
  • Considere se é necessário usar resultados parciais, quando começar a exibir legendas e quantas palavras mostrar por vez.
  • Saiba mais sobre protocolos de legendagem, por exemplo, SMPTE-TT.
  • Considere formatos de saída, como SRT (Texto SubRip) e WebVTT (Faixas de Texto de Vídeo da Web). Eles podem ser carregados na maioria dos players de vídeo, como VLC, com a adição automática das legendas ao vídeo.

Dica

Experimente o Speech Studio: escolha um videoclipe de exemplo para ver os resultados da legenda processada em tempo real ou offline.

Experimente o Indexador de Vídeo da IA do Azure como uma demonstração de como você pode obter legendas para vídeos carregados.

A legenda pode acompanhar a fala em tempo real ou pré-gravada. Independentemente de mostrar legendas em tempo real ou com uma gravação, você poderá usar o SDK de Fala ou a CLI de Fala para reconhecer a fala e obter transcrições. Você também pode usar a API de transcrição do Lote para vídeo pré-gravado.

Formato de saída da legenda

O serviço de Fala dá suporte aos formatos de saída, como SRT (Texto SubRip) e WebVTT (Faixas de Texto de Vídeo da Web). Eles podem ser carregados na maioria dos players de vídeo, como VLC, com a adição automática das legendas ao vídeo.

Dica

O Serviço Cognitivo do Azure para Fala fornece opções de filtro de palavrões. Você pode especificar se quer mascarar, remover ou mostrar os palavrões.

O formato de saída do intervalo de horários do SRT (Texto SubRip) é hh:mm:ss,fff.

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

O formato de saída do intervalo de horários do WebVTT (Faixas de Texto de Vídeo da Web) é 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"
}

Áudio de entrada para o Serviço Cognitivo do Azure para Fala

Para legendas em tempo real, use um fluxo de entrada de áudio ou microfone em vez de entrada de arquivo. Para obter exemplos de como reconhecer a fala de um microfone, confira o Início rápido da conversão de fala em texto e a documentação Como reconhecer fala. Para saber mais sobre streaming, confira Como usar o fluxo de entrada de áudio.

Para legendar uma pré-gravação, envie a entrada de arquivo para o Serviço Cognitivo do Azure para Fala. Para obter mais informações, confira Como usar áudio de entrada compactado.

Sincronização de legenda e fala

Talvez você queira sincronizar legendas com a faixa de áudio, seja ela feita 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 tiques, começando pelo tique 0 (zero), associado ao primeiro byte de á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 tique 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 tiques não inclui silêncio à direita ou à esquerda.

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

Obter resultados parciais

Considere quando começar a exibir legendas e quantas palavras mostrar por vez. 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 evento Recognizing. À medida que cada palavra é processada, o Serviço Cognitivo do Azure para Fala reavalia um enunciado no novo contexto e retorna novamente o melhor resultado. Não é garantido que o novo resultado seja o mesmo que o anterior. A transcrição completa e final de um enunciado é retornada com o evento Recognized.

Observação

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

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

A legenda em tempo real apresenta compensações em relação à latência e à precisão. Você pode mostrar o texto de cada evento Recognizing assim que possível. No entanto, se você puder aceitar alguma latência, poderá melhorar a precisão da legenda exibindo o texto do evento Recognized. Existe também um meio-termo, que é chamado de "resultados parciais estáveis".

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

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 -

A solicitação de resultados parciais mais estáveis reduz a "cintilação", ou a alteração do texto, mas poderá aumentar a latência à medida que você aguarda resultados de confiança mais alta.

Exemplo de limite parcial estável

Na sequência de reconhecimento a seguir sem definir um limite parcial estável, "mat." é 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 foi editado. Mas em outras ocasiões, você poderá achar que os resultados parciais foram imprecisos. Em ambos os casos, os resultados parciais instáveis podem ser percebidos como "cintilando" quando exibidos.

Para este exemplo, se o limite de resultado parcial estável for definido como 5, nenhuma palavra será alterada ou removida.

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 de idioma

Se o idioma no áudio puder ser alterado, use identificação de idioma contínua. A identificação de idioma é usada para identificar os idiomas falados em áudio quando comparado com uma lista de idiomas com suporte. Você fornece até 10 idiomas candidatos, sendo que pelo menos um deles deve ser ouvido no áudio. O Serviço Cognitivo do Azure para 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 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 para seu setor ou organização

Há algumas situações em que o treinamento de 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 do domínio correspondente.

Próximas etapas