SyncTrans 1.0.0 se ha publicado esta semana. Es un traductor de voz en tiempo real para macOS 14 y posteriores, que funciona en Apple Silicon: tú hablas, la traducción aparece a medida que se forma la frase y una voz sintetizada la lee en voz alta. Este artículo es la crónica de ingeniería de cómo llegamos hasta aquí — qué construimos, en qué orden y qué compromisos aceptamos. Las notas breves orientadas al usuario están en Novedades.
Por qué construir un intérprete para el Mac
Las apps de traducción de los teléfonos funcionan bien para preguntar dónde está el baño. Funcionan mucho peor para una conversación de verdad, porque convierten la conversación en dos personas que se turnan para mirar una pantalla pequeña y se pasan el dispositivo de mano en mano. En las conversaciones que nos importaban — una reunión con un cliente, una consulta, una conversación familiar con un abogado o un médico — hay un portátil sobre la mesa mucho más a menudo que un libro de frases.
Además, un Mac resulta ser un hardware inusualmente bueno para esta tarea. Apple Silicon puede ejecutar reconocimiento de voz, traducción automática y síntesis de voz en local a velocidad interactiva, y la máquina ya trae una buena cadena de micrófono, altavoces de verdad y tantas pantallas como quieras conectar. El objetivo que nos fijamos era sencillo de enunciar: que la máquina se ocupe del idioma, para que las personas puedan ocuparse de la conversación.
Dos familias de motores, desarrolladas en paralelo
Desde el primer prototipo, SyncTrans tuvo dos formas de hacer el mismo trabajo. El motor gestionado en la nube no requiere configuración: inicias sesión, eliges los idiomas y empiezas. El motor en el dispositivo ejecuta el reconocimiento, la traducción y la síntesis íntegramente en el Mac — nada sale de la máquina y sigue funcionando sin red.
Decidimos construir ambos a la vez en lugar de lanzar primero la vía en la nube y añadir después la inferencia local como un parche. El coste fue real: cada función tenía que funcionar dos veces, sobre dos pilas tecnológicas muy distintas. La recompensa fue una única abstracción de motor a la que se acoplan ambas pilas, y la costumbre de medir en lugar de afirmar. Cada nivel de modelo local lleva asociado un mínimo de memoria medido, y la app comprueba lo que la máquina puede ejecutar de verdad antes de ofrecerlo — a un Mac más antiguo se le dice con honestidad qué niveles quedan fuera de su alcance, en lugar de enviarlo a algo que acabaría paginando memoria.
La tercera opción de motor surgió de esa abstracción casi gratis: si ya tienes servicios de voz y traducción en los que confías, puedes apuntar SyncTrans a tus propios endpoints de API y el resto de la app funciona sin cambios. Tres motores, una interfaz, y cambiar entre ellos es un ajuste en la configuración, no una reinstalación.
Diseñado para el cara a cara
La función que más dio forma al producto surgió de observar a la gente usar las primeras versiones. Con una sola ventana, dos interlocutores acababan inevitablemente girando la pantalla de un lado a otro. Así que la 1.0 incluye una vista de conversación en doble pantalla: pones un idioma a pantalla completa en cada monitor, colocas el Mac entre los interlocutores y cada persona lee la pantalla pensada para ella. Cada ventana puede asignarse a su propia pantalla desde dentro de la app.
El audio recibió el mismo tratamiento. Con unos auriculares compartidos, SyncTrans puede enviar un idioma al oído izquierdo y el otro al derecho, de modo que dos personas que comparten un solo Mac escuchan cada una la traducción destinada a ella. Es algo pequeño de describir y sorprendentemente grande en la práctica: la conversación deja por completo de girar en torno a la máquina.
Tres diseños sobre un único registro de sesión
Distintos momentos piden distintas vistas de la misma conversación, así que la 1.0 incluye tres diseños sobre un único registro de sesión subyacente. El diseño de chat intercala ambos idiomas turno a turno, como hace una app de mensajería. El diseño de doble columna da a cada idioma su propia columna, que se lee mejor cuando dos personas siguen la conversación a la vez. El diseño de acta de reunión presenta la sesión como un documento continuo que se puede repasar como unas notas. Como los diseños son vistas sobre un mismo registro, cambiar de uno a otro a mitad de sesión no pierde nada.
Glosario, contexto y números que se comportan bien
Dos funciones de calidad entraron en la 1.0 porque importan más que la elección del modelo en bruto. La traducción funciona con un contexto conversacional continuo, de modo que los pronombres y las referencias al tema se resuelven contra lo que realmente se dijo antes en la sesión. Un glosario por proyecto fija las palabras que un modelo, de otro modo, tendría que adivinar: nombres de productos, nombres de personas, términos técnicos. Una vez que un término está en el glosario, sale siempre de la misma manera.
La 1.0 también incluye una capa determinista de reglas que respalda al modelo con los números y las expresiones de descuento, donde una traducción literal puede invertir el significado sin hacer ruido — las convenciones chinas de descuento son el caso célebre. Ese trabajo tiene su propio artículo: Números que sobreviven a la traducción.
Un historial que se puede buscar y exportar
Una conversación traducida es a menudo algo que necesitas después, así que cada sesión se guarda por proyecto en el Mac. El historial permite buscar entre proyectos, los turnos individuales se pueden corregir o eliminar, y una sesión terminada se exporta como TXT, Markdown o SRT — notas de una reunión, una cita que necesitas por escrito o subtítulos para una grabación del mismo evento. El registro vive en tu máquina, lo haya producido el motor que lo haya producido.
Siete idiomas en la interfaz
Un intérprete cuya interfaz solo habla un idioma tiene un problema de credibilidad, así que la interfaz de la 1.0 está localizada en siete: inglés, chino, japonés, español, francés, coreano y ucraniano. Tratamos la localización como trabajo de ingeniería y no como un volcado de traducciones — auditamos y corregimos las etiquetas de barra de herramientas que se truncaban, los botones que crecían más allá de su contenedor y los diseños que solo encajaban en inglés. Este blog se publica en los mismos siete idiomas, que nos pareció la forma honesta de hacerlo.
Qué significa la 1.0
Para nosotros, la 1.0 es una promesa de base: el bucle completo — hablar, ver, oír, guardar — funciona de principio a fin en cada motor que publicamos, en el hardware en el que decimos que funciona. SyncTrans 1.0.0 necesita macOS 14 o posterior en Apple Silicon, y puedes descargarlo aquí. El recorrido por las funciones está en la página de Funciones.
¿Preguntas o informes de errores? El tablón de comentarios es la forma más rápida de contactar con nosotros.