Reconhecimento de Fala

O Reconhecimento de Fala é uma tecnologia de voz para texto alimentada por IA no dispositivo que transcreve áudio falado em texto em tempo real ou a partir de ficheiros pré-gravados. Ao funcionar inteiramente no dispositivo, proporciona transcrição de baixa latência sem necessidade de ligação à rede ou envio de dados de áudio para a cloud. Como em todos os modelos de IA, a saída de transcrição pode nem sempre ser precisa e deve ser validada para casos críticos de uso.

Adicionar capacidades de reconhecimento de voz à sua aplicação permite cenários como os seguintes:

  • Legendagem em tempo real e legendas para reuniões ou reprodução de multimédia
  • Tomada de notas e ditado por voz
  • Funcionalidades de acessibilidade para utilizadores que dependem da entrada de voz
  • Transcrição de ficheiros de áudio gravados, como entrevistas ou palestras
  • Comandos de voz e interação mão-livre em aplicações de ambiente de trabalho

A API suporta dois modos de operação:

  • Reconhecimento em lote: Transcrever um ficheiro de áudio completo numa só passagem, ideal para conteúdos pré-gravados.
  • Reconhecimento em streaming: Transcrição contínua em tempo real a partir de um microfone ou fluxo de áudio, fornecendo resultados à medida que as frases são reconhecidas.

Pode usar o SpeechRerecognition Model para transcrever fala a partir de ficheiros de áudio ou fluxos de áudio em tempo real no dispositivo.

Para detalhes da API, veja referência API para funcionalidades de fala de IA.

Para obter detalhes sobre moderação de conteúdo, consulte Segurança de conteúdo com APIs de IA generativas.

Importante

Requisitos de manifesto do pacote: para usar APIs de criação de imagens do Windows AI, seu aplicativo deve ser empacotado como um pacote MSIX com o recurso declarado systemAIModels no .Package.appxmanifest Além disso, assegure-se de que o atributo do MaxVersionTested manifesto esteja definido como uma versão recente do Windows (por exemplo, 10.0.26226.0 ou posterior) para suportar adequadamente os recursos de IA do Windows. O uso de valores mais antigos pode causar erros "Não declarado pelo aplicativo" ao carregar o modelo.

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>

Pré-requisitos

  • Versão Windows: Windows 11, versão 24H2 (build 26100) ou posterior
  • Versão WinAppSDK: Versão 1.7.1 ou posterior
  • Hardware: PC Copilot+ com uma NPU, ou qualquer PC Windows que cumpra as especificações recomendadas da CPU

Hardware suportado

O Reconhecimento de Fala corre no seguinte hardware:

Hardware Situação Detalhes
NPU (Copilot+ PC) ✅ Disponível Melhor desempenho. O modelo está pré-instalado. Consulte Copilot+ PCs guia para desenvolvedores.
CPU ✅ Disponível (opcional, removível) O modelo não está pré-instalado — veja disponibilidade e download do modelo. Melhor para dispositivos que cumpram as especificações recomendadas do CPU.
GPU ❌ Não suportado O reconhecimento de voz não está disponível na GPU.

Note

A seleção de hardware é automática. Num Copilot+ PC com NPU, o Reconhecimento de Fala corre sempre na NPU. Em dispositivos que não sejam Copilot+, corre automaticamente no CPU — não existe a opção do programador ou do utilizador final para selecionar a CPU num dispositivo Copilot+. Isto corresponde ao padrão usado por outras APIs Windows IA; veja Hardware suportado para a visão cross-API.

O reconhecimento de voz corre em qualquer CPU onde as restantes APIs de IA do Windows corram, mas a qualidade e a latência da transcrição em tempo real escalam com o CPU anfitrião.

Para uma boa experiência de CPU, opte por dispositivos que cumpram todas as seguintes especificações recomendadas:

  • 4 ou mais núcleos físicos
  • Relógio base de 3 GHz ou superior
  • 32 MB ou mais de cache L3

