Xamarin.Essentials: Převod textu na řeč

Třída TextToSpeech umožňuje aplikaci využívat integrované moduly pro převod textu na mluvené slovo pro mluvený text ze zařízení a také k dotazování na dostupné jazyky, které může stroj podporovat.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Použití převodu textu na řeč

Do třídy přidejte odkaz Xamarin.Essentials :

using Xamarin.Essentials;

Převod textu na řeč funguje voláním SpeakAsync metody s textovým a nepovinnými parametry a vrátí se po dokončení utterance.

public async Task SpeakNowDefaultSettings()
{
    await TextToSpeech.SpeakAsync("Hello World");

    // This method will block until utterance finishes.
}

public void SpeakNowDefaultSettings2()
{
    TextToSpeech.SpeakAsync("Hello World").ContinueWith((t) =>
    {
        // Logic that will run after utterance finishes.

    }, TaskScheduler.FromCurrentSynchronizationContext());
}

Tato metoda používá volitelnou CancellationToken pro zastavení utterance po jeho spuštění.

CancellationTokenSource cts;
public async Task SpeakNowDefaultSettings()
{
    cts = new CancellationTokenSource();
    await TextToSpeech.SpeakAsync("Hello World", cancelToken: cts.Token);

    // This method will block until utterance finishes.
}

// Cancel speech if a cancellation token exists & hasn't been already requested.
public void CancelSpeech()
{
    if (cts?.IsCancellationRequested ?? true)
        return;

    cts.Cancel();
}

Převod textu na řeč automaticky zařadí do fronty požadavky na řeč ze stejného vlákna.

bool isBusy = false;
public void SpeakMultiple()
{
    isBusy = true;
    Task.Run(async () =>
    {
        await TextToSpeech.SpeakAsync("Hello World 1");
        await TextToSpeech.SpeakAsync("Hello World 2");
        await TextToSpeech.SpeakAsync("Hello World 3");
        isBusy = false;
    });

    // or you can query multiple without a Task:
    Task.WhenAll(
        TextToSpeech.SpeakAsync("Hello World 1"),
        TextToSpeech.SpeakAsync("Hello World 2"),
        TextToSpeech.SpeakAsync("Hello World 3"))
        .ContinueWith((t) => { isBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext());
}

Nastavení řeči

Pro lepší kontrolu nad tím, jak se zvuk hlasuje, SpeechOptions a umožňuje nastavení svazku, rozteči a národního prostředí.

public async Task SpeakNow()
{
    var settings = new SpeechOptions()
        {
            Volume = .75f,
            Pitch = 1.0f
        };

    await TextToSpeech.SpeakAsync("Hello World", settings);
}

Pro tyto parametry jsou podporované tyto hodnoty:

Parametr Minimum Maximum
Teče 0 2.0
Svazek 0 1.0

Národní prostředí pro rozpoznávání řeči

Každá platforma podporuje různá národní prostředí, aby bylo možné číst text v různých jazycích a akcentech. Platformy mají různé kódy a způsoby určení národního prostředí, což znamená, Xamarin.Essentials že poskytuje třídu pro více platforem Locale a způsob, jak je dotazovat GetLocalesAsync .

public async Task SpeakNow()
{
    var locales = await TextToSpeech.GetLocalesAsync();

    // Grab the first locale
    var locale = locales.FirstOrDefault();

    var settings = new SpeechOptions()
        {
            Volume = .75f,
            Pitch = 1.0f,
            Locale = locale
        };

    await TextToSpeech.SpeakAsync("Hello World", settings);
}

Omezení

  • Fronta utterance není zaručená, pokud je volána napříč více vlákny.
  • Přehrávání zvuku na pozadí není oficiálně podporováno.

rozhraní API

Další videa Xamarin najdete na webu Channel 9 a YouTube.