Převod textu na řeč
Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). ITextToSpeech Toto rozhraní umožňuje aplikaci využívat integrované moduly pro převod textu na řeč k zpětnému mluvení textu ze zařízení. Můžete ho také použít k dotazování na dostupné jazyky.
Výchozí implementace ITextToSpeech
rozhraní je k dispozici prostřednictvím TextToSpeech.Default vlastnosti. Rozhraní ITextToSpeech
i TextToSpeech
třída jsou obsaženy v Microsoft.Maui.Media
oboru názvů.
Začínáme
Pro přístup k funkcím převodu textu na řeč se vyžaduje následující nastavení specifické pro platformu.
Pokud je verze cílového Androidu vašeho projektu nastavená na Android 11 (R API 30) nebo vyšší, musíte aktualizovat manifest Androidu pomocí filtru záměru pro modul převodu textu na řeč (TTS). Další informace o záměrech najdete v dokumentaci Androidu k záměrům a filtrům záměrů.
V souboru Platforms/Android/AndroidManifest.xml přidejte do manifest
uzlu následující queries/intent
uzly:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
Použití převodu textu na řeč
Převod textu na řeč funguje voláním SpeakAsync metody s textem, který má mluvit, jak ukazuje následující příklad kódu:
public async void Speak() =>
await TextToSpeech.Default.SpeakAsync("Hello World");
Tato metoda přebírá nepovinnou funkci CancellationToken
, aby se po spuštění promluvy zastavila.
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();
}
Převod textu na řeč automaticky zařadí požadavky na řeč ze stejného vlákna.
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());
}
Nastavení
Pokud chcete ovládat hlasitost, výšku a národní prostředí hlasu, použijte SpeechOptions třídu. Předejte instanci této třídy metodě SpeakAsync(String, SpeechOptions, CancellationToken) . Metoda GetLocalesAsync() načte kolekci národních prostředí poskytovaných operačním systémem.
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);
}
Následující hodnoty jsou podporované pro tyto parametry:
Parametr | Minimum | Maximum |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Omezení
- Zařazování promluv do fronty není zaručeno, pokud se volá ve více vláknech.
- Přehrávání zvuku na pozadí není oficiálně podporované.