Xamarin.Essentials: Převod textu na řeč
Třída TextToSpeech umožňuje aplikaci využívat integrované moduly pro převod textu na mluvené slovo pro mluvený text ze zařízení a také k dotazování na dostupné jazyky, které může stroj podporovat.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Použití převodu textu na řeč
Do třídy přidejte odkaz Xamarin.Essentials :
using Xamarin.Essentials;
Převod textu na řeč funguje voláním SpeakAsync metody s textovým a nepovinnými parametry a vrátí se po dokončení utterance.
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());
}
Tato metoda používá volitelnou CancellationToken pro zastavení utterance po jeho spuštění.
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();
}
Převod textu na řeč automaticky zařadí do fronty požadavky na řeč ze stejného vlákna.
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());
}
Nastavení řeči
Pro lepší kontrolu nad tím, jak se zvuk hlasuje, SpeechOptions a umožňuje nastavení svazku, rozteči a národního prostředí.
public async Task SpeakNow()
{
var settings = new SpeechOptions()
{
Volume = .75f,
Pitch = 1.0f
};
await TextToSpeech.SpeakAsync("Hello World", settings);
}
Pro tyto parametry jsou podporované tyto hodnoty:
| Parametr | Minimum | Maximum |
|---|---|---|
| Teče | 0 | 2.0 |
| Svazek | 0 | 1.0 |
Národní prostředí pro rozpoznávání řeči
Každá platforma podporuje různá národní prostředí, aby bylo možné číst text v různých jazycích a akcentech. Platformy mají různé kódy a způsoby určení národního prostředí, což znamená, Xamarin.Essentials že poskytuje třídu pro více platforem Locale a způsob, jak je dotazovat 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);
}
Omezení
- Fronta utterance není zaručená, pokud je volána napříč více vlákny.
- Přehrávání zvuku na pozadí není oficiálně podporováno.
rozhraní API
- Xamarin. Essentials /TextToSpeech "data-LINKTYPE =" external ">TextToSpeech zdrojového kódu
- Dokumentace k rozhraní TextToSpeech API