Xamarin.Essentials: Metin-Konuşma

TextToSpeech sınıfı, bir uygulamanın cihazdan metin geri konuşmak ve ayrıca altyapının destekley olduğu kullanılabilir dilleri sorgulamak için yerleşik metin-konuşma altyapılarını kullanmasına olanak sağlar.

başlarken

Bu API'yi kullanmaya başlamak için kitaplığın projelerinize düzgün bir şekilde yük olduğundan ve ayar olduğundan emin olmak için başlangıç kılavuzunu okuyun.

Metin Konuşmayı Kullanma

sınıfınıza Xamarin.Essentials bir başvuru ekleyin:

using Xamarin.Essentials;

MetinDen Konuşma yöntemi metin ve isteğe bağlı parametrelerle çağrılarak çalışır ve konuşma SpeakAsync tamam olduktan sonra döndürür.

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

Bu yöntem, başladıktan sonra CancellationToken ifadeyi durdurmak için isteğe bağlı olarak alır.

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

Metin-Konuşma, aynı iş parçacığından gelen konuşma isteklerini otomatik olarak kuyruğa alar.

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

Konuşma Ayarlar

Ses, konuşma ve yerel ayarın ayarına olanak sağlayan, sesi nasıl geri konuşulanlar üzerinde daha SpeechOptions fazla denetime sahip olmak için.

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

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

Aşağıdakiler, bu parametreler için desteklenen değerlerdir:

Parametre Minimum Maksimum
Pitch 0 2.0
Birim 0 1.0

Konuşma Yerel Seçimleri

Her platform, metni farklı dillerde ve vurgularda geri konuşmak için farklı yerel seçimleri destekler. Platformların yerel olarak belirtmenin farklı kodları ve yolları vardır. Bu nedenle, platformlar arası bir sınıf ve bunları ile sorgulamak için Xamarin.EssentialsLocale bir yol GetLocalesAsync sağlar.

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

Sınırlamalar

  • Birden çok iş parçacığında çağrılsa konuşma kuyruğu garanti edilemez.
  • Arka planda ses kayıttan yürütme resmi olarak desteklenmiyor.

API

Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.