Fermer

mars 21, 2024

Apprentissage de la synthèse vocale dans .NET MAUI

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.

Paramètres AndroidSur 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.

Valeurs de pas avec min/max de 0/2,0

  • Volume: Ce paramètre accepte les valeurs suivantes comme minimum et maximum lors de la parole : type flotteur.

Valeurs de volume avec min/max de 0/1,0

  • 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 facultatif CancellationTokenvous 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