User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO]

Fri Sep 02, 2016 12:49 pm

Actualizado a 08/10/2016 Funciona en cualquier Raspberry 100%

Llevo un tiempo trasteando con Julius y ahora que tengo algo de experiencia, voy a crear un manual para que todo el mundo pueda probar esta increíble aplicación, que nos brinda la oportunidad de usar el reconocimiento por voz, puedo decir que funciona mas rápido que el reconocimiento de Google API, ya que no necesita de una conexión a Internet, trabaja localmente lo que lo hace mucho mas rápido, en mi caso el acierto de las palabras es muy alto, de todas formas eso depende mas del modelo que se usa que de Julius.

Aquí dejo un video de ejemplo donde se puede ver que según le das la orden la ejecuta, no tarda ni un segundo es casi inmediata la respuesta.

Julius en Raspberry pi2

Para asegurarme de que todo os va a funcionar he descargado la imagen “Raspbian Jessie Lite”
la he puesto en una tarjeta microSD y desde una instalación nueva he empezado el manual, así que puedo asegurar que la instalación funcionara en cualquier raspberry pi2

Lo primero es instalar un paquete: (En otros sitios nos mandan instalar un montón pero realmente solo es este)

Code: Select all

sudo apt install libasound2-dev
De lo contrario al compilar nos dará este error:

Code: Select all

configure: error: no ALSA header!
configure: error: ./configure failed for libsent
Seguimos vamos a descargar Julius desde una fuente segura y actualizada por el Dr. Akinobu Lee que es el creador y quien mantiene la aplicación de Julius en github, yo mismo estuve ayudando con lo poco que se para testear Julius para que funcione en raspberry correctamente. Así que puedo asegurar que esta es la fuente mas adecuada para la descarga e instalación de Julius en su ultima versión.

Code: Select all

wget https://github.com/julius-speech/julius/archive/master.zip
Vamos a renombrar la descarga para que sea mas fácil reconocer el directorio.

Code: Select all

mv master.zip julius-master.zip
Descomprime el archivo:

Code: Select all

unzip julius-master.zip
Entramos en el directorio:

Code: Select all

cd julius-master
Ahora compilamos e instalamos siguiendo estos comandos:

Code: Select all

sudo ./configure --with-mictype=alsa
sudo make 
sudo make install
Bien vamos a comprobar que todo va bien lanzando a Julius simplemente escribe:

Code: Select all

julius
Si la salida que da el terminal es como esta todo va perfectamente:

Code: Select all

[email protected]:~/julius-master $ julius
Julius rev.4.4.2 - based on 
JuliusLib rev.4.4.2 (fast)  built for armv7l-unknown-linux-gnueabi

Copyright (c) 1991-2016 Kawahara Lab., Kyoto University
Copyright (c) 1997-2000 Information-technology Promotion Agency, Japan
Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
Copyright (c) 2005-2016 Julius project team, Nagoya Institute of Technology

Try '-setting' for built-in engine configuration.
Try '-help' for run time options.
Bien seguimos, lo siguiente se puede hacer de varias maneras con alsamixer, o a base de comandos que es mi forma preferida, vamos a ver si raspberry detecta nuestro micrófono en este caso uno USB usamos el comando: lsusb

Code: Select all

[email protected]:~/julius-master $ lsusb
Bus 001 Device 005: ID 248a:8566  
Bus 001 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Como se aprecia en Device 004 lo detecta así que seguimos. Ahora Comprobamos el número de tarjeta y el número de dispositivo con: arecord -l

Code: Select all

[email protected]:~/julius-master $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
En la segunda linea vemos que nos dice card 1… device 0 que es lo que nos interesa.

Para configurar la tarjeta que usamos escribe el comando: amixer sget Mic -c 1

Code: Select all

[email protected]:~/julius-master $ amixer sget Mic -c 1
Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 16
  Mono: Capture 0 [0%] [0.00dB] [on]
Para ajustar el volumen del micrófono al 100% escribe: amixer sset Mic 16 -c 1

Code: Select all

[email protected]:~/julius-master $ amixer sset Mic 16 -c 1
Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 16
  Mono: Capture 16 [100%] [23.81dB] [on]
Julius necesita una variable de entorno, llamada ALSADEV, para decirle que dispositivo se utilizará para el micrófono, escribe los comandos uno a uno.

Code: Select all

export ALSADEV="plughw:1,0"
echo $ ALSADEV
Ahora vamos a probar Julius, lo primero es salir del directorio en el que estamos julius-master porque no queremos meter nada más en el, vamos un directorio para atrás:

Code: Select all

cd ../
En /home/pi creamos un directorio para descargar de voxforge el paquete Quickstart-Linux. Pero vamos a asegurarnos primero que estamos donde queremos con pwd “print working directory” en castellano = imprimir el directorio en el que estoy trabajando.

