SpeechToText
L’API SpeechToText
permet de convertir la parole en texte.
Les conditions préalables suivantes sont requises pour SpeechToText
:
Ajouter des autorisations à AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Syntaxe
C#
Le SpeechToText
peut être utilisé de la manière suivante dans 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);
}
}
ou utiliser des événements :
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;
}
Méthodes
méthode | Description |
---|---|
RequestPermissions | Demande l’autorisation. |
ListenAsync | Lance la reconnaissance vocale. |
StartListenAsync | Lance le service SpeechToText. (Les résultats de la reconnaissance vocale en temps réel sont exposés par le biais de RecognitionResultUpdated et RecognitionResultCompleted) |
StopListenAsync | Interrompt le service SpeechToText. (Les résultats de la reconnaissance vocale sont exposés par le biais de RecognitionResultCompleted) |
SpeechToTextResult
Le résultat retourné par la méthode ListenAsync
. Il peut être utilisé pour vérifier si la reconnaissance a réussi et peut également accéder à toutes les exceptions ayant pu survenir pendant la reconnaissance vocale.
Propriétés
Propriété | Type | Description |
---|---|---|
Texte | string |
Le texte reconnu. |
Exception | Exception |
Obtient une Exception si l’opération de reconnaissance vocale échoue. |
IsSuccessful | bool |
Obtient une valeur qui indique si l'opération réussit. |
CurrentState | SpeechToTextState |
Obtient un état d’écoute actuel. |
Événements
EventName | EventArgs | Description |
---|---|---|
RecognitionResultUpdated | SpeechToTextRecognitionResultUpdatedEventArgs |
Se déclenche lorsque SpeechToText a des mises à jour en temps réel. |
RecognitionResultCompleted | SpeechToTextRecognitionResultCompletedEventArgs |
Se déclenche lorsque SpeechToText prend fin. |
StateChanged | SpeechToTextStateChangedEventArgs |
Se déclenche lorsque CurrentState est modifié. |
Méthodes
méthode | Description |
---|---|
EnsureSuccess | Vérifie si l’opération de conversion de parole en texte réussit. |
Avertissement
EnsureSuccess
lève une Exception
si l'opération de reconnaissance échoue.
Inscription des dépendances
Si vous souhaitez injecter un service, vous devez d’abord l’inscrire.
Mettez à jour MauiProgram.cs
avec les modifications suivantes :
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();
}
}
Vous pouvez maintenant injecter le service comme ceci :
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);
}
}
Exemples
Vous pouvez trouver un exemple de SpeechToText
en action dans l'exemple d'application de la boîte à outils de la communauté .NET MAUI.
API
Vous pouvez trouver le code source deSpeechToText
sur le référentiel du kit de ressources de la communauté .NET MAUI sur GitHub.
.NET MAUI Community Toolkit