Text-to-Speech (TTS) es una tecnología que convierte texto en discurso hablado. Es una característica útil en una variedad de aplicaciones, desde asistentes virtuales hasta herramientas de accesibilidad.
Además de que se pueden hacer muchas cosas graciosas y tontadas, como bots para Discord, para Twitch, etc 😅
Hacer TTS en C# es realmente sencillo. La biblioteca System.Speech.Synthesis
es parte del .NET Framework y proporciona capacidades básicas de TTS. Es fácil de usar y no requiere configuraciones externas.
De hecho, es tan sencillo que la voz Helena de Microsoft, es una de las más empleadas en TTS. La reconoceréis en seguida cuando la oigáis en vuestro programa, porque se usa muchisimo.
Para más información y documentación detallada, puedes visitar los siguientes enlaces System.Speech.Synthesis Documentation
Implementación de TTS con System.Speech.Synthesis
System.Speech.Synthesis
está incluido en .NET Framework, por lo que no es necesario instalar ningún paquete adicional.
Vamos a ver un ejemplo simple de cómo usar System.Speech.Synthesis
para convertir texto a voz:
using System;
using System.Speech.Synthesis;
class Program
{
static void Main(string[] args)
{
// Crear una instancia del sintetizador
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
// Configurar el sintetizador (opcional)
synthesizer.Volume = 100; // 0...100
synthesizer.Rate = 0; // -10...10
// Convertir texto a voz
synthesizer.Speak("Hola, bienvenido al tutorial de Text-to-Speech en C#");
// O, para hablar asíncronamente
// synthesizer.SpeakAsync("Hola, bienvenido al tutorial de Text-to-Speech en C#");
}
}
¡Así de sencillo! Literalmente cuatro líneas y tenéis un TTS funcionando.
Seleccionar una voz
Es posible configurar diferentes aspectos del sintetizador. Tampoco demasiados, no hay mucho con lo que “jugar”.
Pero, como hemos visto, si es posible seleccionar el volumen y la velocidad, así como seleccionar una voz específica:
using System.Speech.Synthesis;
class Program
{
static void Main(string[] args)
{
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
// Listar voces disponibles
foreach (InstalledVoice voice in synthesizer.GetInstalledVoices())
{
VoiceInfo info = voice.VoiceInfo;
Console.WriteLine("Voice Name: " + info.Name);
}
// Seleccionar una voz específica
synthesizer.SelectVoice("Microsoft Helena Desktop");
synthesizer.Speak("Esta es una prueba con una voz específica.");
}
}