Code: Select all

[email protected]:~ $ pwd
/home/pi
Bien seguro de donde estamos creamos el directorio nuevo.

Code: Select all

mkdir Quickstart-Linux
Si quieres revisar que se creo correctamente: ls

Code: Select all

[email protected]:~ $ ls
julius-master  Quickstart-Linux
Bueno vamos a entrar en el directorio Quickstart-Linux y a descargar lo necesario.

Code: Select all

cd Quickstart-Linux
Descargamos de voxforge el paquete Julius-4.3.1-Quickstart-Linux_(0.9.0).tgz para probar la instalación y el reconocimiento.

Code: Select all

wget http://www.repository.voxforge1.org/downloads/Main/Tags/Releases/0.9.0/Julius-4.3.1-Quickstart-Linux_\(0.9.0\).tgz
Descomprime el contenido:

Code: Select all

tar -xvzf Julius-4.3.1-Quickstart-Linux_\(0.9.0\).tgz
Puede que de un par de errores sin importancia, ya que algún despistado puso en el nombre del archivo los paréntesis (0.9.0).tgz pero se arregla con la barra invertida cualquiera que sepa programar lo entenderá mejor total que ni caso a estos errores:

tar: julius: Cannot open: File exists
tar: Exiting with failure status due to previous errors

Descomprime bien todo, solo que nos da esos avisos, así que ni caso listamos los archivos que hemos obtenido con ls -la

Code: Select all

[email protected]:~/Quickstart-Linux $ ls -la
acoustic_model_files  
GRAMMAR_NOTES                             
LICENSE
etc                   
julius                                     
README
grammar               
Julius-4.3.1-Quickstart-Linux_(0.9.0).tgz  
Sample.jconf
El que nos interesa es Sample.jconf vamos a ejecutarlo para poder probar julius.

Code: Select all

julius -input mic -C Sample.jconf
Después de toda la info que suelta, veremos el preciado:

Code: Select all

<<< please speak >>>  
Y ya puedes hablar con tu raspberry dentro del directorio grammar puedes consultar sample.dict y sample.voca para ver las palabras que puedes usar.

En este caso podemos usar estas palabras para el reconocimiento:

% NS_B
<s> sil

% NS_E
</s> sil

% CALL
PHONE f ow n
CALL k ao l

% DIAL
DIAL d ay ah l

% NAME
STEVE s t iy v
YOUNG y ah ng
BOB b aa b
JOHNSTON jh aa n s t ah n
JOHN jh aa n
JORDAN jh ao r d ah n
JOE jh ow

% DIGIT
FIVE f ay v
FOUR f ao r
NINE n ay n
EIGHT ey t
OH ow
ONE w ah n
SEVEN s eh v ah n
SIX s ih k s
THREE th r iy
TWO t uw
ZERO z iy r ow

Por alguna razón si reinicias tu raspberry tienes que volver a lanzar este comando:

Code: Select all

export ALSADEV="plughw:1,0"
Antes de iniciar julius o nos dará este error:

Code: Select all

### read waveform input
Error: adin_alsa: cannot open PCM device "default" (No such file or directory)
failed to begin input stream
Como Manejar Rhythmbox el reproductor de música con la voz

Seguimos ahora vamos a manejar Rhythmbox el reproductor de música con la voz para esto vamos a descargar un ejemplo que hay hecho para no mezclar las cosas vamos a crear un directorio de trabajo.

Code: Select all

mkdir reproductor 
Entramos en el:

Code: Select all

cd reproductor 
Y descargamos el ejemplo desde aquí:

Code: Select all

wget http://es.archive.ubuntu.com/ubuntu/pool/universe/j/julius-voxforge/julius-voxforge_0.1.1~daily20130206-0ubuntu1_all.deb
Instalamos:

Code: Select all

sudo dpkg --install julius-voxforge_0.1.1~daily20130206-0ubuntu1_all.deb
Borramos la descarga:

Code: Select all

rm julius-voxforge_0.1.1~daily20130206-0ubuntu1_all.deb
Bien ahora vamos a coger todo lo que necesitamos copiamos primero el archivo de configuración.

Code: Select all

cp /usr/share/doc/julius-voxforge/examples/julian.jconf.gz ./
Lo desempaquetamos:

Code: Select all

gunzip julian.jconf.gz
Ahora los archivos de gramática y la aplicación en python:

Code: Select all

cp /usr/share/doc/julius-voxforge/examples/controlapp/mediaplayer* ./
cp /usr/share/doc/julius-voxforge/examples/controlapp/command.py ./
Ahora tenemos 4 archivos en el directorio reproductor:

command.py = Script que coge la salida de julius y hace lo que queremos
julian.jconf = configuración básica de julius
mediaplayer.grammar = Fichero de gramática
mediaplayer.voca = Fichero de vocabulario

Ahora vamos a compilar todo, para compilar simplemente vamos a ejecutar mkdfa.pl mas el nombre del archivo sin extensión. Tanto el archivo .grammar como el .voca deben tener el mismo nombre . Lanzamos el comando sólo una vez y compila ambos archivos escribe:

Code: Select all

mkdfa.pl mediaplayer
La salida del terminal sera como esta:

Code: Select all

[email protected]:~/reproductor $ mkdfa.pl mediaplayer
mediaplayer.grammar has 1 rules
mediaplayer.voca    has 4 categories and 9 words
---
Now parsing grammar file
Now modifying grammar to minimize states[-1]
Now parsing vocabulary file
Now making nondeterministic finite automaton[5/5]
Now making deterministic finite automaton[5/5] 
Now making triplet list[5/5]
4 categories, 5 nodes, 4 arcs
-> minimized: 5 nodes, 4 arcs
---
generated: mediaplayer.dfa mediaplayer.term mediaplayer.dict
Como vemos ha creado 3 archivos más, la lista de archivos en nuestro directorio “reproductor” ahora es como la siguiente lista:

command.py
julian.jconf
mediaplayer.dfa
mediaplayer.dict
mediaplayer.grammar
mediaplayer.term
mediaplayer.voca

Ahora vamos a preparar el archivo de configuración julian.jconf lo abrimos para editarlo y hacemos los cambios encuentra esto: (número de línea 36 y 37)

Code: Select all

-dfa sample.dfa
-v sample.dict
Y lo cambias por esto otro:

Code: Select all

-dfa mediaplayer.dfa
-v mediaplayer.dict
También se tienen que descomentar las líneas 162 y la línea 242 que contienen '# -input mic "y" # -quiet ' borra el símbolo #

Ahora, el último paso es simplemente hacer funcionar a Julius, tuve un problema con privilegios:

Code: Select all

[email protected]:~/reproductor $ julius -C julian.jconf | ./command.py
-bash: ./command.py: Permission denied
Así que añadimos a continuación un comando para corregir los permisos:

Code: Select all

sudo chmod 777 -R ./
Y como dije antes tenemos que configurar la tarjeta y el mic para que funcione:

Code: Select all

export ALSADEV="plughw:1,0"
Ahora si podemos usar Julius

Code: Select all

julius -C julian.jconf | ./command.py
Bueno ya tienes a Julius operativo, espero que le saquemos el potencial que tiene yo sigo aprendiendo cosas, en cuanto tenga algo nuevo lo pondré en este hilo y espero que si alguien hace algo lo comparta para hacer un manual de julius completo.

Me queda pendiente probarlo en Español, porque se que hay 2 modelos en español en voxforge y voy a probarlos para el que lo prefiera en español. Si alguien lo hizo ya pues que comparta. porque esto es para todos yo he tardado mucho tiempo en hacerlo funcionar y he tenido que dar muchas vueltas lo comparto para que no tengan el mismo problema.

Un saludo y espero comentarios!!
Last edited by hiddenotebook on Tue Jul 18, 2017 6:35 pm, edited 18 times in total.

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

video demostrativo

Sat Sep 03, 2016 9:04 am

He puesto un video en youtube para el que quera verlo en acción
https://youtu.be/92lb-vAdWaw

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius reconocimiento de voz [MANUAL]+[EJEMPLO]

Fri Sep 09, 2016 9:42 pm

Actualizado con la ultima versión disponible de julius 4.4.1

He estado hablando con el Dr. Akinobu Lee que mantiene la aplicación en github y hemos probado julius en raspberry para que funcione correctamente.

Ya se que hay servicios como el de google o Alexa de amazon que pueden usarse en raspberry pero julius responde mas rápido a mis peticiones y no necesita Internet cosa que me viene de lujo para mi robot.

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Wed Oct 05, 2016 8:25 am

Hola.

Muchas gracias por compartir, ayer mismo estuve grabando voces para mejorar el modelo de lenguaje que vengo utilizando.

¿El que tú utilizas reconoce razonablemente bien?
¿Y con ruido de fondo?

Yo también estoy usando rpi2 ahora mismo, tengo una rpi3 cuyo puerto HDMI no va bien y puede que la use para este fin, por si saco un poco más de rendimiento.

Ahora mismo utilizo un modelo que yo creé, pero si me dices que el que usas tú va bien, le daré una oportunidad, a ver si así mi mujer también puede pedirle cosas a nuestro asistente sin tener que tirarse horas grabando su voz :)

Yo estoy usando Julius como disparador, con el comando "escucha gary", y luego se lanza un script que graba y manda a la API de Google, pero también me gustaría que "todo quedara en casa", más que nada por la velocidad de respuesta, aunque la que tengo ahora no esta mal, y Google reconoce como un campeón, incluso con ruido.

Hace tiempo que no he tocado el tema del modelo de lenguaje, pero es muy versátil y permite que según los comandos reconocidos, ejecutar scripts.
Lo explican todo bien en la documentación, a mí me llevó un par de horas seguro hacerlo, pero cuando sale es una gozada.
Te pego mi archivo .voca, que es muy básico, para que veas como lo hago.

gary.voca:

Code: Select all

% NS_B
<s>        sil

% NS_E
</s>        sil

% ESCUCHA
ESCUCHA         [COM]

% GARY
GARY            [/root/Julius/comando.sh]
Cuando Julius reconoce "escucha gary", lanza el script /root/Julius/comando.sh, y ese ya lanza la grabación para la API d Google y blablabla.

El archivo gary.dict:

Code: Select all

0       [<s>] sil
1       [</s>] sil
2       [COM] e s k uu ch a
3       [/root/Julius/comando.sh] g aa r i
Por cierto, te dejo, por si lo quieres probar, la forma de instalar picotts, que para mi gusto, es mucha mejor voz que festival.

No debe pasar nada por instalarlo, a mí nunca me ha pasado, pero me sabría mal que estropeases tu SD por probar esto, así que yo te recomiendo hacer un backup de la misma antes de empezar.

Ahí va:

En primer lugar, comprobamos que nuestro archivo de repositorios contenga las siguientes líneas:

Code: Select all

vim /etc/apt/sources.list

Code: Select all

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ wheezy main contrib non-free rpi
Un archivo /etc/apt/sources.list sería:

Code: Select all

#deb http://mirrordirector.raspbian.org/raspbian wheezy main non-free
deb http://archive.raspberrypi.org/debian wheezy main

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ wheezy main contrib non-free rpi
Actualizamos e instalamos algunos paquetes:

Code: Select all

sudo apt-get update
sudo apt-get -y install fakeroot debhelper automake autoconf libtool help2man libpopt-dev hardening-wrapper
Descargamos el software

Code: Select all

mkdir pico_build
cd pico_build
apt-get source libttspico-utils
Generamos los paquetes:

Code: Select all

cd svox-1.0+git20110131
dpkg-buildpackage -rfakeroot -us -uc
cd ..
Y los instalamos en este orden:

Code: Select all

sudo dpkg -i libttspico-data_1.0+git20110131-2_all.deb
sudo dpkg -i libttspico0_1.0+git20110131-2_armhf.deb
sudo dpkg -i libttspico-utils_1.0+git20110131-2_armhf.deb
Y ya puestos, el script que utilizo para hablar:

Code: Select all

#!/bin/bash
echo "Diciendo:  $1"
rm -rf /tmp/habla* 2> /dev/null
pico2wave -l es-ES -w /tmp/habla1.wav "$1"
sox /tmp/habla1.wav /tmp/habla2.wav speed 1.1
/usr/bin/aplay -D plughw:0 /tmp/habla2.wav > /dev/null 2>&1
¡Saludos!

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Wed Oct 05, 2016 8:42 am

Acabo de ver tu vídeo, veo que le hablas en inglés, es un asco que no haya, o al menos yo no lo conozco, un buen modelo de lenguaje en español, por eso a mí me toca hacerme el mío, pero bueno, no importa, sigo trabajando a ver si al final hago unas cuantas instrucciones básicas como encender y apagar luces, tele y algunas cosas más con Julius, y otras más complejas con Google, como estoy haciendo ahora.

Te quería comentar que para tu robot, te vendría bien un micro de CCTV, es lo que yo uso, captan muy bien la voz incluso a metros de distancia.
Van alimentados, pero consumen muy poco.

Te pongo un enlace de uno de los que yo uso, por si te interesa.
https://es.aliexpress.com/store/product ... 9e1c3b779a

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Wed Oct 05, 2016 5:50 pm

Claro que me interesa muchas gracias orxa eres el primero con el que puedo hablar de este tema ya es hora jajaja

¿Cómo conectas ese micrófono a la PI? yo uso uno USB

Que yo sepa hay dos modelos en español para julius en voxforge aquí donde pone (Acoustic Models) ahora... ni los he probado ni se como hacerlo de momento a ver si se anima mas gente y hacemos un manual como dios manda.

A mi festival me parece la leche la verdad solo hay que buscar las voces adecuadas, en ingles las que uso son muy buenas en español las mejores que he encontrado son las de guadalinex, También festival es capaz de hablar con distintas voces e idiomas sin tener que tocar ningún archivo lo que me da mucho juego solo hay que poner una voz a cada lenguaje bajo el directorio /usr/share/festival/languages festival tiene estos ficheros:

language_american_english.scm
language_british_english.scm
language_english.scm
language_castillian_spanish.scm

