Sdílet prostřednictvím


SpeechToText

Rozhraní SpeechToText API poskytuje možnost převést řeč na text.

Snímek obrazovky s textem speech implementovaným v macOS

Následující předpoklady vyžadované pro SpeechToText:

Přidat oprávnění k AndroidManifest.xml:

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

Syntaxe

C#

V SpeechToText jazyce C# je možné ho použít následujícím způsobem:

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

nebo pomocí událostí:

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 Popis
RequestPermissions Žádá o oprávnění.
ListenAsync Spustí rozpoznávání řeči.
StartListenAsync Spustí službu SpeechToText. (Výsledky rozpoznávání řeči v reálném čase se zobrazí prostřednictvím RecognitionResultUpdated a RecognitionResultCompleted)
StopListenAsync Zastaví službu SpeechToText. (Výsledky rozpoznávání řeči se zobrazí přes RecognitionResultCompleted)

SpeechToTextResult

Výsledek vrácený z ListenAsync metody. To se dá použít k ověření, jestli bylo rozpoznávání úspěšné, a také přistupovat k jakýmkoli výjimkám, ke kterým mohlo dojít během rozpoznávání řeči.

Vlastnosti

Vlastnost Type Popis
Text string Rozpoznaný text.
Výjimka Exception Exception Získá, pokud operace rozpoznávání řeči selhala.
IsSuccessful bool Získá hodnotu určující, zda operace byla úspěšná.
Aktuální stav SpeechToTextState Získá aktuální stav naslouchání.

Události

EventName Eventargs Popis
RecognitionResultUpdated SpeechToTextRecognitionResultUpdatedEventArgs Aktivuje se, když má SpeechToText aktualizace v reálném čase.
RecognitionResultCompleted SpeechToTextRecognitionResultCompletedEventArgs Aktivuje se po dokončení funkce SpeechToText.
StateChanged SpeechToTextStateChangedEventArgs Aktivační události, kdy došlo ke CurrentState změně.

Metody

metoda Popis
Zajistit, aby se zajistilo, že se vám to bude chytět. Ověřuje, jestli byla operace převodu řeči na text úspěšná.

Upozorňující

EnsureSuccessException vyvolá chybu, pokud operace rozpoznávání nebyla úspěšná.

Registrace závislostí

V případě, že chcete vložit službu, musíte ji nejprve zaregistrovat. Aktualizujte MauiProgram.cs následujícími změnami:

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

Teď můžete službu vložit takto:

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

Příklady

Příklad SpeechToText akce najdete v ukázkové aplikaci .NET MAUI Community Toolkit.

rozhraní API

Zdrojový kód SpeechToText najdete v úložišti .NET MAUI Community Toolkit na GitHubu.