Guest User

Untitled

a guest
Jun 18th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.69 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using IBM.Watson.DeveloperCloud.Connection;
  6. using IBM.Watson.DeveloperCloud.Logging;
  7. using IBM.Watson.DeveloperCloud.Services.TextToSpeech.v1;
  8. using IBM.Watson.DeveloperCloud.Utilities;
  9. using FullSerializer;
  10.  
  11. public class DemoiAWatson_VCAP : MonoBehaviour
  12. {
  13. //Declaracion de variables para uso del dialogo contenido del texto
  14. public string Dialogo;
  15. //Declaracion de variable a partir de la clase "TextToSpeech" del paquete IBM Watson
  16. TextToSpeech _tTS;
  17. //Declaracion de clase tipo credencial para configurar nuestro acceso
  18. Credential _cU;
  19. Credentials _cUTS;
  20. VcapCredentials _vCAPCU;
  21. //Serializar objetos JSON
  22. fsSerializer _s;
  23. //Objeto que contiene el componente audiosource
  24. private GameObject _gO;
  25. private AudioSource _aS;
  26. //nombre usuario IBM
  27. private string _nU;
  28. //password usuario IBM
  29. private string _pU;
  30. //url servicio IBM
  31. private string _uU;
  32. //variable para definir un comportamiento de validacion de credenciales en una funcion adyacente
  33. public bool _tS;
  34. //Instancia de funcion de serializado fsData para obtener JSON
  35. fsData _d;
  36. //Instancia de funcion de serializado fsResult para serializar JSON
  37. fsResult _r;
  38. //Funcion de inicio
  39. private void Start()
  40. {
  41. //Ejecucion de funcion ienumerator
  42. EsperaSimpleGet();
  43. }
  44. //Declaratoria de funcion de inicio de variables VCAP para autenticacion de servicio en Watson
  45. private void VariablesVCAP()
  46. {
  47. //Declaramos inicialmente el serializador
  48. _s = new fsSerializer();
  49. //Obtener componente AudioSource
  50. _aS = _gO.GetComponent<AudioSource>();
  51. //nombre usuario
  52. _nU = "USUARIO_SERVICIO_IBM";
  53. //password
  54. _pU = "PASSWORD_SERVICIO_IBM";
  55. //url
  56. _uU = "URL_SERVICIO_IBM";
  57. }
  58. //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)
  59. private IEnumerator EsperaSimpleGet()
  60. {
  61. //Empezamos llamando la funcion con el contenido de las variables
  62. VariablesVCAP();
  63. //Definimos una instancia de la variable con la funcion para validar las credenciales desde IBM
  64. _vCAPCU = new VcapCredentials();
  65. //Definimos variables de contenido de respuesta de JSON
  66. object _obj;
  67. string resultado;
  68. //Definimos instancias de las variables para validar las credenciales
  69. var _vcapURL = Environment.GetEnvironmentVariable("VCAP_URL");
  70. var _vcapUSER = Environment.GetEnvironmentVariable("VCAP_USERNAME");
  71. var _vcapPASS = Environment.GetEnvironmentVariable("VCAP_PASSWORD");
  72. //Usamos la directiva using para declarar una nueva peticion con SimpleGet usando nuestros valores previos
  73. using (SimpleGet SG = new SimpleGet(_vcapURL, _vcapUSER, _vcapPASS))
  74. {
  75. //Si la solicitud no esta completa no publicara el resultado hasta que sea completada
  76. while (!SG.IsComplete)
  77. yield return null;
  78.  
  79. resultado = SG.Result;
  80. }
  81. //Obtener resultado para credenciales VCAP
  82. resultado = Utility.AddTopLevelObjectToJson(resultado, "VCAP_SERVICES");
  83. //Serializado de resultado
  84. _r = fsJsonParser.Parse(resultado, out _d);
  85. //Espera hasta que realize la tarea completa de lo contrario emite una excepcion de resultado
  86. if (!_r.Succeeded)
  87. throw new WatsonException(_r.FormattedMessages);
  88. //Nuestro OBJ es la instancia de la validacion de credenciales
  89. _obj = _vCAPCU;
  90. //Deserializamos el resultado JSON
  91. _r = _s.TryDeserialize(_d, _obj.GetType(), ref _obj);
  92. //Nuevamente definimos una espera hasta que concluya el procedimiento
  93. if (!_r.Succeeded)
  94. throw new WatsonException(_r.FormattedMessages);
  95. //Utilizamos los aprametros de autenticacion VCAP
  96. _cU = _vCAPCU.VCAP_SERVICES["text_to_speech"];
  97. _nU = _cU.Username.ToString();
  98. _pU = _cU.Password.ToString();
  99. _uU = _cU.Url.ToString();
  100. //Instanciamos esta nueva credencial
  101. _cUTS = new Credentials(_nU, _pU, _uU);
  102. //Definimos servicio de Watson a utilizar
  103. _tTS = new TextToSpeech(_cUTS);
  104. //Configuramos el tipo de voz para nuestro hablante
  105. _tTS.Voice = VoiceType.es_ES_Laura;
  106. //Configuramos el tipo de formato de respuesta
  107. _tTS.AudioFormat = AudioFormatType.FLAC;
  108. //Configuramos la instancia del texto a pronunciar
  109. _tTS.ToSpeech(ManejoDeEnunciados, EnFalla, Dialogo, true);
  110. //Espera hasta que concluya
  111. while (!_tS)
  112. yield return null;
  113. //Esta linea reproducira en consola el texto de prueba
  114. Debug.Log("Dialogo establecido");
  115. }
  116. //Manejo de reproducciones, generamos un diccionario con las oraciones a interpretar y reproducimos con la funcion Reproducir que es adicional en este script
  117. private void ManejoDeEnunciados(AudioClip clipo, Dictionary<string, object> CCD) { Reproducir(clipo); }
  118. //Manejo en caso de falla
  119. 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()); }
  120. //Definicion de reproduccion junto con los parametros de configuracion del componente AudioClip
  121. private void Reproducir(AudioClip clipo)
  122. {
  123. if (Application.isPlaying && clipo != null)
  124. {
  125. _aS.spatialBlend = 0.0f;
  126. _aS.loop = false;
  127. _aS.clip = clipo;
  128. _aS.Play();
  129. _tS = true;
  130. }
  131. }
  132. }
Add Comment
Please, Sign In to add comment