Hay mas pero esos son los que mas me interesan dentro puedes poner una voz que tengas instalada y para hablar con esa voz o idioma solo tienes que llamarla así:

echo "I am ready sir, how can I help you? " | festival --language american_english --tts

Por ejemplo en mi ubuntu tengo 3 scripts y cuando quiero que festival lea algo en la web o en un archivo por mi, tengo un atajo de teclado asignado a cada idioma solo con pulsar el atajo lee en el idioma deseado y con la voz que puse en su archivo.

script1 con voz de hombre:

Code: Select all

#!/bin/bash
xsel | festival --language british_english --tts --pipe
script2 este tiene una voz de pivon que flipas jaja:

Code: Select all

#!/bin/bash
xsel | festival --language american_english --tts --pipe
script3 en español y este lee acentos y todo eso:

Code: Select all

#!/bin/bash
xsel | iconv -f utf-8 -t iso-8859-1 | festival --language spanish --tts --pipe
Mira te dejo un video para que escuches las voces ok:
youtube festival

Como ves las voces en ingles son mucho mejores pero la española no esta mal se entiende bien mucho mejor que las que tiene festival por defecto.

En cuanto consiga cosas nuevas lo pondré por aquí de momento voy a leer lo que me has dejado para aprender más.

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Thu Oct 06, 2016 9:48 am

He dejado un video de julius trabajando en raspberry pi2 y me ha sorprendido la velocidad que tiene para ejecutar ordenes en raspberry es inmediata la respuesta la verdad es que estoy muy sorprendido de lo rápido que trabaja en raspberry, es perfecto para cualquier proyecto ya sea un robot o para automatizar la casa.

Julius reconocimiento de voz en raspberry pi2
Last edited by hiddenotebook on Sat Oct 08, 2016 10:47 am, edited 1 time in total.

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Oct 07, 2016 9:20 am

Hola.

Creía haberme suscrito, hubiera contestado antes...

Te recomiendo encarecidamente que pruebes el picotts, nada que ver con la voz que usas en español.
El script que puse es un poco más complejo porque convierte la voz, que me parecía un poco lenta, pero se pueden quitar varias líneas y hacerlo todo en una.

En cuanto a la conexión del micro, lo hago con una tarjeta USB, de esas de 1 pavo en AE, y me va bien.
https://es.aliexpress.com/store/product ... edf0866700

Es interesante lo del micro de CCTV porque capta muchísimo más que uno normal, es decir, si estar encima, puedes hablarle.

Yo estoy peleando ahora para meter unos comandos nuevos para automatización, igual un poco más adelante hago un video, pero no prometo nada, voy de culo.

Lo de las voces es interesante, si con mis ultimas grabaciones no me va mal (hice desde varias situaciones y con/sin ruido de fondo), puede que use las que hay, si no es muy laborioso.

Vamos hablando, suerte con los proyectos.

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Oct 07, 2016 9:53 am

Pues si voy a probar el picotts hombre porque ya que he usado una nueva SD para actualizar el post aprovecho y pruebo que no hay que cerrar la puerta a ninguna opción, el caso es que estoy un poco verde en estos temas y me cuesta pero voy a hacer el esfuerzo que me quedan dos semanas de vacaciones.

Gracias compañero te comentare a ver como se da la cosa.

EDITO: Nada después de instalar pico con la nueva versión 1.0+git20130326-3 no consigo que hable con

pico2wave -w test.wav "it works!"

y el script me dice esto:

[email protected]:~/pico_build $ chmod +x pico.sh
[email protected]:~/pico_build $ sudo ./pico.sh
Diciendo:
./pico.sh: line 5: sox: command not found

