Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób używania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI). ITextToSpeech Ten interfejs umożliwia aplikacji korzystanie z wbudowanych silników zamiany tekstu na mowę w celu odczytywania tekstu z urządzenia. Można go również użyć do wykonywania zapytań o dostępne języki.
Domyślna implementacja interfejsu ITextToSpeech
jest dostępna za pośrednictwem TextToSpeech.Default właściwości . Zarówno ITextToSpeech
interfejs, jak i TextToSpeech
klasa są zawarte w Microsoft.Maui.Media
przestrzeni nazw.
Rozpocznij
Aby uzyskać dostęp do funkcji zamiany tekstu na mowę, wymagana jest następująca konfiguracja specyficzna dla platformy.
Jeśli docelowa wersja systemu Android projektu jest ustawiona na Android 11 (R API 30) lub nowszą, musisz zaktualizować manifest systemu Android za pomocą filtru intencji dla aparatu zamiany tekstu na mowę (TTS). Aby uzyskać więcej informacji na temat intencji, zobacz dokumentację systemu Android dotyczącą intencji i filtrów intencji.
W pliku Platformy/Android/AndroidManifest.xml dodaj następujące queries/intent
węzły do węzłamanifest
:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
Używanie zamiany tekstu na mowę
Zamiana tekstu na mowę działa przez wywołanie metody SpeakAsync z tekstem, który należy wypowiedzieć, co pokazano w poniższym przykładzie kodu.
public async void Speak() =>
await TextToSpeech.Default.SpeakAsync("Hello World");
Ta metoda przyjmuje wartość opcjonalną CancellationToken
, aby zatrzymać wypowiedź po jej uruchomieniu.
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();
}
Zamiana tekstu na mowę spowoduje automatyczne kolejkowanie żądań mowy z tego samego wątku.
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());
}
Ustawienia
Aby sterować głośnością, wysokością i lokalizacją głosu, użyj klasy SpeechOptions. Przekaż wystąpienie tej klasy do metody SpeakAsync(String, SpeechOptions, CancellationToken). Metoda GetLocalesAsync() pobiera zbiór ustawień regionalnych dostarczonych przez system operacyjny.
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);
}
Następujące wartości są obsługiwane dla tych parametrów:
Parametr | Minimum | Maksimum |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Aby sterować głośnością, tonem, szybkością i ustawieniami regionalnymi głosu, użyj klasy SpeechOptions. Przekaż wystąpienie tej klasy do metody SpeakAsync(String, SpeechOptions, CancellationToken). Metoda GetLocalesAsync() pobiera kolekcję ustawień regionalnych udostępnionych przez system operacyjny.
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);
}
Następujące wartości są obsługiwane dla tych parametrów:
Parametr | Minimum | Maksimum |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Rate |
0.1 | 2.0 |
Ograniczenia
- Kolejkowanie wypowiedzi nie jest gwarantowane, jeśli jest wywoływane w wielu wątkach.
- Odtwarzanie dźwięku w tle nie jest oficjalnie obsługiwane.