lunes, 11 de noviembre de 2013

El objetivo de este código es hacer "hablar a la computadora un texto", y que se escuche con un sintetizador.

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!