Underc0de

Programación Web => Back-end => Mensaje iniciado por: Alex en Noviembre 11, 2013, 03:20:24 PM

Título: Haciendo hablar a php :P
Publicado por: Alex en Noviembre 11, 2013, 03:20:24 PM
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:


[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 (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) [Seleccionar]

<?php

interface iComponentLoader
{
    static public function 
get_instance($component$id);
    static public function 
get_old_instance($component);
}

class 
ComponentLoader implements iComponentLoader
{
    static public 
$instances = array();  
    static public 
$error false;
    static public 
$emessage null;
    
    static public function 
get_instance($component$id)
    {
      
self::$instances[$component] = new COM($component.'.'.$id);
      if(!
self::$instances[$component])
      {
        
self::$error true;
        
self::$emessage 'Unable to instantiate Component '.$component;
        return 
false;
      } else { return 
self::$instances[$component]; }
    }
    
    static public function 
get_old_instance($component)
    {
      return 
self::$instances[$component];
    }

}

try
{
    
// starting SAPI
    
$speech ComponentLoader::get_instance('sapi''SpVoice');
    if(!
$speech) throw new exception(ComponentLoader::$emessage);
    
    
$speech->volume 100;
    
$speech->speak('hello my name is p.h.p. speaker');
    
    
//free the object
    
unset($speech);
} catch(
Exception $e) {
    echo 
$e->getMessage();
}


bueno espero que les parezca interesante escuchar hablar a php.

saludos!
Título: Re:Haciendo hablar a php :P
Publicado por: s3cur1tyr00t en Noviembre 11, 2013, 05:23:39 PM
Tiene una voz un poco maricona :P
Título: Re:Haciendo hablar a php :P
Publicado por: variux en Noviembre 11, 2013, 06:25:17 PM
Interesante, aquí es donde se nota la potencia que tiene PCM
Título: Re:Haciendo hablar a php :P
Publicado por: Cronos en Noviembre 12, 2013, 09:20:31 AM
Buenisimo! Esto me viene de pelo para un proyecto que tenia en mente :)
Saludos,, Cronos.-
Título: Re:Haciendo hablar a php :P
Publicado por: Alex en Noviembre 12, 2013, 05:52:17 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Tiene una voz un poco maricona :P

jajaja se puede cambiar llamando a la función de la librería para selección de voz, el problema es que lo tiene que tener instalado quien use el script.


Citar
Interesante, aquí es donde se nota la potencia que tiene PCM

nono, pcm está horientado a hacer componentes en php, en cambio éste código hace uso de componentes hechos, usando el control nativo de php, y puedo entonces usar una dll.

saludos!