Conversão de Texto em Fala
Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI). ITextToSpeech Essa interface permite que um aplicativo utilize os mecanismos integrados de conversão de texto em fala para falar de volta do texto do dispositivo. Você também pode usá-lo para consultar os idiomas disponíveis.
A implementação padrão da interface está disponível por meio da ITextToSpeech
TextToSpeech.Default propriedade. A interface e TextToSpeech
a ITextToSpeech
classe estão contidas no Microsoft.Maui.Media
namespace.
Introdução
Para acessar a funcionalidade de conversão de texto em fala, é necessária a seguinte configuração específica da plataforma.
Se a versão do Android de destino do seu projeto estiver definida como Android 11 (R API 30) ou superior, você deverá atualizar o Manifesto do Android com um filtro de intenção para o mecanismo de conversão de texto em fala (TTS). Para obter mais informações sobre intenções, consulte a documentação do Android sobre Filtros de Intenção e Intenção.
No arquivo Platforms/Android/AndroidManifest.xml adicione os seguintes queries/intent
nós ao manifest
nó:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
Uso da Conversão de Texto em Fala
A conversão de texto em fala funciona chamando o SpeakAsync método com o texto para falar, como demonstra o exemplo de código a seguir:
public async void Speak() =>
await TextToSpeech.Default.SpeakAsync("Hello World");
Esse método usa um recurso opcional CancellationToken
para interromper a expressão após ela ser iniciada.
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();
}
A Conversão de Texto em Fala automaticamente enfileirará as solicitações de voz do mesmo thread.
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());
}
Configurações
Para controlar o volume, o tom e a localidade da voz, use a SpeechOptions classe. Passe uma instância dessa classe para o SpeakAsync(String, SpeechOptions, CancellationToken) método. O GetLocalesAsync() método recupera uma coleção das localidades fornecidas pelo sistema operacional.
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);
}
Veja a seguir os valores com suporte para esses parâmetros:
Parâmetro | Mínimo | Máximo |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Limitações
- A fila de emissão não é garantida se chamada em vários threads.
- A reprodução de áudio em segundo plano não é oficialmente suportada.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de