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:51] – [Openai] 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 " | ||
- | Copiamos el directorio en Assets/StreamingAssets/SpeechRecognitionSystem/model/spanish | + | https://drive.google.com/file/d/ |
+ | 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 179: | Line 183: | ||
Ahora añadimos las pantallas al Script de OpenAI | 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.1677084676.txt.gz · Last modified: 2023/02/22 16:51 by jose