miércoles, 27 de noviembre de 2013

Esto ya lo había publicado como hace un mes, pero nunca lo puse en el blog asique aquí está.



El objetivo de este código es hacer "hablar a la computadora un texto", y que se escuche con un sintetizador. Es decir para todos los fanáticos de loquendo y textSpeech (escribir un texto y que la pc lo hable) acá tenemos mi código en php con su voz marica, que dice lo que ponemos en una variable.

Hoy estaba haciendo unas pruebas con Component Object Model Class de php, que te permite instanciar un ActiveX como lo podría llegar a hacer por ejemplo Visual Basic Script, para probar su correcto funcionamiento decidí probar algo más que el ejemplo de la documentación de php que manipula word.

Primero que nada para habilitar PHP COM, deben escribir al final del php.ini las siguientes dos lineas:


Código: [Seleccionar]
[COM_DOT_NET]
extension=php_com_dotnet.dll 

luego para probarlo usé el componente de microsoft speech (SpeechAPI o más conocido como SAPI).-

http://www.microsoft.com/en-us/download/details.aspx?id=24974

y ahora el código php para php_cli (command line interface, o para php ejecutado desde terminal o cmd)

Código: PHP
  1. <?php
  2. interface iComponentLoader
  3. {
  4.     static public function get_instance($component, $id);
  5.     static public function get_old_instance($component);
  6. }
  7. class ComponentLoader implements iComponentLoader
  8. {
  9.     static public $instances = array();  
  10.     static public $error = false;
  11.     static public $emessage = null;
  12.    
  13.     static public function get_instance($component, $id)
  14.     {
  15.       self::$instances[$component] = new COM($component.'.'.$id);
  16.       if(!self::$instances[$component])
  17.       {
  18.         self::$error = true;
  19.         self::$emessage = 'Unable to instantiate Component '.$component;
  20.         return false;
  21.       } else { return self::$instances[$component]; }
  22.     }
  23.    
  24.     static public function get_old_instance($component)
  25.     {
  26.       return self::$instances[$component];
  27.     }
  28. }
  29. try
  30. {
  31.     // starting SAPI
  32.     $speech = ComponentLoader::get_instance('sapi', 'SpVoice');
  33.     if(!$speech) throw new exception(ComponentLoader::$emessage);
  34.    
  35.     $speech->volume = 100;
  36.     $speech->speak('hello my name is p.h.p. speaker');
  37.    
  38.     //free the object
  39.     unset($speech);
  40. } catch(Exception $e) {
  41.     echo $e->getMessage();
  42. }

bueno espero que les parezca interesante escuchar hablar a php.

saludos!

0 comentarios:

Publicar un comentario

Subscribete al RSS Follow me on Twitter!