Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Examinar ejemplo. Examinar el ejemplo
En este artículo se describe cómo puedes usar la interfaz ITextToSpeech de .NET Multi-platform App UI (.NET MAUI). Esta interfaz permite a una aplicación usar los motores integrados de texto a voz para devolver texto desde el dispositivo. También puede usarlo para consultar los idiomas disponibles.
La implementación predeterminada de la interfaz ITextToSpeech
está disponible a través de la propiedad TextToSpeech.Default. Tanto la ITextToSpeech
interfaz como la TextToSpeech
clase están contenidas en el espacio de nombres Microsoft.Maui.Media
.
Comenzar
Para acceder a la función de texto a voz, se requiere la siguiente configuración específica para la plataforma.
Si la versión de Android de destino del proyecto está establecida en Android 11 (R API 30) o una versión superior, debes actualizar tu Manifiesto de Android con un filtro de intención para el motor de texto a voz (TTS). Para obtener más información sobre los intents, consulta la documentación sobre Intents y filtros de intents de Android.
En el archivo Platforms/Android/AndroidManifest.xml, agrega los siguientes nodos al nodo :
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
Uso de texto a voz
El texto a voz funciona llamando al método SpeakAsync con el texto que se va a hablar, como se demuestra en el siguiente ejemplo de código:
public async void Speak() =>
await TextToSpeech.Default.SpeakAsync("Hello World");
Este método toma un CancellationToken
opcional para detener el enunciado una vez que se inicia.
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();
}
La función texto a voz pondrá automáticamente en la cola las solicitudes de voz del mismo subproceso.
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());
}
Configuración
Para controlar el volumen, el tono y la configuración regional de la voz, utiliza la clase SpeechOptions. Pasa una instancia de esa clase al método SpeakAsync(String, SpeechOptions, CancellationToken). El método GetLocalesAsync() recupera una colección de las localizaciones proporcionadas por el sistema operativo.
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);
}
Los siguientes son los valores compatibles para estos parámetros:
Parámetro | Mínima | Máximo |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Para controlar el volumen, el tono, la velocidad y la configuración regional de la voz, use la clase SpeechOptions. Pasa una instancia de esa clase al método SpeakAsync(String, SpeechOptions, CancellationToken). El GetLocalesAsync() método recupera una colección de los locales proporcionados por el sistema operativo.
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);
}
Los siguientes son los valores compatibles para estos parámetros:
Parámetro | Mínima | Máximo |
---|---|---|
Pitch |
0 | 2.0 |
Volume |
0 | 1.0 |
Rate |
0.1 | 2.0 |
Limitaciones
- No se garantiza la cola de declaraciones si se llama a través de varios subprocesos.
- La reproducción de audio en segundo plano no se admite de manera oficial.