Udostępnij za pośrednictwem


SpeechToText

Interfejs SpeechToText API umożliwia konwertowanie mowy na tekst.

Zrzut ekranu przedstawiający tekst mowy zaimplementowany w systemie macOS

Następujące warunki wstępne wymagane dla elementu SpeechToText:

Dodaj uprawnienia do polecenia AndroidManifest.xml:

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

Składnia

C#

Można SpeechToText go użyć w następujący sposób w języku 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);
    }
}

lub używając zdarzeń:

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;
}

Metody

Metoda opis
RequestPermissions Pyta o uprawnienie.
ListenAsync Uruchamia rozpoznawanie mowy.
StartListenAsync Uruchamia usługę SpeechToText. (Wyniki rozpoznawania mowy w czasie rzeczywistym będą udostępniane za pośrednictwem funkcji RecognitionResultUpdated i RecognitionResultCompleted)
StopListenAsync Zatrzymuje usługę SpeechToText. (Wyniki rozpoznawania mowy będą udostępniane za pośrednictwem funkcji RecognitionResultCompleted)

SpeechToTextResult

Wynik zwrócony z ListenAsync metody . Może to służyć do sprawdzania, czy rozpoznawanie zakończyło się pomyślnie, a także uzyskać dostęp do wszelkich wyjątków, które mogły wystąpić podczas rozpoznawania mowy.

Właściwości

Właściwości Type Opis
Tekst string Rozpoznany tekst.
Wyjątek Exception Pobiera wartość Exception , jeśli operacja rozpoznawania mowy nie powiodła się.
IsSuccessful bool Pobiera wartość określającą, czy operacja zakończyła się pomyślnie.
CurrentState SpeechToTextState Pobiera bieżący stan nasłuchiwania.

Zdarzenia

EventName Eventargs opis
RecognitionResultUpdated SpeechToTextRecognitionResultUpdatedEventArgs Wyzwala, gdy funkcja SpeechToText ma aktualizacje w czasie rzeczywistym.
RecognitionResultCompleted SpeechToTextRecognitionResultCompletedEventArgs Wyzwala wyzwalane po zakończeniu funkcji SpeechToText.
Statechanged SpeechToTextStateChangedEventArgs Wyzwalacze po CurrentState zmianie.

Metody

Metoda opis
EnsureSuccess Sprawdza, czy operacja zamiany mowy na tekst zakończyła się pomyślnie.

Ostrzeżenie

EnsureSuccess wyrzuci błąd Exception , jeśli operacja rozpoznawania nie powiodła się.

Rejestracja zależności

Jeśli chcesz wstrzyknąć usługę, najpierw musisz ją zarejestrować. Zaktualizuj MauiProgram.cs przy użyciu następnych zmian:

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();
    }
}

Teraz możesz wstrzyknąć usługę w następujący sposób:

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);
	}
}

Przykłady

Przykład działania SpeechToText można znaleźć w przykładzie przykładowym zestawu narzędzi .NET MAUI Community Toolkit.

interfejs API

Kod źródłowy można SpeechToText znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.