SpeechToText
L'API SpeechToText
offre la possibilità di convertire il parlato in testo.
Le precondizioni seguenti necessarie per :SpeechToText
Aggiungere autorizzazioni a AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Sintassi
C#
Può SpeechToText
essere usato come indicato di seguito in C#:
async Task Listen(CancellationToken cancellationToken)
{
var isGranted = await speechToText.RequestPermissions(cancellationToken);
if (!isGranted)
{
await Toast.Make("Permission not granted").Show(CancellationToken.None);
return;
}
var recognitionResult = await speechToText.ListenAsync(
CultureInfo.GetCultureInfo(Language),
new Progress<string>(partialText =>
{
RecognitionText += partialText + " ";
}), cancellationToken);
if (recognitionResult.IsSuccessful)
{
RecognitionText = recognitionResult.Text;
}
else
{
await Toast.Make(recognitionResult.Exception?.Message ?? "Unable to recognize speech").Show(CancellationToken.None);
}
}
o utilizzando eventi:
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(CultureInfo.CurrentCulture, 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;
}
Metodi
metodo | Descrizione |
---|---|
RequestPermissions | Richiede l'autorizzazione. |
ListenAsync | Avvia il riconoscimento vocale. |
StartListenAsync | Avvia il servizio SpeechToText. I risultati del riconoscimento vocale in tempo reale verranno visualizzati tramite RecognitionResultUpdated e RecognitionResultCompleted. |
StopListenAsync | Arresta il servizio SpeechToText. I risultati del riconoscimento vocale verranno visualizzati tramite RecognitionResultCompleted. |
SpeechToTextResult
Risultato restituito dal ListenAsync
metodo . Può essere usato per verificare se il riconoscimento è riuscito e accedere anche a eventuali eccezioni che potrebbero essere state ocurrete durante il riconoscimento vocale.
Proprietà
Proprietà | Type | Descrizione |
---|---|---|
Testo | string |
Testo riconosciuto. |
Eccezione | Exception |
Ottiene l'oggetto Exception se l'operazione di riconoscimento vocale non è riuscita. |
IsSuccessful | bool |
Ottiene un valore che determina se l'operazione ha avuto esito positivo. |
Currentstate | SpeechToTextState |
Ottiene uno stato di ascolto corrente. |
Eventi
EventName | Eventargs | Descrizione |
---|---|---|
RecognitionResultUpdated | SpeechToTextRecognitionResultUpdatedEventArgs |
Si attiva quando SpeechToText ha aggiornamenti in tempo reale. |
RecognitionResultCompleted | SpeechToTextRecognitionResultCompletedEventArgs |
Attiva il completamento di SpeechToText. |
Statechanged | SpeechToTextStateChangedEventArgs |
Trigger quando CurrentState è stato modificato. |
Metodi
metodo | Descrizione |
---|---|
EnsureSucces | Verifica se l'operazione di riconoscimento vocale ha avuto esito positivo. |
Avviso
EnsureSuccess
genererà un'eccezione Exception
se l'operazione di riconoscimento non è riuscita.
Registrazione delle dipendenze
Nel caso in cui si voglia inserire il servizio, è prima necessario registrarlo.
Eseguire l'aggiornamento MauiProgram.cs
con le modifiche successive:
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit();
builder.Services.AddSingleton<ISpeechToText>(SpeechToText.Default);
return builder.Build();
}
}
Ora è possibile inserire il servizio come segue:
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;
}
var recognitionResult = await speechToText.ListenAsync(
CultureInfo.GetCultureInfo("uk-ua"),
new Progress<string>(), cancellationToken);
recognitionResult.EnsureSuccess();
await Toast.Make($"RecognizedText: {recognitionResult.Text}").Show(cancellationToken);
}
}
Esempi
È possibile trovare un esempio di SpeechToText
in azione nell'applicazione di esempio .NET MAUI Community Toolkit.
API
È possibile trovare il codice sorgente per SpeechToText
over nel repository GitHub di .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit