Continuando con las aplicaciones de voz, ahora es el turno para Sphinx-4; un sistema de reconocimiento de voz escrito en el lenguaje Java, que reconoce palabras del ingles y el cual instalaremos en una maquina con Ubuntu Linux 8.10
Por ejemplo con wget
wget http://superb-east.dl.sourceforge.net/sourceforge/cmusphinx/sphinx4-1.0beta-bin.zip
Descomprimir el archivo
unzip sphinx4-1.0beta-bin.zip
Cambiar al directorio de sphinx
cd sphinx4-1.0beta
Instalar el Java Speech API
Cambiar el directorio a lib
cd lib
Instalar JSAPI
sh jsapi.sh
Aceptar la licencia pulsando y
Cambiar de directorio
cd ..
Ejecutar uno de los demos, por ejemplo los digitos;
En este momento necesita un microfono habilitado y decir los numero en ingles :
java -jar bin/HelloDigits.jar
Para comenzar a desarrollar una aplicacion en Java que soporte sintesis de voz (convertir texto en voz), debemos comenzar por instalar el FreeTTS. Cabe recordar que esta aplicacion solo da soporte para voces en ingles.
Prerequisitos :
Tener instalado un JDK, por ejemplo el 6, si no lo tiene ejecutar
sudo apt-get install sun-java6-jdk
FreeTTS es un sistema de sistesis de voz (aplicacion que convierte texto en voz) escrito totalmente en Java. Esta basado en Flite: una aplicacion de sintesis de voz desarrollada en la universidad de Carnegie Mellon University. Flite a su vez se deriva del sistema de sintesis de voz Festival de la universidad de Edinburgh y del proyecto FestVox de la universidad Carnegie Mellon University.
La version actual de FreeTTS incluye las siguientes caracteristicas :
Es posible utilizar diferentes emuladores para ejecutar las aplicaciones, esto es importante en el momento de realizar pruebas, para verificar que nuestra aplicacion si se ejecuta bien en los diferentes tamaños de pantalla.
Para ejecutar el Emulador con un skin diferente, ejecute el comando :
emulator -skin <SkinID>
Donde SkinID, puede ser HVGA-L, HVGA-P, QVGA-L, QVGA-P
Una de las cosas que tenia pendientes por hacer es inatalar el SDK de Android para probar algunas aplicaciones de codigo abierto que he encontrado por ahi, asi que mi necesidad no es la de desarrollar una gran aplicacion si no poder crear aplicaciones desde consola utilizando ant y ejecutarlas en el emulador de Android, asi que aqui estan las instrucciones.
Requisitos :
Tener instalado un JDK, por ejemplo el 6, si no lo tiene ejecutar
sudo apt-get install sun-java6-jdk
Tener instalado Ant, si no lo tiene ejecutar
sudo apt-get install ant
Bajar la ultima version para Linux, por ejemplo :
wget http://dl.google.com/android/android-sdk-linux_x86-1.0_r2.zip
Descomprimir el archivo, esto crea el directorio android-sdk-linux_x86-1.0_r2
unzip android-sdk-linux_x86-1.0_r2.zip
Adicionar las herramientas al PATH, esto puede hacerlo en el directorio ~/.bashrc
PATH=$PATH:<ruta>/android-sdk-linux_x86-1.0_r2/tools
Crear el Hola Mundo :
Abrir una consola
Ir al directorio donde se quiere crear la aplicacion
Crear la aplicacion (pide por lo menos dos paquetes, en este caso hello.android)
activitycreator --out HelloAndroid hello.android.HelloAndroid
Esto crea el directorio HelloAndroid
Cambiar al directorio HelloAndroid
cd HelloAndroid
Compilar la aplicacion utilizando ant
ant
Ejecutar la aplicacion :
Ejecutar el emulador de Android, esto puede demorar un poquito,
espera hasta ver el menu de aplicaciones
emulator &
Continuan las pruebas de reacTIVision, ahora con los marcadores impresos en hojas de papel, una camara web Genius Slim 1322AF y el software ejecutandose sobre plataforma Windows, debido a que la camara no me funciona en Ubuntu Linux. Se utilizo el mismo programa que se desarrollo anteriormente, solo se utilizaron versiones de los programas Processing, reacTIVision para la plataforma Windows.
Desde hace algunos meses estoy pensando seriamente en adquirir un Lego Mindstorms, pero recesion economia no me ha dejado, afortunadamente Sebastian Valencia tiene uno el cualquiere poner a trabajar con Java, por tal motivo es mi oportunidad de comenzar a cacharriar.
Pasos para la instalacion de LeJOS NXJ en Ubuntu 8.10 :
Despues de hacer algunas pruebas tuve que compilar de nuevo la distribucion de LeJOS, asi :
Instalar el ANT, librerias de desarrollo para bluetooth y usb
sudo apt-get install ant
sudo apt-get install libbluetooth-dev
sudo apt-get install libusb-dev
Cambiar al directorio build
cd build
Compilar el software
ant
Si la conexion con BlueCove falla debemos utilizar el driver de conexion con BlueZ asi :
Ir al directorio bin del lejos_nxj
cd bin
Crear el archivo nxj.properties y colocar la siguiente linea :
NXTCommBluetooth=lejos.pc.comm.NXTCommBluez
Nota :
Se debe ejecutar la instruccion . env.sh antes de comenzar a trabajar con leJOS
Las variables de ambiente pueden ser colocadas dentro del archivo ~/.bashrc para evitar esto
Si no se tiene permisos sobre el USB o el Bluetooth, se puede ejecutar como root abriendo una consola con el comando sudo -s
LeJOS es una pequeña JVM (maquina virtual para Java) que permite ejecutar codigo Java dentro del ladrillo cerebro del Lego Mindstorm. Esta implementacion de Java nacio producto de TinyVM una maquina diseñada para ejecutar codigo en la version RCX, que luego se convirtio en LeJOS. Adicional a la maquina virtual se cuenta con una API que implementa el nucleo de clases en Java, algunas de J2ME y otras adicionales para la comunicacion a traves de Bluetooth, acceso a GPS y sensores y actuadores.
La version para el NXT llamada lejosNXJ cuenta con :
Soporte para programacion orientada a objetos.
Multitarea
Arreglos multidimensionales
Recursion
Sincronizacion
Excepciones
Tipos de data Java como String, int y float
La mayoria de clases de los paquetes java.lang, java.io, java.util
Un API para robots
Tambien cuenta con herramientas para subir el codigo al ladrillo.
Continuando con los desarrollos relacionados con reacTIVision, el siguiente paso es realizar pruebas utilizando una camara web y la aplicacion reacTIVision, pero para poder hacer esto debemos primero imprimir los marcadores que vamos a utilizar.
Existen tres diferentes tipos de marcadores o fiducials que pueden ser utilizados con el software reacTIVision, el amoeba, el classic y el dtouch, cada tipo posee un conjunto de elementos finito y de diferentes caracteristicas de forma y construccion; por ejemplo el conjunto dtouch utiliza un conjunto de cuatro zonas en la cuales estan marcados puntos y lineas, mientras el classic utiliza seis zonas y el amoeba tiene una construccion mas natural utilizando circulos.
Conjunto de Simbolos :
Amoeba
90 marcadores blaco sobre negro o negro sobre blanco
Classic
120 marcadores
dtouch
24 marcadores
Estos simbolos se pueden encontrar en el directorio symbols de la distribucion de reacTIVision, en nuestro caso utilizaremos los marcadores de amoeba, que son muy llamativos por su forma y son los mas utilizados, para ello abrimos el PDF que contiene los simbolos e imprimimos una o mas pagina, recortamos los simbolos y estamos listos para comenzar a probar. Si se quieren que los marcadores tengan mas duracion y resistan un uso continuo se puede utilizar carton para fijarlos, contact transparente para forralos o fijarlos a fichas, objetos, entre otros. Por el momento utilizaremos las hojas. En proximas pruebas se utilizaran diferentes tamaños de marcador para identificar posibles tamaños de los objetos a utilizar dentro de los proyectos.
Nota :
La licencia de uso de los simbolos esta permitida solo si se utiliza con el software reacTIVision, si es utilizado por otras aplicaciones se debe solicitar una licencia de uso diferente.
Es importante identificar el id del marcador el cual esta a un lado de este cuando lo imprimimos, este identificador es que se utiliza para realizar el seguimiento desde la aplicacion.