Consideraciones y dependencias:
Sólo será capaz de pronunciar en un idioma a la vez, imaginen como pronunciará canciones en otros idiomas.
Idiomas distintos al inglés se instalan por separado, aquí les digo además como instalar el de español
Si se usa un lenguaje occidental ni siquiera trata de leer Chino (tal vez pinyin), Japonés (romaji sí) ni Coreano.
bash
pulseaudio
mpd
mpc
festival + idioma
Como muchos se habrán dado cuenta hacer esto posible para todos los reproductores es poco pensable.
El ejemplo está hecho pensando en MPD.
MPD (Music Player Daemon) es un reproductor de audio que maneja una arquitectura servidor-cliente. MPD se ejecuta en el fondo como un daemon, gestiona listas de reproducción y una base de datos, y hace uso de muy pocos recursos. Para hacer uso de una interfaz gráfica, es necesario un cliente adicional. Más información puede obtenerse en su página web.
Por lo tanto, en este post se usa el reproductor "mpd", si no has usado mpd de entrada quiere decir que no has usado estos:
Gmpc
Ario:
Sonata:
Cantata:
Mpd es un demonio que se ejecuta en segundo plano, y necesita clientes para ser controlado, en este caso esos clientes son esos "reproductores" que les mostré anteriormente. Es capaz de manejar listas de reproducción y bases de datos de la música. Si bien les mostré esos clientes gráficos también los hay de consola.
Iniciemos paso por paso:
1.- Instalar y configurar MPD.
Todo lo que necesitan está en la wiki de ArchLinux:
Pueden instalar Sonata, por supuesto, como cliente o cualquiera de los otros que les mostré anteriormente o busquen más clientes para MPD.
Ya saben que en vez de apt-get tienen que usar slapt-get, pacman, ccr, zypper, yum, emerge, entropy, etc dependiendo de la distribución, aunque es probable que no vengan en sus paquetes oficiales y consigan un binario, un archivo de contrucción o compilarlo directamente.
Es importante que seleccionen la salida pulseaudio, así no se queda estancado alsa y dice el nombre de la canción en el inicio.
2.- Intalar mpc.
Mpc es un cliente para mpd, pueden instalar el cliente que quieran pero este es una dependencia que deben instalar para el propósito de este post. Normalmente lo podrán instalar con el sistema de paquetería de su sistema:
El link para el código fuente:
http://mpd.wikia.com/index.php?title=Client:Mpc&oldid=5273
3.- Instalar Festival y configurarlo.
Debian/Ubuntu:
apt-get install festival festvox-ellpc11k
En el caso de Arch: pacman -S festival
yaourt -S festvox-ellpc11k
Vamos a editar el pkgbuild porque no se actualiza desde el 2011.
mkdir -p $startdir/pkg/usr/share/festival
cp -r festival/lib/voices $startdir/pkg/usr/share/festival
cp -r festival/lib/voices $startdir/pkg/usr/share/festival
Hay que cambiarlas por estas:
mkdir -p $startdir/pkg/$pkgname/usr/share/festival
cp -r festival/lib/voices $startdir/pkg/$pkgname/usr/share/festival
festvox-ellpc11k es el paquete para pasar de texto a voz el idioma español:
cp -r festival/lib/voices $startdir/pkg/$pkgname/usr/share/festival
festvox-ellpc11k es el paquete para pasar de texto a voz el idioma español:
Ahora hay que configurarlo para que use pulseaudio:
Sólo lo probé con Arch y las saqué de la wiki de esta misma.
En su archivo ~/.festivalrc añadan estas lineas:
En su archivo ~/.festivalrc añadan estas lineas:
(Parameter.set 'Audio_Required_Format 'aiff)
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "paplay $FILE --client-name=Festival --stream-name=Speech")
Asegurense que tienen instalado paplay
4.- Copien este script a /usr/bin como root:
sudo nano /usr/bin/tsn
#! /bin/bash
function helpp {
cat << EOF
Debes dar argumentos para señalar el idioma, todos sin guión en excepción de "-h"
"-h" para mostrar esta ayuda
"a" para el idioma por defecto (inglés)
"b" para el idioma español
EOF
}
if [[ ! -n "$@" ]] ; then
helpp
else
if [[ ! "$@" == "-h" ]]; then
pro=$(ps -ef | grep $0 | grep bash | wc -l)
if [[ ! "$pro" = "2" ]]; then
echo "Ya está corriendo otra instancia del programa"
exit 1
fi
if [[ "$1" == "a" ]]; then
while true; do
mpc current --wait | festival --tts
done
fi
if [[ "$1" == "b" ]]; then
while true; do
mpc current --wait | festival --language spanish --tts
done
fi
fi
fi
if [[ "$1" = "-h" ]]; then
helpp
fi
Siempre deben dar argumentos:
$tsn a para que diga en inglés las canciones (Artista/Título)
$tsn b para que las diga en español (Artista/Título)
$tsn -h Les muestra una ayuda parecida a esta
$tsn a para que diga en inglés las canciones (Artista/Título)
$tsn b para que las diga en español (Artista/Título)
$tsn -h Les muestra una ayuda parecida a esta
Búsqueda personalizada
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:
0 comentarios:
Publicar un comentario
No insertes enlaces clicables, de lo contrario se eliminará el comentario. Si quieres ser advertido via email de los nuevos comentarios marca la casilla "Avisarme". Si te ayudé con la publicación o con las respuestas a los comentarios, compártelo en Facebook,Twitter o Instagram. Gracias.