Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using IBM.Watson.DeveloperCloud.Connection;
- using IBM.Watson.DeveloperCloud.Logging;
- using IBM.Watson.DeveloperCloud.Services.TextToSpeech.v1;
- using IBM.Watson.DeveloperCloud.Utilities;
- using FullSerializer;
- public class DemoiAWatson_VCAP : MonoBehaviour
- {
- //Declaracion de variables para uso del dialogo contenido del texto
- public string Dialogo;
- //Declaracion de variable a partir de la clase "TextToSpeech" del paquete IBM Watson
- TextToSpeech _tTS;
- //Declaracion de clase tipo credencial para configurar nuestro acceso
- Credential _cU;
- Credentials _cUTS;
- VcapCredentials _vCAPCU;
- //Serializar objetos JSON
- fsSerializer _s;
- //Objeto que contiene el componente audiosource
- private GameObject _gO;
- private AudioSource _aS;
- //nombre usuario IBM
- private string _nU;
- //password usuario IBM
- private string _pU;
- //url servicio IBM
- private string _uU;
- //variable para definir un comportamiento de validacion de credenciales en una funcion adyacente
- public bool _tS;
- //Instancia de funcion de serializado fsData para obtener JSON
- fsData _d;
- //Instancia de funcion de serializado fsResult para serializar JSON
- fsResult _r;
- //Funcion de inicio
- private void Start()
- {
- //Ejecucion de funcion ienumerator
- EsperaSimpleGet();
- }
- //Declaratoria de funcion de inicio de variables VCAP para autenticacion de servicio en Watson
- private void VariablesVCAP()
- {
- //Declaramos inicialmente el serializador
- _s = new fsSerializer();
- //Obtener componente AudioSource
- _aS = _gO.GetComponent<AudioSource>();
- //nombre usuario
- _nU = "USUARIO_SERVICIO_IBM";
- //password
- _pU = "PASSWORD_SERVICIO_IBM";
- //url
- _uU = "URL_SERVICIO_IBM";
- }
- //Enumerator para definir validacion secuencial desde serializado de JSON (esto evita la confusion de variables y registro a la hora de validar el servicio con el proveedor)
- private IEnumerator EsperaSimpleGet()
- {
- //Empezamos llamando la funcion con el contenido de las variables
- VariablesVCAP();
- //Definimos una instancia de la variable con la funcion para validar las credenciales desde IBM
- _vCAPCU = new VcapCredentials();
- //Definimos variables de contenido de respuesta de JSON
- object _obj;
- string resultado;
- //Definimos instancias de las variables para validar las credenciales
- var _vcapURL = Environment.GetEnvironmentVariable("VCAP_URL");
- var _vcapUSER = Environment.GetEnvironmentVariable("VCAP_USERNAME");
- var _vcapPASS = Environment.GetEnvironmentVariable("VCAP_PASSWORD");
- //Usamos la directiva using para declarar una nueva peticion con SimpleGet usando nuestros valores previos
- using (SimpleGet SG = new SimpleGet(_vcapURL, _vcapUSER, _vcapPASS))
- {
- //Si la solicitud no esta completa no publicara el resultado hasta que sea completada
- while (!SG.IsComplete)
- yield return null;
- resultado = SG.Result;
- }
- //Obtener resultado para credenciales VCAP
- resultado = Utility.AddTopLevelObjectToJson(resultado, "VCAP_SERVICES");
- //Serializado de resultado
- _r = fsJsonParser.Parse(resultado, out _d);
- //Espera hasta que realize la tarea completa de lo contrario emite una excepcion de resultado
- if (!_r.Succeeded)
- throw new WatsonException(_r.FormattedMessages);
- //Nuestro OBJ es la instancia de la validacion de credenciales
- _obj = _vCAPCU;
- //Deserializamos el resultado JSON
- _r = _s.TryDeserialize(_d, _obj.GetType(), ref _obj);
- //Nuevamente definimos una espera hasta que concluya el procedimiento
- if (!_r.Succeeded)
- throw new WatsonException(_r.FormattedMessages);
- //Utilizamos los aprametros de autenticacion VCAP
- _cU = _vCAPCU.VCAP_SERVICES["text_to_speech"];
- _nU = _cU.Username.ToString();
- _pU = _cU.Password.ToString();
- _uU = _cU.Url.ToString();
- //Instanciamos esta nueva credencial
- _cUTS = new Credentials(_nU, _pU, _uU);
- //Definimos servicio de Watson a utilizar
- _tTS = new TextToSpeech(_cUTS);
- //Configuramos el tipo de voz para nuestro hablante
- _tTS.Voice = VoiceType.es_ES_Laura;
- //Configuramos el tipo de formato de respuesta
- _tTS.AudioFormat = AudioFormatType.FLAC;
- //Configuramos la instancia del texto a pronunciar
- _tTS.ToSpeech(ManejoDeEnunciados, EnFalla, Dialogo, true);
- //Espera hasta que concluya
- while (!_tS)
- yield return null;
- //Esta linea reproducira en consola el texto de prueba
- Debug.Log("Dialogo establecido");
- }
- //Manejo de reproducciones, generamos un diccionario con las oraciones a interpretar y reproducimos con la funcion Reproducir que es adicional en este script
- private void ManejoDeEnunciados(AudioClip clipo, Dictionary<string, object> CCD) { Reproducir(clipo); }
- //Manejo en caso de falla
- private void EnFalla(RESTConnector.Error err, Dictionary<string, object> CCD) { Log.Error("Tienes una falla en la configuracion de credenciales del sistema", "Error recibido: {0}", err.ToString()); }
- //Definicion de reproduccion junto con los parametros de configuracion del componente AudioClip
- private void Reproducir(AudioClip clipo)
- {
- if (Application.isPlaying && clipo != null)
- {
- _aS.spatialBlend = 0.0f;
- _aS.loop = false;
- _aS.clip = clipo;
- _aS.Play();
- _tS = true;
- }
- }
- }
Add Comment
Please, Sign In to add comment