SpeechToText
A API SpeechToText
fornece a capacidade de converter fala em texto usando o reconhecimento online. Para reconhecimento offline, você pode usar o OfflineSpeechToText
.
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
eOfflineSpeechToText
, você pode usarKeyedService
.
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 .
.NET MAUI Community Toolkit