Apprentissage de la synthèse vocale dans .NET MAUI

Rendez vos applications plus accessibles grâce aux fonctionnalités de synthèse vocale de .NET MAUI, notamment la personnalisation de la hauteur, du volume et des paramètres régionaux.
L’intégration de fonctionnalités de synthèse vocale dans les applications vous permet de créer des applications plus conviviales et plus inclusives. Par exemple, considérons une application conçue pour une personne malvoyante. La lecture d’un texte peut constituer un défi pour eux. Cependant, si vous proposez une fonctionnalité qui prononce du texte à haute voix, vous avez créé une application qui répond à leurs besoins et leur facilite la vie. Dans cet article, je vais montrer comment implémenter la synthèse vocale (TTS) dans .NET FIXE.
🔧 Tout d’abord… De quoi ai-je besoin ?
Dans un premier temps, nous devons inclure certains paramètres de plateforme. Pour ce faire, suivez simplement les instructions fournies ci-dessous.
Sur Android
Si votre application cible Android 11 (R API 30) ou version ultérieure, accédez à Plateforme > Android > AndroidManifest.xml et ajoutez le nœud suivant :
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
La configuration précédente ajoute un filtre d’intention pour le moteur TTS. Pour plus d’informations, consultez l’article « Intentions et filtres d’intention » dans la documentation Android.
🚧 Notez que pour iOS/Mac Catalyst et Windows, vous n’avez besoin d’aucune configuration supplémentaire.
Comprendre l’interface ITextToSpeech
En utilisant le Interface ITexteVersSpeech, vous pouvez intégrer des fonctionnalités de synthèse vocale dans votre application, permettant ainsi aux moteurs de synthèse vocale intégrés à l’appareil de lire à haute voix le texte fourni. L’implémentation par défaut de cette interface se trouve dans le Espace de noms Microsoft.Maui.Mediaet vous pouvez y accéder via le TextToSpeech.Default
propriété.
Implémentation de TTS
Utilisons le SpeakAsync
méthode. Tandis que le Text
est obligatoire, il existe des paramètres vocaux facultatifs que vous pouvez utiliser pour personnaliser davantage l’expérience : Pitch
, Volume
et Locale
. Je vais les expliquer en détail avec les extraits de code correspondants pour vous guider tout au long du processus.
- Texte: Ce paramètre obligatoire unique représente le texte qui sera lu à voix haute dans votre application ; type de chaîne.
private async void TexToSpeechClicked(object sender, EventArgs e)
{
await TextToSpeech.Default.SpeakAsync("Hello! My name is Leo!");
}
- Options vocales : Ces paramètres facultatifs vous permettent de modifier la configuration du volume, de la tonalité et de l’emplacement de la voix.
- Pas: Ce paramètre peut accepter une plage de valeurs, avec un minimum et un maximum comme vous pouvez le voir ci-dessous ; type flotteur.
- Volume: Ce paramètre accepte les valeurs suivantes comme minimum et maximum lors de la parole : type flotteur.
- Lieu: Vous pouvez obtenir les paramètres régionaux en utilisant le
GetLocalesAsync()
méthode, qui vous fournit une collection de paramètres régionaux représentés par le système d’exploitation ; type de paramètres régionaux.
Maintenant que vous avez une bonne compréhension du Pitch
, Volume
et Locale
paramètres, voyons comment vous pouvez combiner ces éléments en utilisant SpeechOptions
.
private async void TexToSpeechClicked(object sender, EventArgs e)
{
IEnumerable<Locale> locales = await TextToSpeech.Default.GetLocalesAsync();
SpeechOptions options = new SpeechOptions()
{
Pitch = 1.2f,
Volume = 0.55f,
Locale = locales.FirstOrDefault()
};
}
Enfin, ajoutons le SpeakAsync
méthode. Remplacez la ligne de code précédente qui dit // Write the text-to-speech method here
avec le code suivant :
await TextToSpeech.Default.SpeakAsync("Hello! I'm Leo!",options);
CancellationToken
: Utilisation du paramètre facultatifCancellationToken
vous pouvez interrompre l’énoncé une fois qu’il commence.
CancellationTokenSource cts;
private async void TexToSpeechClicked(object sender, EventArgs e)
{
cts = new CancellationTokenSource();
await TextToSpeech.Default.SpeakAsync("Hello! I'm Leo!",cancelToken: cts.Token);
}
✍️ L’exemple précédent garantit que la méthode attend la fin de l’exécution de l’énoncé avant de continuer.
Qu’en est-il des demandes vocales multiples ?
Lorsque plusieurs requêtes vocales sont effectuées à partir du même thread, TTS les mettra automatiquement en file d’attente.
Vous trouverez ci-dessous un exemple utilisant le WhenAll
méthode pour créer une tâche qui ne sera terminée que lorsque tous Task
les objets d’un tableau ont terminé :
bool isBusy = false;
public void TexToSpeechClicked()
{
isBusy = true;
Task.WhenAll(
TextToSpeech.Default.SpeakAsync("Example 1"),
TextToSpeech.Default.SpeakAsync("Example 2"),
TextToSpeech.Default.SpeakAsync("Example 3"))
.ContinueWith((t) => { isBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext());
}
Limites
- La prise en charge officielle de la lecture audio en arrière-plan n’est pas fournie.
- L’appel cross-thread de la file d’attente d’expressions n’est pas garanti.
Conclusion
À présent, vous devriez être en mesure d’implémenter la synthèse vocale dans vos applications .NET MAUI. J’espère que cet article vous a été utile ! Je vous encourage à le mettre en œuvre dans votre prochain projet. 💚💕
À la prochaine! 💁♀️
Les références
Cet article était basé sur documentation officielle .NET MAUI de Microsoft.
Source link