Bagikan melalui


Xamarin.Essentials:Text-to-speech

Kelas TextToSpeech memungkinkan aplikasi untuk menggunakan mesin teks ke ucapan bawaan untuk mengucapkan kembali teks dari perangkat dan juga untuk mengkueri bahasa yang tersedia yang dapat didukung mesin.

Memulai

Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.

Untuk mengakses fungsionalitas TextToSpeech , diperlukan penyiapan spesifik platform berikut.

Jika versi Target Android proyek Anda diatur ke Android 11 (R API 30) Anda harus memperbarui Android Manifest dengan kueri yang digunakan dengan persyaratan visibilitas paket baru.

Buka file AndroidManifest.xml di bawah folder Properti dan tambahkan yang berikut ini di dalam node manifes:

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

Menggunakan Teks ke Ucapan

Tambahkan referensi ke Xamarin.Essentials di kelas Anda:

using Xamarin.Essentials;

Teks ke Ucapan berfungsi dengan memanggil SpeakAsync metode dengan parameter teks dan opsional, dan kembali setelah ucapan selesai.

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

Metode ini mengambil opsional CancellationToken untuk menghentikan ungkapan setelah dimulai.

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

Teks ke Ucapan akan secara otomatis mengantre permintaan ucapan dari utas yang sama.

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

Pengaturan Ucapan

Untuk kontrol lebih lanjut tentang bagaimana audio diucapkan kembali dengan SpeechOptions yang memungkinkan pengaturan volume, pitch, dan lokal.

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

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

Berikut ini adalah nilai yang didukung untuk parameter ini:

Parameter Minimum Maksimum
Kemiringan 0 2.0
Volume 0 1.0

Lokal Ucapan

Setiap platform mendukung lokal yang berbeda, untuk berbicara kembali teks dalam bahasa dan aksen yang berbeda. Platform memiliki kode dan cara yang berbeda untuk menentukan lokal, itulah sebabnya Xamarin.Essentials menyediakan kelas lintas platform Locale dan cara untuk mengkuerinya dengan 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);
}

Batasan

  • Antrean ucapan tidak dijamin jika dipanggil di beberapa utas.
  • Pemutaran audio latar belakang tidak didukung secara resmi.

API

Temukan video Xamarin lainnya di Channel 9 dan YouTube.