Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) ITextToSpeech arabirimini nasıl kullanabileceğiniz açıklanmaktadır. Bu arabirim, bir uygulamanın yerleşik metni sese çevirme motorlarını kullanarak cihazdan metni seslendirmesini sağlar. Kullanılabilir dilleri sorgulamak için de kullanabilirsiniz.
Arabirimin ITextToSpeech
varsayılan uygulaması, TextToSpeech.Default özelliği aracılığıyla kullanılabilir.
ITextToSpeech
arabirimi ile TextToSpeech
sınıfı, Microsoft.Maui.Media
ad alanında yer alır.
Kullanmaya başlayın
Metin okuma işlevine erişmek için aşağıdaki platforma özgü kurulum gereklidir.
Projenizin Hedef Android sürümü Android 11 (R API 30) veya üzeri olarak ayarlandıysa, Android Bildiriminizi metin okuma (TTS) altyapısı için bir amaç filtresiyle güncelleştirmeniz gerekir. Amaçlar hakkında daha fazla bilgi için Bkz. Android'in Amaçlar ve Amaç Filtreleri belgeleri.
Platformlar/Android/AndroidManifest.xml dosyasında, manifest
düğümüne aşağıdaki queries/intent
düğümlerini ekleyin:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
Metinden Sese teknolojisini kullanma
Metin okuma, konuşulacak metni belirterek SpeakAsync yöntemini çağırmak suretiyle çalışır; bu, aşağıdaki kod örneğinde gösterildiği gibi gösterilir.
public async void Speak() =>
await TextToSpeech.Default.SpeakAsync("Hello World");
Bu yöntem, konuşma başladığında durdurmak için isteğe bağlı bir CancellationToken
alır.
CancellationTokenSource cts;
public async Task SpeakNowDefaultSettingsAsync()
{
cts = new CancellationTokenSource();
await TextToSpeech.Default.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.WhenAll(
TextToSpeech.Default.SpeakAsync("Hello World 1"),
TextToSpeech.Default.SpeakAsync("Hello World 2"),
TextToSpeech.Default.SpeakAsync("Hello World 3"))
.ContinueWith((t) => { isBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext());
}
Ayarlar
Sesin ses düzeyini, perdesini ve yerel ayarını denetlemek için sınıfını SpeechOptions kullanın. Bu sınıfın bir örneğini SpeakAsync(String, SpeechOptions, CancellationToken) yöntemine geçirin. yöntemi, GetLocalesAsync() işletim sistemi tarafından sağlanan yerel ayarların bir koleksiyonunu alır.
public async void SpeakSettings()
{
IEnumerable<Locale> locales = await TextToSpeech.Default.GetLocalesAsync();
SpeechOptions options = new SpeechOptions()
{
Pitch = 1.5f, // 0.0 - 2.0
Volume = 0.75f, // 0.0 - 1.0
Locale = locales.FirstOrDefault()
};
await TextToSpeech.Default.SpeakAsync("How nice to meet you!", options);
}
Bu parametreler için desteklenen değerler şunlardır:
Parametre | Minimum | Maksimum |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Sesin ses düzeyini, perdesini, hızını ve yerel ayarını denetlemek için SpeechOptions sınıfını kullanın. Yöntemine bu sınıfın bir örneğini SpeakAsync(String, SpeechOptions, CancellationToken) geçirin. GetLocalesAsync() yöntemi, işletim sistemi tarafından sağlanan yerel ayarların bir koleksiyonunu getirir.
public async void SpeakSettings()
{
IEnumerable<Locale> locales = await TextToSpeech.Default.GetLocalesAsync();
SpeechOptions options = new SpeechOptions()
{
Pitch = 1.5f, // 0.0 - 2.0
Volume = 0.75f, // 0.0 - 1.0
Rate = 1.5f, // 0.1 - 2.0
Locale = locales.FirstOrDefault()
};
await TextToSpeech.Default.SpeakAsync("How nice to meet you!", options);
}
Bu parametreler için desteklenen değerler şunlardır:
Parametre | Minimum | Maksimum |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Rate |
0.1 | 2.0 |
Sınırlamalar
- Birden çok iş parçacığı arasında çağrıldığında sesli komutların kuyruğa alınması garanti edilmez.
- Arka planda ses oynatma resmi olarak desteklenmez.