SpeechToText
Die SpeechToText
-API bietet die Möglichkeit, Sprache in Text zu konvertieren.
Die folgenden Voraussetzungen sind für SpeechToText
erforderlich:
Berechtigungen hinzufügen zu AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Syntax
C#
SpeechToText
kann wie folgt in C# verwendet werden:
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);
}
}
oder Ereignisse verwenden:
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;
}
Methoden
Methode | Beschreibung |
---|---|
RequestPermissions | Fordert die Berechtigung an. |
ListenAsync | Startet die Spracherkennung. |
StartListenAsync | Startet den SpeechToText-Dienst. (Die Echtzeit-Spracherkennungsergebnisse werden über RecognitionResultUpdated und RecognitionResultCompleted angezeigt) |
StopListenAsync | Beendet den SpeechToText-Dienst. (Spracherkennungsergebnisse werden über RecognitionResultCompleted angezeigt) |
SpeechToTextResult
Das Ergebnis, das von der ListenAsync
-Methode zurückgegeben wurde. Damit können Sie überprüfen, ob die Erkennung erfolgreich war, und auch auf Ausnahmen zugreifen, die während der Spracherkennung aufgetreten sind.
Eigenschaften
Eigenschaft | Typ | BESCHREIBUNG |
---|---|---|
Text | string |
Der erkannte Text. |
Exception | Exception |
Ruft die Exception ab, wenn der Spracherkennungsvorgang fehlgeschlagen ist. |
IsSuccessful | bool |
Ruft einen Wert ab, der angibt, ob der Vorgang erfolgreich war. |
CurrentState | SpeechToTextState |
Ruft einen aktuellen Überwachungszustand ab. |
Ereignisse
EventName | EventArgs | Beschreibung |
---|---|---|
RecognitionResultUpdated | SpeechToTextRecognitionResultUpdatedEventArgs |
Wird ausgelöst, wenn für SpeechToText Aktualisierungen in Echtzeit erfolgen. |
RecognitionResultCompleted | SpeechToTextRecognitionResultCompletedEventArgs |
Wird ausgelöst, wenn SpeechToText abgeschlossen ist. |
StateChanged | SpeechToTextStateChangedEventArgs |
Wird ausgelöst, wenn sich CurrentState geändert hat. |
Methoden
Methode | Beschreibung |
---|---|
EnsureSuccess | Überprüft, ob der Spracherkennungsvorgang erfolgreich war. |
Warnung
EnsureSuccess
löst eine Exception
aus, wenn der Erkennungsvorgang nicht erfolgreich war.
Registrierung von Abhängigkeiten
Wenn Sie einen Dienst einfügen möchten, müssen Sie ihn zunächst registrieren.
Aktualisieren Sie MauiProgram.cs
mit den nächsten Änderungen:
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();
}
}
Jetzt können Sie den Dienst wie folgt einfügen:
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);
}
}
Beispiele
Ein konkretes Beispiel für SpeechToText
in Aktion finden Sie in der Beispielanwendung für das .NET MAUI Community Toolkit.
API
Sie finden den Quellcode für SpeechToText
über das GitHub-Repository für das .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit