Implementación de Reconocimiento de Voz con Visual Studio
Clase 14 de 27 • Curso de Azure Cognitive Services
Resumen
¿Qué es el servicio de reconocimiento de voz?
El servicio de reconocimiento de voz actualmente se encuentra en fase de preview. Su función principal es identificar a una persona a partir de su voz. Para ello, el servicio genera una "firma de audio" al hacer que el usuario repita una frase varias veces. Este proceso permite capturar las características únicas de una voz y almacenarlas para comparaciones futuras. El siguiente paso es verificar si una nueva muestra de voz coincide con la firma almacenada, determinando si es la misma persona con un nivel de confianza dado.
¿Cómo crear una aplicación de consola en Visual Studio?
La creación de una aplicación de consola en Visual Studio es el primer paso para implementar el servicio de reconocimiento de voz. A continuación se presentan los pasos necesarios:
- Crear un nuevo proyecto: Selecciona "Aplicación de consola" en Visual Studio y asígnale un nombre, por ejemplo, "speaker recognition".
- Seleccionar la versión de .NET: Asegúrate de elegir Netcore 3.1.
- Manejo de paquetes NuGet:
- Haz clic derecho en el proyecto y selecciona "Manejar paquetes de Nuget".
- Busca el paquete
Microsoft.CognitiveServices.Speech
y acepta los términos de licencia.
¿Cómo habilitar el reconocimiento de voz?
Para trabajar correctamente con el reconocimiento de voz, es necesario realizar algunas configuraciones en el código:
Configuración básica
-
Agregar 'usings' necesarios: Debes incluir los elementos necesarios para trabajar con el servicio de reconocimiento de voz y manejar tareas asíncronas.
-
Modificar la firma del método principal: Adapta el método principal para que funcione de manera asíncrona.
-
Llave de suscripción y región: Obtén la llave de suscripción y la región desde Azure, asegurándote de trabajar en la región correcta, actualmente USUS para el servicio en preview.
// Ejemplo de código para establecer la configuración
using Microsoft.CognitiveServices.Speech;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var config = SpeechConfig.FromSubscription("YOUR_SUBSCRIPTION_KEY", "USUS");
// ...
}
}
¿Cómo enrolar una voz?
Para enrolar una voz en el sistema, se sigue el siguiente proceso:
- Perfil de voz: Usa
VoiceProfileClient
para crear un perfil de voz, configurando el idioma en inglés. - Entrada de audio: Indica la fuente de la entrada de audio, ya sea desde el micrófono o un archivo pregrabado.
- Frase de enrolamiento: Solicita al usuario que diga "My voice is my password, verify me" varias veces, para completar el proceso de enrolamiento.
Ejemplo de enrolamiento de voz
async Task EnrolProfile(SpeechConfig config, ProfileMapping profileMapping)
{
// Crear cliente de perfil de voz.
var client = new VoiceProfileClient(config);
// Crear perfil en inglés
var profile = await client.CreateProfileAsync(VoiceProfileType.TextDependentVerification, "en-US");
// Configurar captura de audio desde el micrófono.
var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
// Realizar el enrolamiento.
var result = await client.EnrollProfileAsync(profile, audioConfig);
// ...
}
¿Cómo se verifica la identidad de un usuario con el perfil?
Una vez completado el enrolamiento, debes crear un método para verificar si el usuario actual es quien dice ser, comparando la firma de la voz registrada con una nueva muestra de voz.
- Modelo de verificación de voz: Crea un modelo de verificación de voz usando el perfil obtenido.
- Comparación de audio: Utiliza el micrófono u otro archivo de audio para la comparación.
- Nivel de confianza: Determina si la voz registrada en el perfil coincide con la nueva muestra, proporcionando un porcentaje de certeza.
async Task VerifySpeaker(SpeechConfig config, string profileId)
{
var recognizer = new SpeakerRecognizer(config, AudioConfig.FromDefaultMicrophoneInput());
var model = SpeakerVerificationModel.FromProfile(profileId);
// Solicitar al usuario que realice la verificación
var result = await recognizer.RecognizeOnceAsync(model);
// Mostrar nivel de confianza
Console.WriteLine($"Nivel de confianza: {result.Score}");
}
¿Cuáles son las aplicaciones del reconocimiento de voz?
Este servicio puede convertirse en un mecanismo adicional de autenticación en tus aplicaciones, permitiendo una capa extra de seguridad gracias a la identificación biométrica de los usuarios. Además, facilita la implementación de interfaces más naturales y accesibles que mejoran la experiencia del usuario. ¡Explora y sigue practicando para sumergirte más en este emocionante campo de la tecnología!