Estas são recomendações, não mínimos rígidos — a API continuará a tentar transcrever em dispositivos de especificações inferiores. As aplicações que se destinam a uma vasta gama de CPUs podem usar a mesma verificação do CPU em tempo de execução apresentada para VSR — consulte as especificações de CPU recomendadas para VSR para ver o exemplo em C# que utiliza System.Management (WMI). Utilize o resultado para condicionar as opções de UX, como definir por predefinição o reconhecimento em lote em hardware no limite ou ocultar o ponto de acesso à transmissão em direto.

Disponibilidade de modelos e download

No Copilot+ PCs o modelo de reconhecimento de voz é pré-instalado na NPU. Em dispositivos apenas com CPU, o modelo não está pré-instalado — é descarregado sob demanda na primeira vez que a sua aplicação liga para o EnsureReadyAsync. O download corre em segundo plano através do Windows Update. Os utilizadores finais também podem remover o modelo mais tarde para recuperar espaço em disco.

Este comportamento corresponde ao ciclo de vida do modelo usado por outros modelos opcionais de IA do Windows — a sua aplicação deve tratar explicitamente do caso "ainda não instalado" em vez de assumir que o modelo está presente.

Como o modelo de reconhecimento de voz é descarregado a pedido em dispositivos apenas com CPU, mostre um diálogo de confirmação antes de ligar EnsureReadyAsync para que o utilizador possa consentir com o download em segundo plano. Um padrão típico:

  1. Chame GetReadyState e aja em conformidade com o AIFeatureReadyState devolvido:

    • Ready — o modelo é instalado; Prossiga.
    • NotReady ou EnsureNeeded — mostrar o seu diálogo de consentimento (ver abaixo) e depois ligar EnsureReadyAsync apenas se o utilizador concordar.
    • NotSupportedOnCurrentSystem — o dispositivo não cumpre os requisitos em hardware suportado. Ofereça uma experiência alternativa de recurso (por exemplo, Speech Recognition via Windows SDK ou um serviço baseado na nuvem) e, quando apropriado, apresente os requisitos de hardware para que o utilizador possa tomar uma decisão informada sobre a atualização.
  2. No seu diálogo de consentimento, explique:

    • Será descarregado um modelo opcional de reconhecimento de voz.
    • O download acontece em segundo plano através do Windows Update.
    • O utilizador pode monitorizar o progresso do download em Settings>Windows Update.
    • O utilizador pode posteriormente remover o modelo em Configurações>de Componentes de IA> se já não o quiser.

    Sugestão

    Nas cadeias voltadas para utilizador (texto de diálogo, mensagens de estado), refere-se ao modelo como "modelo de reconhecimento de voz" ou "modelo de IA opcional" em vez do nome do modelo subjacente. A maioria dos utilizadores finais não está familiarizada com nomes de marcas, e termos genéricos comunicam o propósito de forma mais clara.

  3. Enquanto EnsureReadyAsync estiver em progresso, mostre um indicador de progresso na sua aplicação. Veja a Introdução às APIs de IA do Windows para o padrão de interface de utilizador de carregamento.

Após a instalação do modelo

O modelo permanece no dispositivo até que o utilizador o remova. Os utilizadores gerem os modelos instalados — incluindo o modelo de reconhecimento de voz — na>>System AI Components. Se o utilizador remover o modelo mais tarde, a chamada seguinte da sua aplicação para GetReadyState devolve NotReady ou EnsureNeeded, e o fluxo de consentimento + transferência deve ser repetido.

Reconhecimento em lote a partir de um ficheiro de áudio

Use o reconhecimento em lote para transcrever um ficheiro de áudio completo. Esta abordagem é ideal para conteúdos áudio pré-gravados.

  1. Chame GetReadyState e aguarde que EnsureReadyAsync seja concluído com êxito para confirmar que o SpeechRecognitionModel está pronto.
  2. Depois de o modelo estar pronto, chame o TryCreateAsync para instanciar um objeto SpeechRecognitionModel.
  3. Crie uma instância de BatchRecognition com o Modelo de Reconhecimento de Voz.
  4. Chame RecognizeFromFile indicando o caminho do ficheiro de áudio a transcrever.
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;

