Reconocimiento y traducción de voz en tiempo real en C# con Whisper
La aplicación captura flujos de audio de plataformas como Teams, los divide en frases según la amplitud vocal y pausas, y luego utiliza Whisper para convertir voz en texto (STT) en ruso, inglés o francés, seguido de traducción. La implementación en C# depende de aproximadamente un 20 % de código personalizado, mientras que el resto se construye mediante integraciones. Ofrece un modo dictado cuando se selecciona un solo idioma: simplemente transcripción con opción de guardar el audio.
Las configuraciones permiten calibrar:
- Umbral de amplitud vocal para detección de habla.
- Duración del silencio entre frases.
Las estadísticas mostradas en la esquina inferior derecha indican los niveles de audio actuales y las banderas de detección, ideales para ajustes precisos. La captura de audio funciona únicamente con el mezclador del sistema (auriculares/altavoces); no se soporta entrada directa desde el micrófono.
Elección de modelos Whisper y rendimiento
Se probaron soluciones locales de STT:
- Sherpa (ONNX): la versión en streaming para francés no se adaptó a la arquitectura.
- Foundry Local (Microsoft): comunicación cruda basada en archivos, basada en Whisper.
Optamos por Whisper:
| Modelo | Velocidad | Lógica | Notas |
|-------|-------|-------|-------|
| Base | Rápida | Ninguna | Mínima, sin contexto |
| Pequeño | Media | Sí | Mejor equilibrio, temperatura 0.1–0.2 |
| Mediano | Lenta | Buena | La cola de fragmentos crece durante reuniones en vivo |
Sin NPU/GPU, el uso de RAM aumenta, pero los resultados siguen siendo aceptables con audio de alta calidad en reuniones.
Integración de servicios de traducción
Dos opciones disponibles:
- OpenAI: clave API, modelo y URL configurados en ajustes.
- Azure Translator: nivel gratuito incluye 2 millones de caracteres/mes; requiere cuenta.
La interfaz ITranslationService simplifica añadir nuevos proveedores (posible con Yandex API si se factura). Ningún traductor local alcanzó las métricas de calidad.
Ejemplo de configuración Azure:
public class AzureTranslationService : ITranslationService
{
private readonly string _key;
// ...
}
Casos de uso prácticos y limitaciones
Esta herramienta resuelve necesidades de reuniones multilingües en tiempo real sin grabación. Probada con francés, inglés y ruso. No es un grabador universal: solo se captura la salida de audio del sistema.
Para desarrolladores intermedios a senior: arquitectura modular enfocada en procesamiento de fragmentos en streaming. Extensible al reemplazar motores STT/traducción o añadir nuevos algoritmos VAD.
Conclusiones clave:
- Captura de audio del sistema con división de frases usando parámetros similares a VAD.
- Whisper Pequeño es óptimo para uso en tiempo real: temperatura 0.1–0.2, sin GPU requerida.
- Interfaz de traductor sencilla; Azure ofrece 2M caracteres gratis/mes.
- Modo STT solo para transcripción sin traducción.
- Estadísticas en tiempo real para ajustar la precisión de detección de voz.
— Editorial Team
Aún no hay comentarios.