Partilhar via


SpeechToText

A API SpeechToText fornece a capacidade de converter fala em texto usando o reconhecimento online. Para reconhecimento offline, você pode usar o OfflineSpeechToText.

Captura de tela do SpeechText implementado no macOS

As seguintes pré-condições necessárias para o SpeechToText:

Adicionar permissões a AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Para OfflineSpeechToText, o Android 33.0 ou superior é necessário.

Sintaxe

C#

O SpeechToText pode ser usado da seguinte maneira em C#:

async Task StartListening(CancellationToken cancellationToken)
{
    var isGranted = await speechToText.RequestPermissions(cancellationToken);
    if (!isGranted)
    {
        await Toast.Make("Permission not granted").Show(CancellationToken.None);
        return;
    }

    speechToText.RecognitionResultUpdated += OnRecognitionTextUpdated;
    speechToText.RecognitionResultCompleted += OnRecognitionTextCompleted;
    await speechToText.StartListenAsync(new SpeechToTextOptions	{ Culture = CultureInfo.CurrentCulture, ShouldReportPartialResults = true }, CancellationToken.None);
}

async Task StopListening(CancellationToken cancellationToken)
{
    await speechToText.StopListenAsync(CancellationToken.None);
    speechToText.RecognitionResultUpdated -= OnRecognitionTextUpdated;
    speechToText.RecognitionResultCompleted -= OnRecognitionTextCompleted;
}

void OnRecognitionTextUpdated(object? sender, SpeechToTextRecognitionResultUpdatedEventArgs args)
{
    RecognitionText += args.RecognitionResult;
}

void OnRecognitionTextCompleted(object? sender, SpeechToTextRecognitionResultCompletedEventArgs args)
{
    RecognitionText = args.RecognitionResult;
}

Métodos

Método Descrição
SolicitarPermissões Solicita permissão.
StartListenAsync Inicia o serviço SpeechToText. (Os resultados do reconhecimento de fala em tempo real serão exibidos por meio de RecognitionResultUpdated e RecognitionResultCompleted)
StopListenAsync Interrompe o serviço SpeechToText. (Os resultados do reconhecimento de fala serão exibidos por meio de RecognitionResultCompleted)

Propriedades

Propriedade Tipo Descrição
CurrentState SpeechToTextState Obtém um estado de escuta atual.

Eventos

EventName EventArgs Descrição
RecognitionResultUpdated SpeechToTextRecognitionResultUpdatedEventArgs Aciona quando SpeechToText tem atualizações em tempo real.
RecognitionResultCompleted SpeechToTextRecognitionResultCompletedEventArgs Dispara quando o SpeechToText é concluído.
StateChanged SpeechToTextStateChangedEventArgs Dispara quando o CurrentState é alterado.

SpeechToTextOptions

A classe SpeechToTextOptions fornece a capacidade de configurar o serviço de reconhecimento de fala.

Propriedades

Propriedade Tipo Descrição
Cultura CultureInfo A linguagem falada a ser usada para reconhecimento de fala.
DeveriaRelatarResultadosParciais bool Obtém ou define se inclui resultados parciais. True por padrão.

SpeechToTextResult

O resultado retornado do evento RecognitionResultCompleted. Isso pode ser usado para verificar se o reconhecimento foi bem-sucedido e também acessar quaisquer exceções que possam ter ocorrido durante o reconhecimento de fala.

Propriedades

Propriedade Tipo Descrição
Texto string O texto reconhecido.
Exceção Exception Obtém o Exception se a operação de reconhecimento de fala falhou.
IsSuccessful bool Obtém um valor que determina se a operação foi bem-sucedida.

Métodos

Método Descrição
GarantirSucesso Verifica se a operação de conversão de fala em texto foi bem-sucedida.

Aviso

EnsureSuccess lançará um Exception se a operação de reconhecimento não tiver sido bem-sucedida.

Registro de dependência

Caso deseje injetar o serviço, primeiro você precisará registrá-lo. Atualize MauiProgram.cs com as próximas alterações:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
			.UseMauiCommunityToolkit();

        builder.Services.AddSingleton<ISpeechToText>(SpeechToText.Default);
        // For offline recognition
        // builder.Services.AddSingleton<IOfflineSpeechToText>(OfflineSpeechToText.Default);
        return builder.Build();
    }
}

Caso precise registrar SpeechToText e OfflineSpeechToText, você pode usar KeyedService.

Agora você pode injetar o serviço assim:

public partial class MainPage : ContentPage
{
    private readonly ISpeechToText speechToText;

	public MainPage(ISpeechToText speechToText)
	{
		InitializeComponent();
        this.speechToText = speechToText;
	}
	
	public async void Listen(object sender, EventArgs args)
	{
		var isGranted = await speechToText.RequestPermissions(cancellationToken);
        if (!isGranted)
        {
            await Toast.Make("Permission not granted").Show(CancellationToken.None);
            return;
        }

        await speechToText.StartListenAsync(new SpeechToTextOptions { Culture = CultureInfo.CurrentCulture, ShouldReportPartialResults = true }, CancellationToken.None);
	}
}

Exemplos

Você pode encontrar um exemplo de SpeechToText em ação no Aplicativo de exemplo do .NET MAUI Community Toolkit.

Para reconhecimento offline, você pode usar este exemplo: Aplicativo de exemplo do Kit de Ferramentas da Comunidade MAUI do .NET.

API

Você pode encontrar o código-fonte para SpeechToText no repositório do .NET MAUI Community Toolkit no GitHub .