informatica:realidad_virtual:unity:openai
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatica:realidad_virtual:unity:openai [2023/02/22 16:38] – jose | informatica:realidad_virtual:unity:openai [2023/03/03 22:29] (current) – jose | ||
---|---|---|---|
Line 111: | Line 111: | ||
Instalación de Speech to text. Asset de unityStore que cuesta 49.89€ (no es dinero)\\ | Instalación de Speech to text. Asset de unityStore que cuesta 49.89€ (no es dinero)\\ | ||
https:// | https:// | ||
+ | |||
+ | Lo importamos, se llama: " | ||
+ | {{: | ||
Descargamos el modelo de lenguaje " | Descargamos el modelo de lenguaje " | ||
+ | |||
+ | https:// | ||
Copiamos el directorio en Assets/ | Copiamos el directorio en Assets/ | ||
- | |||
- | |||
- | Nos aparece en nuestros assets como " | ||
Creamos dos GameObjects: | Creamos dos GameObjects: | ||
Reconocimiento | Reconocimiento | ||
Microfono | Microfono | ||
- | Y les asignamos los scripts: " | + | Y les asignamos los scripts: " |
Reconocimiento -> Script " | Reconocimiento -> Script " | ||
Microfono -> Script "Audio recorder" | Microfono -> Script "Audio recorder" | ||
Line 130: | Line 132: | ||
{{: | {{: | ||
- | En el GameObject de Reconocimiento, | + | Lo cambiamos en el script: |
+ | public string LanguageModelDirPath = " | ||
+ | Y por si acaso también en Unity, en el GameObject de Reconocimiento, | ||
{{: | {{: | ||
Line 155: | Line 159: | ||
private OpenAIApi openai = new OpenAIApi(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); | private OpenAIApi openai = new OpenAIApi(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); | ||
+ | El script de OpenAi es una pantalla con un prompt abajo y la tecla de enviar. Lo cambiamos simplemente por dos pantallas, entrada y salida\\ | ||
+ | Añadimos que use la biblioteca de TextMeshPro | ||
+ | using TMPro; | ||
+ | Cambiamos también las variables de entrada: | ||
+ | [SerializeField] private InputField inputField; | ||
+ | [SerializeField] private Button button; | ||
+ | [SerializeField] private Text textArea; | ||
+ | Por estas. | ||
+ | [SerializeField] private TextMeshPro inputField; | ||
+ | [SerializeField] private TextMeshPro textArea; | ||
+ | |||
+ | Quitamos las referencias a button, ya que llamaremos a OpenAI desde el reconocimiento de voz: | ||
+ | < | ||
+ | private void Start() | ||
+ | { | ||
+ | // | ||
+ | } | ||
+ | </ | ||
+ | // | ||
+ | |||
+ | |||
+ | // | ||
+ | |||
+ | Ahora añadimos las pantallas al Script de OpenAI | ||
+ | {{: | ||
+ | |||
+ | Ahora nos faltaría añadir que cuando acabe de escuchar el texto, haga la llamada a OpenAI. | ||
+ | |||
+ | Vamos al Script de " | ||
+ | |||
+ | [SerializeField] private GameObject scriptopenai; | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Ahora vamos donde detecta que hemos dejado de hablar, es en la línea: | ||
+ | < | ||
+ | if ( _recognitionFinalResultsQueue.TryDequeue( out string result ) ) { | ||
+ | if ( result != string.Empty ) | ||
+ | ResultReceived? | ||
+ | } | ||
+ | </ | ||
+ | Y añadimos la llamada a Sendreply: | ||
+ | |||
+ | ====== Text to Speech ====== | ||
+ | Facturación de Google:\\ | ||
+ | https:// | ||
+ | |||
+ | Usamos el Asset "Text to Speech using Google Cloud" que vale 4.98€:\\ | ||
+ | https:// | ||
+ | |||
+ | Se añade el Asset en Unity: | ||
+ | {{: | ||
+ | |||
+ | Añadimos un Gameobject que se llame TextToSpeech. Le añadimos 3 componentes, | ||
+ | GoogleTextToSpeech > Scripts > TextToSpeech (para la API) | ||
+ | GoogleTextToSpeech > Scripts > Example > TextToSpeechExample (para la configuración) | ||
+ | |||
+ | Cambiamos la línea del script TextToSpeechExample de TextMeshPro a TextMeshPro | ||
+ | [SerializeField] private TextMeshPro inputField; | ||
+ | |||
+ | Añadimos los siguientes campos en el GameObject TextToSpeech: | ||
+ | |||
+ | Voice: es-ES-Standard-B | ||
+ | Text To Speech: (arrastramos el Gameobject TextToSpeech) | ||
+ | Audio Source: (arrastramos el Gameobject TextToSpeech y quitamos Play On Awake) | ||
+ | Input Field: (arrastramos la salida de Openai, que es el GameObject Pantalla Salida) | ||
+ | Quedaría mas o menos así: | ||
+ | {{: | ||
+ | |||
+ | Ahora hacemos que cuando acabe la llamada a openAI, llame a TextToSpeech. En el script ChatGPT.cs añadimos estas líneas para poder llamar al método PressBtn() que es el que lanza TextToSpeech desde otro script: | ||
+ | using GoogleTextToSpeech.Scripts.Example; | ||
+ | [SerializeField] private TextToSpeechExample textToSpeechExample ; | ||
+ | Ahora al final del SendReply() añadimos: | ||
+ | textToSpeechExample.PressBtn(); | ||
+ | | ||
+ | Ahora señalamos el gameObject chatGPT y arrastramos el gameObject TextToSpeech dentro de: "Text To Speech Example" | ||
+ | {{: |
informatica/realidad_virtual/unity/openai.1677083934.txt.gz · Last modified: 2023/02/22 16:38 by jose