Share via


Xamarin.Essentials: Metin Okuma

TextToSpeech sınıfı, bir uygulamanın yerleşik metin okuma altyapılarını kullanarak cihazdan metinleri geri konuşmasını ve ayrıca altyapının destekleyebilecek kullanılabilir dilleri sorgulamasını sağlar.

Kullanmaya başlayın

Bu API'yi kullanmaya başlamak için kitaplığın projelerinizde düzgün yüklendiğinden ve ayarlandığından emin olmak için Xamarin.Essentials kullanmaya başlama kılavuzunu okuyun.

TextToSpeech işlevine erişmek için aşağıdaki platforma özgü kurulum gereklidir.

Projenizin Hedef Android sürümü Android 11 (R API 30) olarak ayarlandıysa, Android Bildiriminizi yeni paket görünürlüğü gereksinimleriyle kullanılan sorgularla güncelleştirmeniz gerekir.

Özellikler klasörünün altındaki AndroidManifest.xml dosyasını açın ve bildirim düğümünün içine aşağıdakileri ekleyin:

<queries>
  <intent>
    <action android:name="android.intent.action.TTS_SERVICE" />
  </intent>
</queries>

Metin Okuma özelliğini kullanma

Sınıfınızda için Xamarin.Essentials bir başvuru ekleyin:

using Xamarin.Essentials;

Metin Okuma, yöntemini metin ve isteğe bağlı parametrelerle çağırarak SpeakAsync çalışır ve konuşma tamamlandıktan 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, konuşma başladıktan sonra durdurulması için isteğe bağlı CancellationToken olarak kullanılı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 Okuma, aynı iş parçacığından gelen konuşma isteklerini otomatik olarak kuyruğa alır.

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 düzeyini, perdeyi ve yerel ayarı ayarlamaya olanak tanıyan sesin nasıl geri SpeechOptions konuşulduğunu daha fazla kontrol için.

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

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

Bu parametreler için desteklenen değerler şunlardır:

Parametre Minimum Maksimum
Döndür 0 2.0
Hacim 0 1.0

Konuşma Yerel Ayarları

Her platform, farklı dillerde ve vurgularda metinleri geri konuşmak için farklı yerel ayarları destekler. Platformlar farklı kodlara ve yerel ayarı belirtme yöntemlerine sahiptir; bu nedenle Xamarin.Essentials platformlar Locale arası bir sınıf ve ile GetLocalesAsyncbunları sorgulamak için bir yol 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ılırsa konuşma kuyruğu garanti edilmemektedir.
  • Arka plan sesi kayıttan yürütme resmi olarak desteklenmez.

API

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