Pular para o conteúdo principal

Extensão Vosk

Por padrão, o plugin Runtime Speech Recognizer usa whisper.cpp para reconhecimento. Em plataformas sem suporte a aceleração de GPU no whisper.cpp, principalmente Android e plataformas baseadas em Android, como Meta Quest, o reconhecimento recorre à CPU + intrinsics, o que é mais lento e consome mais bateria. O plugin de extensão Vosk adiciona um provedor alternativo baseado em Vosk, um kit de ferramentas de reconhecimento de fala leve que funciona bem em hardware limitado e apresenta um desempenho especialmente bom no Meta Quest.

Alternar entre whisper.cpp e Vosk exige apenas alguns nós de Blueprint, e voltar para o outro é igualmente fácil. Assim, você pode manter as duas opções disponíveis e escolher um provedor por plataforma, se necessário.

Instalação

Para usar a extensão Vosk:

  1. Certifique-se de que o plugin principal Runtime Speech Recognizer já esteja instalado no seu projeto.

  2. Baixe o plugin de extensão Vosk de aqui

  3. Extraia a pasta do arquivo baixado para a pasta Plugins do seu projeto (crie esta pasta se ela não existir)

  4. Reconstrua seu projeto (esta extensão requer um projeto C++)

important
  • A extensão Vosk é compatível com o Unreal Engine 5.0 a 5.8.

  • Esta extensão é fornecida como código-fonte e requer um projeto C++ para uso.

  • Para mais informações sobre como criar plugins manualmente, consulte o tutorial de Criação de Plugins

Alternando para o provedor Vosk

Assim que a extensão estiver instalada, alternar um reconhecedor de fala para o Vosk se resume a três nós, logo após CreateSpeechRecognizer:

Set Speech Recognizer Provider Cast To Vosk

  1. Chame Set Speech Recognizer Provider, passando a classe do provedor Vosk.
  2. Cast To Runtime Vosk Speech Recognizer Provider no resultado.
  3. Chame Set Vosk Model Path (By Name) no resultado do cast, selecionando um modelo baixado no menu suspenso.

Todo o resto na sua configuração existente (Start Speech Recognition, Process Audio Data, os delegates, VAD e assim por diante) continua funcionando sem modificações. Para voltar ao whisper.cpp, remova esses três nós, ou simplesmente não chame Set Speech Recognizer Provider de forma alguma, já que o whisper.cpp é o padrão.

Baixando modelos Vosk

Os modelos Vosk são baixados e gerenciados em Configurações do Projeto -> Plugins -> Runtime Speech Recognizer Vosk. O painel lista o catálogo de modelos predefinidos agrupado por idioma, e cada entrada tem um botão Baixar, com uma barra de progresso exibida enquanto o download e a extração estão em andamento, e um botão Excluir quando o modelo estiver no disco.

Vosk model settings panel

Os modelos baixados são extraídos em Content/RuntimeSpeechRecognizerVosk/Models, e o plugin cuida de preparar essa pasta para o empacotamento automaticamente. Você também não está limitado a um único modelo empacotado: qualquer modelo que você baixar permanece disponível e pode ser selecionado em tempo de execução com Set Vosk Model Path (By Name). No Android, os arquivos do modelo são enviados dentro do aplicativo empacotado e copiados para o armazenamento persistente no primeiro uso, o que é tratado internamente quando o modelo é selecionado.

Idiomas suportados (clique para expandir)

O catálogo predefinido inclui modelos para: inglês, inglês indiano, chinês, russo, francês, alemão, espanhol, português/português do Brasil, grego, turco, vietnamita, italiano, holandês, catalão, árabe, árabe tunisiano, persa, filipino, ucraniano, cazaque, sueco, japonês, esperanto, hindi, tcheco, polonês, uzbeque, coreano, bretão, guzerate, tadjique, telugu, quirguiz e georgiano, juntamente com um modelo dedicado de identificação de falante.

Alguns idiomas têm múltiplas variantes no painel (por exemplo, um modelo menor adequado para hardware móvel junto com um maior e mais preciso), então vale a pena revisar as opções para o seu idioma de destino diretamente no painel de Configurações do Projeto em vez de presumir que apenas uma está disponível. Veja a lista completa de modelos Vosk para detalhes sobre precisão, tamanho e licenciamento de cada variante.

