npi's People
npi's Issues
Mejorar uso del sensor de proximidad
El sensor de proximidad ahora mismo sólo detiene la narración. Quizás sería interesante oscurecer la pantalla cuando se detiene la pantalla de la misma forma que hace Telegram. No parece muy difícil de hacer según esta pregunta de SO.
Ajustar la sensibilidad del detector de agitación
Parece que para que se detecte la agitación en el dispositivo hay que sacudirlo demasiado fuerte en unos casos y se activa con sacudidas demasiado leves en otros. Se podría dar la opción al usuario de que ajuste este umbral a su preferencia.
Escribir memoria
Escribir "mínima documentación técnica" con las clases y métodos.
Hay que acordarse de mirar las issues cerradas.
Integrar giroscopio
- Eliminar fuente de luz
- Añadir menú superior que muestre el nombre de la obra
- Eliminar bounding box
- Atribuir fuente
- Probar a usar matriz inversa (es decir, la transpuesta) para que el movimiento sea más natural.
- Arreglar saltos visuales
Mejorar la manera en la que la app espera a terminar de hablar para empezar a escuchar
Actualmente cuando la app se inicia, al ser pulsado el botón para grabar reproduce el mensaje de bienvenida, espera unos segundos (número fijo de segundos) y luego empieza a grabar.
Esta es la solución al problema que causaba la solución original. Antes se empezaba a escuchar cuando el TTS había terminado, esto causaba que el bot entrase en bucle, pues cuando terminaba de sintetizar una respuesta grababa inmediatamente la siguiente pregunta, sin dejar que el usuario decidiese por sí mismo.
Sería ideal encontrar algún método menos rudimental para esperar a que termine de hablar en lugar de hacerlo “a ojo”
Compartir bot con Zoraida
Nombrad el bot:NPI18GrupoPXYY donde XYY es el número de vuestro grupo de prácticas, por ejemplo P111 sería el grupo 11 de los lunes, P203 sería el grupo 3 de los viernes.
Añadidme a vuestro bot en DialogFlow con el correo [email protected]
Añadir movimientos artísticos a la entidad Movimientos de Dialogflow
De momento solo tiene Renacimiento, Alto Renacimiento y Surrealismo.
Interfaz textual
Ideas para la interfaz textual:
- Enséñame más obras relacionadas con $obra
- Dime obras de $autor
- Dónde está $obra
- Cuéntame algo sobre $obra
- Qué tamaño tiene $obra
- Cuándo se hizo $obra
- Quién hizo $obra
- Historia de $obra
- Género/movimiento de $obra
- Qué representa $obra
Mejorar la consulta al leer de un QR
Actualmente lo que realiza es una consulta con las palabras "Quién pintó X", siendo X el resultado del código QR escaneado. Se podría mejorar para preguntar sobre los sucesos asociados a una obra o alguna otra pregunta que sea capaz de resolver acerca de una obra o un artista.
Integrar QR
Fallback a etiquetas en inglés
Cuando una label de una entidad de Wikidata no está disponible en español las consultas actuales devuelven la id de la entidad. Para evitar esto podríamos:
- hacer que si la label no está disponible en español que use la de inglés, que casi siempre está disponible o
- Filtrar resultados sin label
Base de datos y documentación
Comparar información disponible en distintas bases de datos.
Investigar acceso a la información mediante WebHooks y sobre qué obras hay información.
- Comparar bases de datos
- Mirar qué información tiene disponible Wikidata
- Lista de obras de arte que tengan información disponible
- Investigar uso de WebHooks
Crear objetos 3D para giroscopio
Los objetos con los que provee Wikidata son demasiado pesados y la app se ralentiza en mi móvil y tarda ~20 segundos en cargar. Además sólo tenemos implementada la carga para objetos .obj
.
Mi propuesta para solucionar esto es tomar modelos 3D de Scan The World y usar Blender para cambiar el formato a .obj y decimar los objetos.
Es decir habría que:
- Elegir obras de arte
- Decimar obras de arte
- Exportarlas y meterlas en la app
Integración de la aplicación con DialogFlow
Integrar la comunicación entre la aplicación y DialogFlow para gestionar las respuestas a las preguntas
Modificar UI
Modificar UI para que se pueda:
- Utilizar un botón para empezar a grabar.
- Leer la pregunta que ha hecho el usuario.
- Leer y escuchar la respuesta que ha dado el asistente. En caso de existir alguna imagen se puede mostrar o dar una breve descripción y ofrecer ser mostrada. (p.ej. "Muéstrame el Guernica" y la respuesta sea... ¿Quieres ver... Guernica... de... Picasso? Y que muestre alguna imagen y descripción)
Mejorar la naturalidad del habla del bot
Que sea capaz de abarcar el mayor rango de preguntas con la mayor naturalidad posible. Aunque no sean necesariamente relacionadas con el museo
Concordancia de géneros
En algunas consultas para formatear correctamente las frases hay que saber el género de lo que se habla. Para autores podemos consultar el género en Wikidata, pero para otras palabras no se puede :(
Creo que es algo menor así que lo dejo como algo aquí con la consulta para obtener el género por si tenemos ganas de ponernos al final.
SELECT ?gender ?itemLabel ?creatorLabel WHERE {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch" .
bd:serviceParam wikibase:endpoint "www.wikidata.org" .
bd:serviceParam mwapi:search "${any}" .
bd:serviceParam mwapi:language "es" .
?item wikibase:apiOutputItem mwapi:item .
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "es" .
}
?item (wdt:P279|wdt:P31) ?type.
VALUES ?type {wd:Q3305213 wd:Q18573970 wd:Q219423 wd:Q179700}
?item wdt:P170 ?creator.
?creator wdt:P21 ?gender.
} LIMIT 10
Integrar obtener obra aleatoria al agitar
Si se detiene usando el sensor de proximidad no funciona el mostrar obra aleatoria con el acelerómetro
Integrar sensor proximidad
Para detener la narración si tapamos dicho sensor
La aplicación crashea en modo apaisado
E/AndroidRuntime: FATAL EXCEPTION: main
Process: conversandroid.talkback, PID: 17525
java.lang.RuntimeException: Unable to destroy activity {conversandroid.talkback/conversandroid.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.speech.SpeechRecognizer.stopListening()' on a null object reference
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3911)
...
D/AppTracker: App Event: crash
Gestionar las respuestas de DialogFlow cuando no sabe qué decir.
Decidir lenguaje para Leap
La documentacion principal está aquí.
Entiendo de la documentación que recomiendan Unity o Unreal (hay otras APIs pero recomiendan no usarlas).
Desarrollar en Unreal parece que sólo está disponible para Windows, así que la decisión es entre Unity o API legacy.
También hay que decidir qué SDK utilizar. Están las versiones V2, V3, V4. V3 y V4 están más optimizadas para VR. Sobre V2 dice:
many of the development assets associated with V2 are outdated, and the software is no longer supported.
We strongly recommend using the more recent software version
pero creo que Marcelino dijo que usáramos la 2.
Gestionar comportamiento ante la falta de permisos
Integrar DialogFlow con la base de datos
Que la respuesta a las preguntas sobre la descripción de elementos del museo la obtenga dialogflow mediante una consulta a la base de datos.
Interacción interfaz oral y visor 3D
Estaría bien que pudiera abrirse el visor 3D a partir de la interfaz oral, con algo como "Enséñame El Pensador". Mi idea inicial para esto sería:
- Guardar los modelos 3D junto con su id de Wikidata y un nombre.
- Usar Dialogflow para devolver en el caso de que sea "Enséñame El Pensador" una string especial que se compruebe en la aplicación y la ID de la entidad detectada.
- Si la entidad detectada tiene modelo 3D guardado en la app, ejecutar el visor 3D con el modelo.
Una posibilidad es unificar esto con algo que muestre imágenes que podríamos usar para cuando agitamos el dispositivo.
Mensaje de bienvenida después de agitación
Puede reproducir el mensaje de bienvenida la primera vez que se pulsa el botón de escucha después de haber agitado el dispositivo.
Introducir posibles preguntas y respuesta de Dialogflow
Entre las que se encuentran las mencionadas aquí
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.