Saltar al contenido

¿Cómo puedo ejecutar código MATLAB para el reconocimiento de palabras habladas aisladas desde PHP?

Te damos el hallazgo a esta cuestión, al menos eso esperamos. Si sigues con preguntas dínoslo, que para nosotros será un placer responderte

Solución:

Tienes algunas opciones aquí:

  • Si MATLAB está instalado en el servidor donde se implementaría la aplicación PHP (no en su entorno de desarrollo actual), puede invocarlo directamente como cualquier otro programa (matlab -r "...") usando lo que sea equivalente a EXECUTE comando en PHP. Aquí hay algunos recursos (asegúrese de consultar también las preguntas vinculadas):

    • Cómo llamar a MATLAB desde la línea de comandos e imprimir en stdout antes de salir
    • Ejecutando un archivo cmd sin que aparezca GUI
    • Parámetros de paso _ Script de shell – Script de octava

    Otros han comentado cómo pasar entrada / salida entre PHP y su script MATLAB. Por ejemplo, puede diseñar su función MATLAB para recibir la ruta del archivo WAV como entrada, procesarla y guardar cualquier imagen resultante en el disco:

    function myFunc(filename)
        [y,Fs] = audioread(filename);
        img = my_process_func(y, FS);
        imwrite(img, 'out.png');
    end
    

    Que se invoca desde PHP como:

    % Of course you have to make sure "myFunc" is available on the MATLAB path.
    % Think: "addpath(..)" or just "cd(..)" into the directory first
    matlab -wait -nodisplay -r "myFunc('audio.wav'); quit;"
    

    A continuación, puede leer la imagen de salida en la aplicación PHP.

  • Si no es así, ¿qué cajas de herramientas relacionadas con la implementación tiene disponibles? MATLAB Compiler y cajas de herramientas relacionadas como MATLAB Builder NE y MATLAB Builder JA.

    Esos compilarán su programa en un archivo ejecutable / .NET Assembly / JAR respectivamente, y todos ellos requieren que se instale el MCR Runtime disponible gratuitamente. En otras palabras, los ejecutables no necesitan tener una instalación completa de MATLAB en la máquina de destino, solo el tiempo de ejecución de MCR.

    Ejecutaría el ejecutable de la misma manera que antes.

    Otro producto es MATLAB Coder, que convierte su código MATLAB en un programa C ++. Cuando se compila, se puede ejecutar sin ningún requisito externo.

    Un nuevo producto de MathWorks es MATLAB Production Server. Personalmente no sé nada al respecto 🙂

  • Otra opción más es utilizar TCP / IP para comunicarse entre PHP y MATLAB. Un servidor se ejecutaría en el lado de MATLAB, utilizando la programación de socket escrita como archivo C MEX o una clase Java. Ver:

    • Biblioteca MATLAB Mex Socket Wrapper
    • Escribiendo pw.println () de Java, etc. en MATLAB

    El cliente es su aplicación PHP. La idea es tener MATLAB escuchando conexiones, leyendo cualquier entrada dada por un cliente, eval y devolver el resultado. Esto es más complicado que las otras opciones, ya que tiene que lidiar con la serialización y otras cosas como la concurrencia. La ventaja es que MATLAB se puede ejecutar en un servidor separado, incluso en varios servidores en la nube (consulte esta publicación).

Entonces, primero, decida qué enfoque se adapta mejor a su proyecto, luego será más fácil responder preguntas específicas … Siempre consulte primero la documentación, las cajas de herramientas de MATLAB están muy bien documentadas y generalmente incluyen muchos ejemplos. Aquí hay un par de recursos más específicos para la familia de productos MATLAB Compiler:

  • Seminario web: Implementación de aplicaciones con MATLAB
  • Archivo PDF: Implementación de aplicaciones MATLAB – Guía de ejemplo web

Tenga en cuenta que se concentran en aplicaciones ASP.NET y Java JSP / servlet. En su caso, la aplicación PHP se comunicaría con un nivel intermedio que ejecuta un servicio web creado con una de las dos opciones anteriores (o simplemente diseñe un sitio similar a CGI que ejecute ejecutables simples creados con el compilador MATLAB como se explicó anteriormente).

Para ayudar al OP con la ejecución de los comandos del sistema desde una página web de PHP, mi publicación aquí es relevante (se copia a continuación).

Hacemos exactamente esto todo el tiempo. Yo las llamo páginas vudú. Aquí hay un código de trabajo:


Y la salida a la página web servida:

13:40:19 up 22 days, 23:14,  0 users,  load average: 0.04, 0.02, 0.00

Y la nota adicional que agregué en los comentarios a continuación: Las rutas relativas vs absolutas pueden ser un dolor … $command podría necesitar ser /usr/bin/uptime u otro podría ser /usr/bin/ls /home/chris/ftp. Normalmente, el directorio de trabajo de los scripts es donde viven en el sistema de archivos. MATLAB es un programa de Windows, ¿no? Mi experiencia es que necesitará rutas absolutas para el programa y cualquier archivo que se pase como argumentos, ejemplo: $command="c:\matlab\matlab.exe c:\www\somefile.wav" Y luego se requieren comillas simples para nombres NTFS tontos, la finalización de la línea de comando TAB funciona bien para los ejemplos. O use el nombre 8.3 apropiado con ~ en él.

Mi respuesta estaría en dos partes:

  1. ¿Cómo ejecuto un script MATLAB desde la terminal? Daré un ejemplo sobre cómo ejecutar un script MATLAB desde la terminal:

    matlab -nojvm -nodesktop -r "run .m"
    matlab -nojvm -nodesktop -r ""
    matlab -nojvm -nodesktop -r "run /.m"
    

    matlab en Windows debe estar en la ruta de su entorno. Cómo.

    Si necesita compilar su script en Java:

    java -jar yourjarfile.jar
    
  2. ¿Cómo ejecuto el comando de terminal desde PHP? Creo que las respuestas anteriores son buenas y no es necesario repetirlas.

Más notas:

  1. Esté atento a su seguridad. Usted podría ser XSS‘ed fácilmente.
  2. Resuma su código y mejórelo para guardar parámetros y resultados en la base de datos. Ejecute su código en Parallels o en el gestor de colas. Puede crear un servicio REST.
  3. Prueba de unidad.
  4. Utilice Linux. Es mucho más poderoso.
¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *