¿Cómo convertir texto en voz usando Azure Cognitive Services?
El mundo del desarrollo tecnológico está lleno de sorpresas y hoy nos sumergimos en el increíble ámbito de la conversión de texto a voz mediante Azure Cognitive Services. Este proceso te permite generar audios de salida en tus bocinas o crear archivos de audio con una voz sintetizada, ofreciendo la posibilidad de enriquecer aplicaciones con características accesibles y avanzadas.
¿Qué necesitas para empezar?
Para empezar con la implementación, primero necesitas crear un servicio cognitivo de tipo speech en Azure. A continuación, detallamos los pasos iniciales:
Crea un servicio de tipo speech:
Inicia sesión en el portal de Azure.
Selecciona Create a Resource y busca el servicio Speech.
Llena las opciones requeridas como nombre, ubicación (se recomienda WestUS para mejor latencia), tipo de tarifa y grupo de recursos.
Configura el proyecto en Visual Studio:
Crea un nuevo proyecto de aplicación de consola en Visual Studio.
Instala el paquete NuGet Microsoft.CognitiveServices.Speech para poder utilizar el servicio de texto a voz.
¿Cómo configurar y utilizar el servicio en tu proyecto?
El proceso de configuración y uso del servicio requiere de ciertos pasos técnicos en tu proyecto de Visual Studio:
Adicional los usings necesarios:
Agrega los siguientes using en tu clase Program.cs para poder utilizar el servicio de speech y trabajar con el sistema de archivos de Windows.
usingMicrosoft.CognitiveServices.Speech;
Configuración de la llave de suscripción y región:
Copia la llave de suscripción y la región desde el portal de Azure para configurarlos en tu proyecto.
string subscriptionKey ="tu_llave_de_suscripción";string region ="WestUS";
Crear métodos para sintetizar voz:
Los métodos deben ser creados tanto para sintetizar directamente al speaker como para generar un archivo de audio:
Este tipo de tecnologías puede enriquecer cualquier proyecto, ofreciendo funcionalidades para mejorar la accesibilidad y la experiencia del usuario. Considera implementar estos servicios en:
Aplicaciones móviles.
Asistentes virtuales.
Herramientas educativas inclusive para personas con discapacidades visuales.
Te invitamos a investigar y probar diferentes configuraciones. El conocimiento aplicado es la clave para avanzar en el fascinante mundo de la inteligencia artificial. ¡Mucho éxito en tu aprendizaje continuo!
Conversión de Texto a Voz con Azure Cognitive Services
Conversión de Texto a Voz con Azure Cognitive Services
Recursos
Resumen
¿Cómo convertir texto en voz usando Azure Cognitive Services?
El mundo del desarrollo tecnológico está lleno de sorpresas y hoy nos sumergimos en el increíble ámbito de la conversión de texto a voz mediante Azure Cognitive Services. Este proceso te permite generar audios de salida en tus bocinas o crear archivos de audio con una voz sintetizada, ofreciendo la posibilidad de enriquecer aplicaciones con características accesibles y avanzadas.
¿Qué necesitas para empezar?
Para empezar con la implementación, primero necesitas crear un servicio cognitivo de tipo speech en Azure. A continuación, detallamos los pasos iniciales:
Crea un servicio de tipo speech:
Inicia sesión en el portal de Azure.
Selecciona Create a Resource y busca el servicio Speech.
Llena las opciones requeridas como nombre, ubicación (se recomienda WestUS para mejor latencia), tipo de tarifa y grupo de recursos.
Configura el proyecto en Visual Studio:
Crea un nuevo proyecto de aplicación de consola en Visual Studio.
Instala el paquete NuGet Microsoft.CognitiveServices.Speech para poder utilizar el servicio de texto a voz.
¿Cómo configurar y utilizar el servicio en tu proyecto?
El proceso de configuración y uso del servicio requiere de ciertos pasos técnicos en tu proyecto de Visual Studio:
Adicional los usings necesarios:
Agrega los siguientes using en tu clase Program.cs para poder utilizar el servicio de speech y trabajar con el sistema de archivos de Windows.
using Microsoft.CognitiveServices.Speech;
Configuración de la llave de suscripción y región:
Copia la llave de suscripción y la región desde el portal de Azure para configurarlos en tu proyecto.
string subscriptionKey = "tu_llave_de_suscripción";
string region = "WestUS";
Crear métodos para sintetizar voz:
Los métodos deben ser creados tanto para sintetizar directamente al speaker como para generar un archivo de audio:
private async Task SynthesizeToSpeakerAsync()
{
var config = SpeechConfig.FromSubscription(subscriptionKey, region);
using var synthesizer = new SpeechSynthesizer(config);
await synthesizer.SpeakTextAsync("Hello World");
}
private async Task SynthesizeToFileAsync()
{
var config = SpeechConfig.FromSubscription(subscriptionKey, region);
using var synthesizer = new SpeechSynthesizer(config, null);
var result = await synthesizer.SpeakTextAsync("Your text here");
if (result.Reason == ResultReason.SynthesizingAudioCompleted)
{
File.WriteAllBytes("outputfile.wav", result.AudioData);
}
}
¿Cómo funciona el uso de archivos XML para especificar el sintetizador?
Los archivos XML son esenciales para definir las características del sintetizador:
Crea un archivo XML (SSML): Define el contenido y la voz en el que debería sintetizarse.
<speak version="1.0" xml:lang="en-US">
<voice name="en-US-JennyNeural">Your text here</voice>
</speak>
Configura el archivo en el proyecto: Asegúrate de que el archivo se copie correctamente al directorio de salida.
Este tipo de tecnologías puede enriquecer cualquier proyecto, ofreciendo funcionalidades para mejorar la accesibilidad y la experiencia del usuario. Considera implementar estos servicios en:
Aplicaciones móviles.
Asistentes virtuales.
Herramientas educativas inclusive para personas con discapacidades visuales.
Te invitamos a investigar y probar diferentes configuraciones. El conocimiento aplicado es la clave para avanzar en el fascinante mundo de la inteligencia artificial. ¡Mucho éxito en tu aprendizaje continuo!
using System;
using System.IO;
using System.Text;
using System. Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
namespace DemoTextSpeech
{
class Program
{
private static string suscriptionKey ="0d0fcb275cf949ce8cdc32c215da56ed";
private static string serviceRegion = "westus";
static async Task Main()
{
Console.WriteLine("Probando Speech to Text");
await SynthesizeAudioToSpeakerAsync();
await SynthesizeAudioToFileAsync();
Console.ReadLine();
}
static async Task SynthesizeAudioToSpeakerAsync()
{
var config= SpeechConfig.FromSubsthecription (suscriptionKey, serviceRegion);
using var synthesizer= new SpeechSynthesizer (config);
await synthesizer.SpeakTextAsync("Hello, I am testing the text to speech service in Platzi ");
}
static async Task SynthesizeAudioToFileAsync()
{
var config SpeechConfig.FromSubscription (suscriptionkey, serviceRegion);
config.SetSpeechSynthesisOutput Format (SpeechSynthesisOutput Format. Riff 24khz16BitMonoPcm);
using var synthesizer = new SpeechSynthesizer (config, null);
var ssml=File.ReadAllText("ssml.xml);
var resultssml await synthesizer.SpeakSsmlAsync(ssml);
using var stream= AudioDataStream.FromResult (resultssml);
await stream. Save TowaveFileAsync("output-test.wav");
}
}
}
ssml.xml
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AriaNeural">
When you're on the freeway, it's a good idea to use a GPS.
</voice>
</speak>
Este curso me está volando el cerebro!
Se me ocurren escenarios de aplicaciones muy diversas.
Qué tal sí añadimos en una aplicación de aprendizaje de idiomas ejercicios donde repetimos una frase para que el sistema nos compruebe que la estamos diciendo correctamente. Pero no solo con la calificación del reconocimiento, sino que ponemos a la app a traducir el texto a nuestro idioma nativo y lo reproducimos para comprobar que lo que practicamos fue interpretado correctamente por el sistema?
O un plugin para las apps de valoración de aplicaciones o productos en un ecomerce donde en vez de escribir la reseña permitimos grabar un audio estilo whatsapp y así no tener que invertir tiempo escribiendo desde el teclado.
El servicio puede ser usado para darle voz a personajes en videojuegos. Junto con otros servicios cognitivos puede facilitar que se personalice la interacción que tienen con los jugadores.
A mi se me ocurre que en los servicios de atención al cliente, siempre se grabe la llamada del cliente y se convierta de voz a texto, así el operador no tiene que estar transcribiendo el problema, esto los ayudaría a agilizar su trabajo.
using System;
using System.IO;
using System.Text;
using System. Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
namespace DemoTextSpeech
{
class Program
{
private static string suscriptionKey ="0d0fcb275cf949ce8cdc32c215da56ed";
private static string serviceRegion = "westus";
static async Task Main()
{
Console.WriteLine("Probando Speech to Text");
await SynthesizeAudioToSpeakerAsync();
await SynthesizeAudioToFileAsync();
Console.ReadLine();
}
static async Task SynthesizeAudioToSpeakerAsync()
{
var config= SpeechConfig.FromSubsthecription (suscriptionKey, serviceRegion);
using var synthesizer= new SpeechSynthesizer (config);
await synthesizer.SpeakTextAsync("Hello, I am testing the text to speech service in Platzi ");
}
static async Task SynthesizeAudioToFileAsync()
{
var config SpeechConfig.FromSubscription (suscriptionkey, serviceRegion);
config.SetSpeechSynthesisOutput Format (SpeechSynthesisOutput Format. Riff 24khz16BitMonoPcm);
using var synthesizer = new SpeechSynthesizer (config, null);
var ssml=File.ReadAllText("ssml.xml);
var resultssml await synthesizer.SpeakSsmlAsync(ssml);
using var stream= AudioDataStream.FromResult (resultssml);
await stream. Save TowaveFileAsync("output-test.wav");
}
}
}
ssml.xml
<speakversion="1.0"xmlns="https://www.w3.org/2001/10/synthesis"xml:lang="en-US"><voicename="en-US-AriaNeural"> When you're on the freeway, it's a good idea to use a GPS.
</voice></speak>
Puede servir para personas con limitantes visuales o de habla.
Tu idea es muy viable, agregaria usarlo como una herramienta para personas con incapacidades en sus miembros superiores.
Incluso, como una herramienta que le haga la vida mas facil a los programadores, que por medio de comandos de voz escriba el código... la verdad estoy como Gustavo, se me vienen un monton de cosas locas a la cabeza.
Este curso me está volando el cerebro!
Se me ocurren escenarios de aplicaciones muy diversas.
Qué tal sí añadimos en una aplicación de aprendizaje de idiomas ejercicios donde repetimos una frase para que el sistema nos compruebe que la estamos diciendo correctamente. Pero no solo con la calificación del reconocimiento, sino que ponemos a la app a traducir el texto a nuestro idioma nativo y lo reproducimos para comprobar que lo que practicamos fue interpretado correctamente por el sistema?
O un plugin para las apps de valoración de aplicaciones o productos en un ecomerce donde en vez de escribir la reseña permitimos grabar un audio estilo whatsapp y así no tener que invertir tiempo escribiendo desde el teclado.
Se puede usar con voicebots específicamente en el área de cobranza, para recordatorio de pago.
Con estas apis se puede sugerir recomendaciones con AI como ChatGPT?
cual será la voz que utiliza el navegador edge o que utiliza bing?
Edge usa diferentes sintetizadores en su modo lectura; puedes cambiarlos en la parte de configuración y quedarte con el que mas te guste.
El servicio puede ser usado para darle voz a personajes en videojuegos. Junto con otros servicios cognitivos puede facilitar que se personalice la interacción que tienen con los jugadores.
Pensaba que la voz iba a ser más real, pero sige pareciendo robótica
A mi se me ocurre que en los servicios de atención al cliente, siempre se grabe la llamada del cliente y se convierta de voz a texto, así el operador no tiene que estar transcribiendo el problema, esto los ayudaría a agilizar su trabajo.