This is an old revision of the document!
Table of Contents
tags: unity openai
Referencias:
Añadir pantallas de texto a la visión
Primero añadimos dos pantallas, que será una de entrada y otra de salida que se moverán con nuestra vista y que las podemos esconcer pulsando el botón A
Creamos dos pantallas de Texto. Una de texto de entrada y otra de texto de Salida. Creamos dos GameObjects y los colgamos de “Main Camera” de nuestro jugador. Si queremos quitar las dos a la vez lo ponemos dentro de otro GameObject que he llamado Pantalla. Asignamos un “TextMeshPro - Text” a cada gameobject.
Script para que aparezca la pantalla si dejo pulsado el botón A del mando derecho:
using UnityEngine; using UnityEngine.XR; using TMPro; public class Botones : MonoBehaviour { private InputDevice oculusController; private bool primaryButtonPressed = false; [SerializeField] private GameObject Pantallas; void Start() { // Get the input device for the Right hand oculusController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand); } void Update() { // Check if the primary button A is pressed if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool primaryButtonValue) && primaryButtonValue && !primaryButtonPressed) { primaryButtonPressed = true; Debug.Log("button pressed"); Pantallas.SetActive(true); } // Check if the primary button A is released if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool newPrimaryButtonValue) && !newPrimaryButtonValue && primaryButtonPressed) { primaryButtonPressed = false; Debug.Log("button released"); Pantallas.SetActive(false); } } }
Poner y quitas con un click:
using UnityEngine; using UnityEngine.XR; using TMPro; public class Botones : MonoBehaviour { private InputDevice oculusController; private bool primaryButtonPressed = false; [SerializeField] private GameObject Pantallas; int i=0; void Start() { // Get the input device for the Right hand oculusController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand); } void Update() { // Check if the primary button A is pressed if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool primaryButtonValue) && primaryButtonValue && !primaryButtonPressed) { primaryButtonPressed = true; Debug.Log("button pressed"); Pantallas.SetActive(true); } // Check if the primary button A is released if (oculusController.TryGetFeatureValue(CommonUsages.primaryButton, out bool newPrimaryButtonValue) && !newPrimaryButtonValue && primaryButtonPressed) { primaryButtonPressed = false; Debug.Log("button released"); if ( i==0) { i=1; } else { Pantallas.SetActive(false); i=0; } } } }
Speech to Text
Instalación de Speech to text. Asset de unityStore que cuesta 49.89€ (no es dinero)
https://assetstore.unity.com/packages/tools/audio/speech-recognition-system-187171
Descargamos el modelo de lenguaje “Spanish” está en el fichero de documentación y es un enlace a Google Drive (*investigar para conseguir el original que creo que es de Apache*)
Copiamos el directorio en Assets/StreamingAssets/SpeechRecognitionSystem/model/spanish
Nos aparece en nuestros assets como “Speech Recognition System”
Creamos dos GameObjects:
Reconocimiento Microfono
Y les asignamos los scripts: “SpeechRecognizer” y “Audio recorder”
Reconocimiento -> Script "SpeechRecognizer" Microfono -> Script "Audio recorder"
Configuramos así el script AudioRecorder: le asignamos el GameObject de Reconocimiento y seleccionamos la función “SpeechRecognizer.OnDataProviderReady”
En el GameObject de Reconocimiento, cambiamos en el Script el modelo a Spanish y que la salida sea la pantalla de Entrada.
Openai
Instalación
Instalamos el Asset de openai desde el repositorio de GIT. Vamos a “Window > Package Manager” y pulsamos en el + y seleccionamos “Add Package from git URL…”
Introducimos la URL que es:
https://github.com/srcnalt/OpenAI-Unity.git
A la derecha importamos los ejemplos:
Nos aparecerá en “Samples > OpenAI Unity > 0.1.6 > ChatGPT” Aquí creamos un GameObject que se llame ChatGPT y añadimos el script y lo modificamos.
En la línea
private OpenAIApi openai = new OpenAIApi();
Introducimos nuestra API_KEY de openai:
private OpenAIApi openai = new OpenAIApi(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);