:( :(
Last edited by hiddenotebook on Fri Oct 07, 2016 11:31 am, edited 2 times in total.

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Oct 07, 2016 11:09 am

Perfecto, ya me cuentas.

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Oct 07, 2016 6:55 pm

Tienes razón suena mucho mejor compañero habla mucho mas natural y fluido :D gracias por el consejo te lo agradezco mucho.

solo puedes guardar la salida en .wav?
no puedes hacer que sintetice texto sin mas?

Lo mas parecido que puedo hacer es esto que no esta mal la verdad:

pico2wave -l es-ES -w test.wav "hola mundo" && aplay test.wav

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.1 reconocimiento de voz [MANUAL]+[EJEMPLO

Sat Oct 08, 2016 11:07 am

Actualizado para que sea fácil la instalación, dejo un video funcionando en raspberry para que vean lo rápido que funciona. :geek:

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 10, 2016 2:45 pm

Hola.

No sé qué pasa que no se me notifican nuevos mensajes, tengo que revisar el correo con el que me registré o las opciones, a ver si es que tengo algo mal configurado.

Antes que nada, muchas gracias a ti también, te lo curras mucho, y, aunque yo ya llegué a donde tú has llegado y un poco más (crear modelo de lenguaje en español), yo tengo una versión vieja, quiero probar si con la nueva va algo mejor, aunque creo que la clave es tener muchas voces y hacer un buen modelo, pero probaré tu procedimiento de instalación, que lo probé antes de que lo actualizaras pero al no dejarme compilar con tipo de micro alsa, lo dejé.

Ojalá tuviera tiempo también para contar aquí las patadas que he tenido que dar, o al menos una buena guía, pero qué va, el tiempo es un bien escaso y ya me cuesta alguna discusión familiar hacer lo que buenamente puedo, así que documentar aquí, me parece que mas bien difícil.
No obstante, con lo que has puesto tú, y la guía de crear un modelo de lenguaje, aunque está en inglés, creo que está bastante explicado todo lo que hace falta saber.

Voy a pegar el script que hice para grabar voces, que se puede mejorar algo, para que te recuerde que dejes medio segundo antes de empezar a hablar, por ejemplo, pero que a mi me ha venido de perlas para no tener que estar cortando el audio después.
Se puede usar control + c cuando se ha leído la frase, no hace falta esperar a que termine de grabar.

Por cierto, sin ánimo de que te siente mal, desde la ciber-amistad que estamos entablando, te voy a regalar una bolsa de comas cabrXn, jajajajaja

Ahí va el script con los archivos csv que indican, personas que van a grabar con su género para las frases de los scripts, situaciones desde las que se va a grabar y el archivo prompts.txt con las frases.

He de añadir que ahora mismo el script crea carpetas y mete, según la situación de la grabación, los archivos en carpetas distintas.
Eso fue un error, porque luego, a la hora de crear el modelo, o no lo supe hacer yo, o deben estar en la misma carpeta.
No tengo tiempo de modificarlo ahora, si alguien lo va a usar que lo tenga en cuenta y lo modifique, y que llame a los archivos "situacion-nombre.wav" en lugar de "situacion/nombre.wav".

personas.csv

Code: Select all

Jose;o
Miriam;a
tiposDeGrabacion.csv

Code: Select all

comedor_delante;Por favor, sitúate en el centro del sofá y apaga cualquier dispositivo que genere ruido de fondo
comedor_mesa;Por favor, siéntate en una silla de las de la mesa
comedor_ruido_secador;Por favor, enciende el secador de pelo en la cocina y sitúate en el centro del sofá
comedor_ruido_tele;Por favor, sitúate en el centro del sofá, enciente la tele y ponla a un volumen medio-bajo
grabaListado.sh

Code: Select all

#!/bin/bash

carpeta="/nas/NAS/GARY/Grabaciones/`date '+%Y-%m-%d_%H-%M-%S'`"

clear
while read lineaPersona
do
        persona="`echo $lineaPersona|cut -d \";\" -f 1`"
        genero="`echo $lineaPersona|cut -d \";\" -f 2`"
        echo "Hola $persona. Esto es un script para facilitar la grabación de frases para el modelo de lenguaje de Gary. Antes de grabar cc
ada frase, esta aparecerá en la pantalla en letras grandes, se oirá un 'beep', y un segundo después, debes empezar a leerla en un tono nn
ormal."
        entrada="N"
        while [[ "$entrada" != "" && "$entrada" != "S" && "$entrada" != "s" ]]
        do
                echo "¿Estás list$genero? [S/n]"
                read entrada </dev/tty
        done
        while read tipo
        do
                situacion="`echo $tipo|cut -d \";\" -f 1`"
                comentario="`echo $tipo|cut -d \";\" -f 2`"
                echo "Ahora vamos a grabar la situiación $situacion. $comentario. Pulsa intro cuando estés list$genero."
                read entrada </dev/tty
                mkdir -p $carpeta/$situacion-$persona
                while read lineaFrase
                do
                        nombre="`echo $lineaFrase|cut -d \"/\" -f 2|cut -d \" \" -f 1`.wav"
                        frase="`echo $lineaFrase|cut -d \" \" -f 2-`"
                        entrada2="N"
                        while [[ "$entrada2" != "" && "$entrada2" != "S" && "$entrada2" != "s" ]]
                        do
                                #/usr/bin/aplay -q /root/Gary/Sonidos/beep.wav
                                clear
                                echo "$frase ($nombre)"
                                #sleep 1.5
                                /usr/bin/aplay -q /root/Gary/Sonidos/beep.wav
                                sleep 0.3
                                #echo "Grabando $carpeta/$situacion-$persona/$nombre"
                                arecord -q --vumeter=mono -D plughw:0,0 -d 9 -r 16000 -f S16_LE $carpeta/$situacion-$persona/$nombre
                                echo -e "\n¿Crees que se ha grabado bien? [S/n]"
                                read entrada2 </dev/tty
                        done
                done < /root/Julius/modelo/prompts.txt
        done < tiposDeGrabacion.csv
done < personas.csv
prompts.txt

Code: Select all

*/orxa_0001 APAGA EL AMPLIFICADOR

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 10, 2016 3:13 pm

Jajajaja que va hombre como me va a sentar mal todo lo contrario, las críticas constructivas siempre ayudan. ;)

Pues yo tengo que ser cortito porque la guía de crear un modelo de lenguaje en ingles ¿donde esta? Jajaja no la he visto :lol:

De todas formas no se si viste el enlace que puse a voxforge con dos modelos en español.

Yo he comprado un micrófono bueno para grabar y aún estoy intentando aprender a crear mi modelo y ponerlo a punto pero no se por donde empezar tengo menos luces que una bombilla fundida jajaja eso si con lo cabezón que soy tarde mucho o poco seguro que lo haré tarde o temprano.

Eso si una ayuda para encaminarme me vendría bien porque hay días que le hecho horas y acabo mas liado aun. Si pones como hacerlo yo tengo tiempo para crearlo y meterle caña.

También quiero crear voces para festival el otro dia encontre una en español es cstr_upc_upm_spanis_hts pero es para una versión muy vieja y no he podido hacerla funcionar : ( también hay una web con 10 voces en catalán 5 son buenas y joder yo quiero una buena en castellano que de catalán ni papa..

Lo dicho seguiremos dando guerra con esto.

PD: Esta instalación tiene que funcionar seguro.

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 10, 2016 3:26 pm

Hombre, si las voces no tienen que ser muy dinámicas, las puedes grabar con un soft de Windows o Android, y usarlas, pero si se van generando cosas distintas, lo mejor que yo conozco es picotts.

Para lo del modelo de lenguaje, echa un vistazo a esto:
http://www.voxforge.org/home/dev/acoust ... s/tutorial

Es laborioso, no te voy a engañar, pero no es difícil.

El apartado del Simple Dialog Manager es lo que te permitirá ejecutar scripts cuando detecte ciertas palabras, que, para mí al menos, es de lo que se trata toda la mandanga.

Yo más adelante puede que empiece a bajar voces de donde pusiste el otro día y haga un lenguaje tocho, pero lo que decía, no tengo tiempo, pero si lo hago y va bien, tranquilo que rulará.

Ya me cuentas, ¡suerte!

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 10, 2016 3:32 pm

Muchas gracias, que no te quepa duda que le voy a echar un ojo a darle caña al tema. :geek:

PD: He puesto algunas comas por ahí para que se lea mejor :lol: :lol:

orxa
Posts: 46
Joined: Thu Nov 12, 2015 5:20 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 10, 2016 4:04 pm

Jajajaja, ¡bien hecho!

Ya "nos" cuentas qué tal con el modelo, yo a ver si tengo tiempo esta semana de hacer unas pocas soldaduras y grabar un vídeo de como Gary enciende y apaga tele, ampli, luces, subwoofer... cosas guais vaya.

cagafuegos
Posts: 2
Joined: Sun Oct 23, 2016 5:22 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Sun Oct 23, 2016 5:38 pm

Hola.

Lo primero de todo decir que este tutorial me ha servido de mucho, aunque aún se puede aumentar algo de info.

Comentar que no soy muy ducho en programación aunque algunas cosillas he hecho, por eso me cuesta mucho entender el funcionamiento de julius, sobre todo la parte en la que se relaciona las entradas de audio con las acciones que realiza para comandar rythmbox.

En mi caso estoy haciendo un robot con pi3 y quiero que cuando le diga avanza active un gpio y active el motor, no entiendo cuantos archivos.txt debe tener el directorio.

Si me hechais un cable os lo agradecería muchoo.
Saludos

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Oct 24, 2016 11:39 am

A ver compañero eso es justo lo que yo quiero hacer... y lo primero que vas a necesitar es programar ya sea C, python o lo que mas te guste.

Para hacer una aplicación que julius pueda usar necesitas 3 archivos básicos dentro de una carpeta:

julian.jconf -> es el archivo de configuración
Sample.gramar -> archivo de gramática
Sample.voca -> archivo de vocabulario

Después tienes que hacer un programa en el lenguaje que sepas para controlar lo que julius reconoce. En el caso del post command.py que esta hecho en python

Con estos 4 archivos tienes que compilar con "mkdfa.pl Sample" y creara Sample.dfa Sample.term Sample.dict

No necesitas ningun .txt necesitas poner las palabras a reconocer en sample.voca editar sample gramar y compilar todo después lo puedes usar.

Ahora si quieres que te diga como hacer el programa que controle los gpio tienes que esperar porque yo aun lo estoy investigando y estudiando python para hacer el programa que controle todo. Mi idea es la misma que la tuya hacer un robot que pueda controlar por voz.

Dime que info hace falta e intentare añadirlo!

un saludo.

cagafuegos
Posts: 2
Joined: Sun Oct 23, 2016 5:22 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Wed Oct 26, 2016 6:47 pm

Buenas noches.

Gracias por la respuesta ahora he comprendido un poco mejor con lo que me has contestado y recopilando otro poco de información creo que he conseguido hacer un mini diccionario, supongo que el .jconf es igual para todas las aplicaciones, únicamente es un archivo de configuración (salidas de micros abiertas o niveles de sonido)verdad?
te dejo esta página por si te sirve aunque seguro que ya la has visto anteriormente jeje.
https://github.com/julius-speech/grammar-kit

Por último me faltaría el .py sino me confundo usa parse para analizar oraciones del reconocimiento de voz si pusieses enviar un ejemplo un poco mas sencillo que el de rythmbox creo que serviría de ayuda algo del estilo a si dices hola que imprima en pantalla hola mundo, es simplemente para ver como se comunica la aplicación de julius con el archivo python.

De nuevo muchas gracias por este tutorial, llevaba un par de meses atascado, seguiré estudiando haber si saco algo más

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Mon Nov 14, 2016 6:38 pm

Hola amigo cagafuegos :lol: :lol:

Si tienes razon con el archivo .jconf es siempre el mismo. no dispongo de un ejemplo como el que comentas y no he podido darle caña a julius.

Pero te voy a dar buenas noticias el enlace que me pasas es justo el sitio donde puedes conseguir ese ejemplo simplemente abre un nuevo Issue porque desde que cerro el foro oficial de la pagina de julius el DR. Akinobu Lee usa github a modo de foro es mas lo pone en la web oficial de julius que si tienes alguna pregunta puedes usar el github para hacerla. Si entras en los Issues cerrados veras mi tema donde le ayude testeando a actualizar la ultima versión de julius para que funcione en raspberry sin problemas.

Si has usado el grammar kit ya has hecho algo que yo no, no estaría mal que nos cuentes como para mejorar el manual. Y te sugiero que abras un nuevo issue si no sabes ingles dimelo y lo hago yo por ti ok.

Y disculpa por tardar en contestar estoy suscrito pero no me aviso no se porque. Tengo que ponerme con Julius y mi robot pero estoy liado porque hostinger me tumbo mi web y mi tienda y ahora lo estoy montando todo en una raspberry necesito la tienda porque cada día que pasa pierdo dinero y no mola jajaja espero volver pronto con esto.

Un saludo y muchas gracias por tus comentarios.

albertorp
Posts: 12
Joined: Fri Jun 05, 2015 12:14 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Jan 20, 2017 8:42 pm

En primer lugar muchas gracias tanto a @hiddenotebook como a @orxa por vuestro diálogo tan instructivo.

Yo vengo rebotado de otro post de pocketsphinx, porque este me parece bastante complicado, y con las instrucciones del hiddenotebook he conseguido instalar julius a la primera en una RPi3 y me ha funcionado bastante mejor que pocketsphinx.

Ahora estoy en el mismo paso que vosotros, intentar hacer que entienda español :-) La verdad es que estoy bastante liado con modelos acústicos, diccionarios, gramáticas, etc... y también como vosotros, con escaso tiempo para poder probar mucho. Pero bueno, ya estoy suscrito a este post para ver si vais avanzando, y si yo consigo descubrir algo lo pondré también por aquí

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Sun Jan 22, 2017 7:55 pm

Perfecto! me alegra mucho que te quedes por aquí bienvenido amigo.

Me quedan dos meses para tener otro hijo ahora ando muy liado entre las cosas de familia el trabajo y los quehaceres diarios casi no tengo tiempo para seguir con mis pruebas. Pero seguiré poniendo aquí todo lo que pueda y ojala alguien sepa mas que nosotros y se una tambien.

un saludo!

NelsonGallo_
Posts: 1
Joined: Thu Mar 02, 2017 9:52 pm

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri Mar 03, 2017 5:24 pm

Buenas tardes, saludos desde Colombia... Quisiera saber si me podrían ayudar a controlar los puertos gpio con esta aplicación. Agradecería mucho su ayuda, es para un proyecto.
cuando quiero iniciar con "Julius -input mic -C Sample.jconf" me aparece este error

" adin_alsa: cannot open PCM device "plughw:1,0" (no such file or directory)
failed to begin input stream "

A pesar de que antes de iniciarlo puse le comando " expot ALSADEV="plughw: 1,0"

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: Julius rev 4.4.2 reconocimiento de voz [MANUAL]+[EJEMPLO

Fri May 19, 2017 12:50 pm

porque se usa este otro comando:

padsp julius -C julian.jconf | ./command.py

te falta el 'padsp'

Return to “Español”