if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
    await SpeechRecognitionModel.EnsureReadyAsync();
}

var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
    throw new InvalidOperationException(
        $"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}

var speechModel = speechModelResult.SpeechModel;

var batchRecognition = new BatchRecognition(speechModel);
string transcription = await batchRecognition.RecognizeFromFile("path/to/audio.wav");

Console.WriteLine($"Transcription: {transcription}");

Reconhecimento em streaming a partir de uma fonte de áudio em tempo real

Use reconhecimento de streaming para transcrever áudio em tempo real a partir de um microfone ou outro dispositivo de entrada de áudio. Esta abordagem fornece resultados finais à medida que as frases completas são reconhecidas.

  1. Chame GetReadyState e aguarde que EnsureReadyAsync seja concluído com êxito para confirmar que o SpeechRecognitionModel está pronto.
  2. Depois de o modelo estar pronto, chame o TryCreateAsync para instanciar um objeto SpeechRecognitionModel.
  3. Crie uma AudioConfiguration usando FromAudioDevice com o nome do dispositivo de microfone.
  4. Crie uma instância de StreamingRecognition com o AudioConfiguration e o SpeechRecognitionModel.
  5. Subscreva o evento Recognized para receber os resultados da transcrição.
  6. Chame StartContinuousRecognitionAsync para iniciar a transcrição.
  7. Chame StopContinuousRecognition quando terminar.
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;

if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
    await SpeechRecognitionModel.EnsureReadyAsync();
}

var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
    throw new InvalidOperationException(
        $"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}

var speechModel = speechModelResult.SpeechModel;

var audioConfig = AudioConfiguration.FromAudioDevice(microphoneDeviceName);
var streamingRecognition = new StreamingRecognition(audioConfig, speechModel);

// Subscribe to receive transcription results as phrases are recognized
streamingRecognition.Recognized += (sender, args) =>
{
    Console.WriteLine($"Recognized: {args.Text}");
};

// Start real-time recognition
await streamingRecognition.StartContinuousRecognitionAsync();

// ... recognition is active, audio is being transcribed in real-time ...

// Stop recognition when done
streamingRecognition.StopContinuousRecognition();

Consulte também


AVISOS E INFORMAÇÕES SOBRE MODELOS DE TERCEIROS

Esta API utiliza componentes do modelo OpenAI Whisper , que é fornecido sob a seguinte licença:

Licença MIT

Direitos de autor (c) 2022 OpenAI

A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e ficheiros de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de utilização, cópia, modificação, impressão, publicação, distribuição, sublicense e/ou venda de cópias do Software e para permitir que as pessoas a quem o Software está fornecido o façam, sujeito às seguintes condições:

A notificação de copyright apresentada acima e esta notificação de permissão deverá ser incluída em todas as cópias ou porções substanciais do Software.

O SOFTWARE É FORNECIDO "TAL COMO ESTÁ", SEM GARANTIAS DE QUALQUER ESPÉCIE, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO, ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM PARTICULAR E DE NÃO INFRAÇÃO. EM CASO ALGUM SERÃO OS AUTORES OU OS TITULARES DOS DIREITOS DE AUTOR RESPONSÁVEIS POR QUAISQUER RECLAMAÇÕES, DANOS OU OUTRAS RESPONSABILIDADES, SEJAM NO ÂMBITO DE UMA AÇÃO CONTRATUAL, DE ATO ILÍCITO OU DE OUTRA NATUREZA, DECORRENTES DE, RESULTANTES DE OU RELACIONADAS COM O SOFTWARE OU COM A UTILIZAÇÃO OU OUTRAS OPERAÇÕES COM O SOFTWARE.