Parâmetros e comportamento

Vosk é um reconhecedor fundamentalmente diferente do whisper.cpp, então a maioria das entradas da Lista de Parâmetros de Reconhecimento não se aplica a ele. Chamar um setter não suportado no provedor Vosk não tem efeito, então a lógica de Blueprint escrita para whisper.cpp continua funcionando sem modificações após trocar de provedor. As funções que têm efeito no Vosk são:

  • Definir Idioma: seleciona qual modelo de idioma é usado. O Vosk não suporta detecção automática de idioma, então se você definir o idioma como Auto, ele será ignorado.
  • Definir Tamanho do Passo: quanto áudio acumula antes de ser enviado para reconhecimento, mesmo mecanismo do whisper.cpp. Como o Vosk é um reconhecedor de streaming, um valor pequeno (o provedor Vosk usa 200 ms por padrão) mantém os resultados parciais responsivos.
  • Definir Máximo de Tokens: reaproveitado para o Vosk, descrito abaixo.

Definir Max Tokens e saída em streaming

O parâmetro Set Max Tokens controla como o provedor Vosk entrega o texto reconhecido por meio de On Recognized Text Segment:

  • 0 (padrão): o texto se acumula internamente e é entregue como um único segmento finalizado assim que o reconhecimento é concluído, seja por uma parada acionada por VAD (como nos exemplos Reconhecimento de comandos por voz ou Reconhecimento de voz com inicialização automática) ou por qualquer lógica no seu projeto que chame Stop Speech Recognition ou force a passagem do último bloco de áudio. Isso corresponde ao comportamento baseado em segmentos que o whisper.cpp usa.
  • Maior que 0: o provedor alterna para o modo de streaming. Em vez de aguardar um segmento finalizado, ele transmite resultados parciais conforme o reconhecimento progride, cada um substituindo o anterior por uma versão mais longa da mesma frase, até o segmento terminar e o texto ser redefinido para o próximo. Um enunciado curto pode se parecer com isto ao longo de várias transmissões de On Recognized Text Segment:
"The"
"The cat"
"The cat is"
"The cat is sleeping"

O valor numérico exato não importa para o próprio Vosk, já que ele não tem limite de tokens integrado. Qualquer valor acima de 0 ativa a entrega em streaming.

Como os resultados parciais só chegam com a mesma frequência com que o áudio é enfileirado (controlado por Set Step Size), combine um Max Tokens baixo com um Step Size baixo para uma saída ao vivo responsiva.

Suporte a plataformas

A extensão Vosk funciona no Windows, no Android e em plataformas baseadas em Android, como Meta Quest. Ela é mais útil no Android e no Meta Quest, onde o whisper.cpp não possui um caminho de aceleração por GPU, e tem um desempenho especialmente bom no Meta Quest. Se você já está no Windows ou em outra plataforma desktop com aceleração Vulkan ou Metal disponível, o whisper.cpp provavelmente é uma opção padrão melhor. A Vosk é pensada como uma alternativa para as plataformas onde o whisper.cpp é mais fraco.

Avançado: trabalhando diretamente com modelos

O painel de Configurações do Projeto abrange o download e a exclusão de modelos para a maioria dos projetos. Se o seu projeto precisar trabalhar com modelos diretamente, em vez de depender do painel do Editor, por exemplo, verificar a disponibilidade ou gerenciar arquivos em tempo de execução, o plugin expõe as funções subjacentes da biblioteca:

  • Obter Nomes de Modelos Vosk Disponíveis: retorna os nomes dos modelos prontos para uso imediato, já extraídos para o disco ou apenas empacotados e aguardando o primeiro uso. É isso que alimenta a lista suspensa em Definir Caminho do Modelo Vosk (Por Nome).
  • Verificar se o Modelo Vosk Está Disponível: a mesma verificação acima, para um único modelo por ID.
  • Obter Diretório de Modelos Vosk: retorna o caminho absoluto para o diretório de onde os modelos são lidos em tempo de execução.
  • Obter Caminho da Pasta do Modelo Vosk: retorna o caminho absoluto para a pasta de um modelo específico no disco.
  • Excluir Arquivos do Modelo Vosk: exclui do disco os arquivos extraídos de um modelo.