FUTO Swipe: modelo abierto de entrada por deslizamiento
(swipe.futo.tech)- Un intento de implementar el método de escritura por deslizamiento en teclados móviles como un modelo y algoritmo abiertos
- La escritura por deslizamiento de alta calidad existente estaba atada a apps de teclado invasivas para la privacidad o a bibliotecas privativas sin licencia, por lo que hacía falta una alternativa
- Se integra en la app de Android totalmente offline FUTO Keyboard, y también es posible descargar el modelo y compilarlo por cuenta propia
- Desde agosto de 2024 se recopilaron deslizamientos en inglés QWERTY y se reunieron más de 1 millón de casos; en marzo de 2025 se publicó en HuggingFace como un dataset con licencia MIT
- La estructura se divide en un Encoder general, un ContextLM por idioma y un Decoder por idioma y distribución; en el conjunto de prueba registra una tasa de fallo top-4 de alrededor de 4% y una tasa de error menor a 1% excluyendo palabras OOV
- El modelo completo tiene alrededor de 2.5 millones de parámetros, con unos 1.36 millones de parámetros activos; es un modelo pequeño que busca ejecutarse en milisegundos incluso en dispositivos modestos mediante la biblioteca de inferencia en C++ swipe-library
El problema que busca resolver un modelo abierto de escritura por deslizamiento
- FUTO Swipe es una familia de modelos y algoritmos que convierte trayectorias de deslizamiento en predicción de palabras
- Actualmente puede usarse en la app de teclado Android totalmente offline FUTO Keyboard
- La demo web se ejecuta del lado del servidor para reducir el tamaño de la página, pero en el entorno real del producto funciona en el dispositivo, con menor latencia
- FUTO desarrolló este sistema principalmente para FUTO Keyboard, pero también da la bienvenida a que la comunidad lo use más ampliamente
- Como es el resultado de una inversión de largo plazo, solicita atribución visible para el usuario final, y la licencia del modelo sigue la FUTO Model License
Dataset y composición del modelo
- En agosto de 2024 comenzó la recolección de datos de deslizamiento en inglés QWERTY en swipe.futo.org
- Los usuarios visitaban voluntariamente la página web móvil y revisaban la guía y la información del dataset
- Tras dar su consentimiento, deslizaban palabra por palabra oraciones tomadas principalmente de Wikipedia
- Como resultado, se generaron más de 1 millón de deslizamientos, y algunos de baja calidad fueron filtrados
- En marzo de 2025, el dataset de 1 millón de deslizamientos se publicó en HuggingFace con licencia MIT
- La arquitectura del modelo se divide en tres modelos con funciones distintas
- Encoder: un modelo general independiente de la distribución y del idioma, útil para la predicción general de escritura por deslizamiento, aunque no ofrece precisión de vanguardia
- ContextLM: un modelo de lenguaje muy pequeño para un solo idioma, que mejora la calidad de predicción eliminando candidatos sin sentido con base en palabras previas. Para entrenarlo solo se necesitan datos de texto
- Decoder: un modelo especializado por idioma y distribución que aprende las características de la distribución para ofrecer precisión de primer nivel; por ahora solo existe un Decoder de inglés QWERTY
Rendimiento y escala de ejecución
- Las cifras de rendimiento dependen mucho del benchmark, por lo que los resultados reales de uso pueden variar
- En la combinación de los 3 modelos con beam width 300, la tasa de fallo top-4 en el conjunto de prueba es de alrededor de 4%
- Excluyendo palabras fuera de vocabulario, la tasa de error es menor a 1%
- FUTO lo evalúa como un nivel comparable al de los teclados de grandes tecnológicas
- Los modelos son pequeños, pensando en su ejecución en móviles
- El Encoder tiene 635,140 parámetros
- El Decoder añade 304,155 parámetros
- El ContextLM tiene 1.5 millones de parámetros, de los cuales 1.1 millones son embeddings
- Los parámetros activos son 1,364,271 y el total es 2,494,767
- Puede ejecutarse en milisegundos incluso en dispositivos modestos, y el entrenamiento no requirió más de una GPU de workstation
Biblioteca de inferencia y licencia
- La predicción del modelo por sí sola no basta: hace falta una búsqueda beam con restricciones de diccionario para puntuar candidatos de palabras y encontrar el más probable
- Para ello se publicó la biblioteca en C++ swipe-library
- swipe-library maneja toda la inferencia, decodificación y beam search, conectando la trayectoria de deslizamiento con la predicción de palabras
- El modelo se ofrece bajo FUTO Model License, y la biblioteca de inferencia bajo GPL
- FUTO está preparando un artículo que abordará con más detalle el entrenamiento y la arquitectura
2 comentarios
Estoy usando el teclado con reconocimiento de voz de esta empresa y está bueno.
Comentarios en Hacker News
Me gusta la entrada por deslizamiento por la velocidad. Por lo general es más rápida que tocar tecla por tecla y es fácil de usar con una sola mano, pero sigue equivocándose con palabras parecidas y distingue mal entre letras simples y duplicadas
Desde hace mucho quería una nueva distribución de teclado dedicada al deslizamiento. Así como Dvorak optimizó la ergonomía del tipeo en inglés, estaría bueno tener una distribución que reduzca la superposición de palabras y la ambigüedad al deslizar
Ni siquiera tendría que ser necesariamente de 26 teclas; se podría juntar v/w/x/z en una sola tecla y hacer que las letras individuales se ingresen con pulsación larga. O al revés, quizá haría falta separar
eyee, o una tecla especial de “repetir letra anterior”Como la mayoría de los problemas vienen de que QWERTY no encaja nada bien con el deslizamiento, si apareciera una distribución optimizada capaz de subir la precisión en inglés no del 90~95% que se siente hoy sino hasta 99.9%, con gusto aprendería una distribución nueva
https://github.com/futo-org/futo-keyboard-layouts/issues/163
Por la estructura del modelo, fue posible generar unas 50 mil trayectorias sintéticas de deslizamiento para cada distribución y pasarlas por el modelo para optimizar directamente la precisión de reconocimiento, y así se probaron unas 800 mil distribuciones
El mayor problema de QWERTY es que demasiadas palabras se deslizan con patrones de 3 letras seguidas en línea recta o con ángulos obtusos. Esos patrones son difíciles de reconocer y también hacen difícil que el usuario indique claramente con el gesto qué letras quería escribir
El modelo neuronal de deslizamiento, en vez de empatar la forma del gesto como en un algoritmo de comparación de formas, busca en el patrón del gesto señales de que el usuario apuntó a letras concretas
Si se cambia la forma del teclado, los gestos pueden formarse mejor y la señal de las letras puede volverse más clara. A diferencia de la comparación por forma, el modelo también usa información temporal, así que puede reaccionar al tiempo de permanencia, pero como detenerse corta el flujo, parece mejor minimizarlo en una distribución para deslizamiento
Parece que incluso tiene un sucesor moderno: https://play.google.com/store/apps/details?id=inc.flide.vi8
Usé este teclado de forma intermitente durante un tiempo, pero siempre volvía a gboard; desde esta actualización ya me cambié por completo. Está realmente bueno
Todavía tiene el problema de poner mayúsculas aleatorias en palabras a mitad de una oración, y da la impresión de que no considera muy bien el contexto en las sugerencias, así que a menudo aparecen palabras que no tendrían sentido después de la palabra anterior
Aún no llega al nivel de gboard, pero ya está lo bastante cerca como para seguir usándolo
Si usas un equipo más potente, en el sitio puedes descargar modelos de voz más grandes y un diccionario más grande, y la diferencia se nota bastante
Lo único que me sigue faltando en el fondo es que parecen oponerse ideológicamente a agregar búsqueda de GIF, y a veces sí extraño esa función: https://github.com/futo-org/android-keyboard/issues/293#issu...
Buenísimo. Llevo 2 años usando el teclado de FUTO y hasta ahora era el mejor teclado gratis y amigable con la privacidad que había encontrado, pero el deslizamiento en este tipo de teclados era tan malo que, para alguien que lo usa mucho, era un sufrimiento
Me alegra ver que la hora más o menos que pasé deslizando para aportar al dataset parece haber servido de algo. Lo probé ahora y se siente tan bueno como el teclado de Google
Eso sí, es medio gracioso que siga deslizando
whatsen lugar dewhat's. Ojalá lo arreglen despuésPara quien tenga curiosidad por la licencia: la librería está bajo GPLv3, lo cual está bien, pero el teclado de Android usa la Futo License, lo cual no me convence
https://gitlab.futo.org/keyboard/swipe-library/-/blob/master...
https://github.com/futo-org/android-keyboard/blob/master/LIC...
¿Será esta cláusula?: que no se puede eliminar ni ocultar, en las copias distribuidas, la función para pagarle al proveedor de la licencia
Después de probar Nintype en iOS hace unos años, ya no pude usar otros teclados con deslizamiento. Ahora escribo con el teclado predeterminado y solo deslizo una o dos palabras de vez en cuando cuando no puedo usar ambas manos
Deslizar con un dedo mientras sostienes el teléfono con las dos manos se siente poco natural y lento. Ojalá Apple hubiera comprado Nintype o lo hubiera sherlockeado para integrarlo en el teclado predeterminado
La usaba desde antes de que Apple permitiera oficialmente teclados de terceros
keyboard 69, y lo usé durante añosLa experiencia de usuario era increíble, y todos los sistemas de deslizamiento que probé después se sienten realmente torpes en comparación. El deslizamiento con dos dedos es lo mejor en términos ergonómicos, pero por desgracia parece una innovación demasiado de nicho
Futo con el nuevo modelo de deslizamiento es el primer teclado Android que he probado que no se siente como un compromiso frente a GBoard
Tiene dictado por voz integrado, buena autocorrección al teclear y buena autocorrección al deslizar
Edit: no está garantizado que sea gratis y abierto. La combinación de licencias es confusa. Aun así funciona bien, así que pienso usarlo en lugar de Gboard
Esto es algo bastante grande. A mi parecer, es de lo más cercano al primer modelo de deslizamiento libre y abierto que de verdad se puede usar. Abre el camino para hacer posible la escritura por deslizamiento en plataformas aparte de iOS y Android, y reduce una parte que era un gran dolor para los nuevos entrantes de sistemas operativos
Justo borré SwiftKey porque Microsoft empezó a meter redirecciones con dark patterns hacia anuncios y Bing, así que llega en buen momento
El panel para que usara la función de respaldo seguía reapareciendo, y fue tan molesto que al final me cambié a GBoard. No es lo mismo, pero me estoy acostumbrando
Supongo que es por dinero, pero siento que no todo lo que hace Microsoft tiene que generar muchísimo dinero
Se ve bien, pero el gran problema del teclado Futo es que solo funciona con un idioma a la vez. En gboard puedo deslizar en los 3 idiomas que uso sin tener que estar cambiando constantemente. Ojalá Futo también lo hiciera así
El dictado por voz es muchísimo mejor que GBoard, que era lo que usaba hasta ahora. Maneja las mayúsculas al inicio de oración y la puntuación sin que yo tenga que preocuparme, acertó perfectamente varias oraciones sin edición posterior y además todo corre en un modelo local
La desventaja es que no se actualiza en tiempo real, sino que convierte todo en lote después de que terminas de hablar. Parece que ya corrigieron que el gesto de deslizar para borrar y la barra espaciadora fueran demasiado sensibles, como cuando lo probé por última vez hace 1 o 2 años, y ahora también permite algo de personalización