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 GetLocalesAsync
bunları 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
İlgili Video
Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.