Cesarius.NET | Cibercultura, GNU/Linux y Sotware Libre

Algunas veces escucho música cuando hago algunas de mis tareas, lo que cual no me permite estar al tanto del nombre de la canción que se está reproduciendo ni el nombre de la siguiente, para esto lo que se tiene que hacer es hacer “hablar” a la PC

Se necesitan estos paquetes que puedes buscar en Synaptic o teclear:

sudo apt-get install libnet-dbus-perl espeak

Abrir un editor de texto y copiar el siguiente texto:


#!/usr/bin/perl -w

use Net::DBus;
use Net::DBus::Reactor;
use strict;

my $prevsong = “none”;

my $bus = Net::DBus->find;
my $rhythm = $bus->get_service(“org.gnome.Rhythmbox”);
my $shell = $rhythm->get_object(“/org/gnome/Rhythmbox/Shell”, “org.gnome.Rhythmbox.Shell”);
my $player = $rhythm->get_object(“/org/gnome/Rhythmbox/Player”, “org.gnome.Rhythmbox.Player”);

sub SayPlaying()
{
my $uri = $player->getPlayingUri;
my %props = %{$shell->getSongProperties( $uri )};
my $title = $props{‘title’};
my @tmp = split(‘\(‘, $title);
$title = $tmp[0];
$title =~ tr/’/ / ;

if ($title =~ m/$prevsong/)
{return;}

$prevsong = $title;

print $title, “\n”;
system “padsp espeak -a500 ‘$title’ &>/dev/null”;
}

$player->connect_to_signal(“playingUriChanged”, \&SayPlaying );

my $reactor = Net::DBus::Reactor->main();
$reactor->run();


Guárdalo donde prefieras.
Ahora solo basta con que te muevas donde guardaste el archivo con un clic derecho ir a Propiedades, después en la viñeta permisos darle la casilla de  “ejecutar como un programa” después abrir Rhythmbox, luego doble clic sobre el archivo que creaste y dale ejecutar.

Ahora al cambiar de canción se escuchara el nombre de cada canción.

El paquete espeak tiene una gran cantidad de modificaciones que se pueden hacer… si alguno quiere, puede colaborar con esto en los comentarios.

También puede Interesarte...

15 Comentarios
  1. hanz Dice:

    Que extraño a mi no me funciona…

    Escrito el 24 Junio, 2008 @ 4:31 pm

  2. Jonathan Dice:

    Gracias por el consejo, es muy útil en su propósito.

    Escrito el 24 Junio, 2008 @ 5:12 pm

  3. alejandra Dice:

    Recuerdo que hace mucho tiempo (aun usaba redhat y no ubuntu) utilizaba “festival”. Checalo, pues ahora que conoci (gracias a tu post) espeak, no me gusto el “acento”.

    En festival podias usar varios diccionarios con una herramienta extra (ahora no recuerdo exactamente el nombre.. algo asi como mbrola, no se) que incluian español de España y tambien español de Mexico (entre otros). Incluso tenian “voz” de mujer o de hombre. Muy completo!

    En ese tiempo modifique el /etc/host.allow para que si detectaba que alguien queria entrar a mi maquina me avisara ;-)

    Escrito el 24 Junio, 2008 @ 8:28 pm

  4. morfeo Dice:

    Como hacer para que pronuncie en español y no en inglés?

    Escrito el 24 Junio, 2008 @ 9:41 pm

  5. Miguel Dice:

    Oye a mi tampoco me funciono, segui todo al pie de la letra, pero nada!

    Escrito el 24 Junio, 2008 @ 10:06 pm

  6. Jose Dice:

    #1 y #5, yo tuve que cambiar tanto las comillas dobles como las simples, al copiarlo en el vi, ambas comillas eran diferentes y el script fallaba.

    Escrito el 24 Junio, 2008 @ 11:26 pm

  7. andresFang Dice:

    para que espeak te hable en español debes decirle -ves

    digamos si quieres escribir algo en espeak y que el lo lea, escribes:
    $espeak -ves

    y el te deja para que escribas y cuando le das enter te pronuncia lo que dijiste, no sé si se salga mucho de lo inicial pero pues tambn se puede aplicar en el código que das.

    Escrito el 25 Junio, 2008 @ 6:54 am

  8. Agnusdark Dice:

    vaya, eso si esta padre; habra que probarlo.

    Saludos!!!

    Escrito el 25 Junio, 2008 @ 11:26 am

  9. compiz-fusion Dice:

    a mi no me funciona ,alguien nos puede ayudar????

    Escrito el 25 Junio, 2008 @ 10:12 pm

  10. ivanive_24 Dice:

    A mi tampoco me funciona, he seguido el tutorial al pie de la letra pero no me funciona.

    Alguien podria contextarme a mi correo con la solucion.

    Uso Hardy

    Escrito el 26 Junio, 2008 @ 1:30 pm

  11. Maharba Dice:

    Supongo que con cambiar varias cosas del script, podría servir para Amarok, ¿no es cierto?.

    Escrito el 26 Junio, 2008 @ 2:51 pm

  12. Enlaces interesantes del blogroll Dice:

    [...] Haz que Rhythmbox te diga el nombre de la canción que reproduces [...]

    Escrito el 28 Julio, 2008 @ 9:32 am

  13. juaramir Dice:

    lamentablemente no funciona
    cambie las comillas simples y dobles pero sigue sin reproducir el nombre, y creo que de todos los que han posteado a nadie le ha funcionado pues nadie pone una solucion a este asunto.

    gracias de todas formas

    Escrito el 4 Septiembre, 2008 @ 3:39 pm

  14. remaster Dice:

    A mi no me ha funcionado, todo al pie de la letra pero rhythmbox no habla.

    Escrito el 13 Diciembre, 2008 @ 5:09 pm

  15. gega inc Dice:

    Hay está el codigo XD, le movi para que dijera el Artista y no la pista (creo que así esta mejor) y si lo quieren en español pues le quitan el ” # ” que esta por las lineas finales y eliminan la de abajo. Buen Aporte, ahora solo falta publicarselo a los cuates de canonical y Rhythmbox para q lo implementen oficialmente y no se quede solo en este foro (ya q parece una buena idea).
    APOYEMOS EL PERFECCIONAMIENTO DE UBUNTU , CADA QUIEN CON UN PEQUEÑO APORTE PODREMOS HACER QUE EN POCO TIEMPO SEA EL S.O. LIBRE No.1 Y CON DEDICACION SE PUEDE, NO ESTAMOS LEJOS. AGUANTE UBUNTU !!! SALUDOS DESDE MEX.

    #!/usr/bin/perl -w

    use Net::DBus;
    use Net::DBus::Reactor;
    use strict;

    my $prevsong = “none”;
    my $bus = Net::DBus->find;
    my $rhythm = $bus->get_service(“org.gnome.Rhythmbox”);
    my $shell = $rhythm->get_object(“/org/gnome/Rhythmbox/Shell”, “org.gnome.Rhythmbox.Shell”);
    my $player = $rhythm->get_object(“/org/gnome/Rhythmbox/Player”, “org.gnome.Rhythmbox.Player”);
    sub SayPlaying()
    {
    my $uri = $player->getPlayingUri;
    my %props = %{$shell->getSongProperties( $uri )};
    my $artist = $props{‘artist’};
    my @tmp = split(‘\(‘, $artist);
    $artist = $tmp[0];
    $artist =~ tr/’/ / ;
    if ($artist =~ m/$prevsong/)
    {return;}
    $prevsong = $artist;
    print $artist, “\n”;
    #system “padsp espeak -ves -a500 ‘$artist’ &>/dev/null”;
    system “padsp espeak -a700 ‘$artist’ &>/dev/null”;
    }
    $player->connect_to_signal(“playingUriChanged”, \&SayPlaying );
    my $reactor = Net::DBus::Reactor->main();
    $reactor->run();

    Escrito el 15 Marzo, 2009 @ 10:05 pm

Agrega tu comentario!

Recupera tus datos con SystemRescueCD

escrito por Cesarius
21 Diciembre, 2009

Cómo habilitar Cover Art en Docky

escrito por Cesarius
21 Diciembre, 2009

Mockup de la nueva versión de Ubuntu Tweak

escrito por Cesarius
22 Noviembre, 2009

Vamos para Campus Party México!!!

escrito por Cesarius
11 Noviembre, 2009

Feliz Cumpleaños Ubuntu!

escrito por Cesarius
20 Octubre, 2009

Empieza Coecys 2009 en Ciudad de Guatemala y allí estaremos!

escrito por Cesarius
29 Septiembre, 2009

Cesarius Revolutions en Twitter y Facebook!

escrito por Cesarius
29 Septiembre, 2009

Lanzamiento de GNOME 2.8

escrito por Cesarius
24 Septiembre, 2009

Karmic alpha 6 ya implementa ‘Ubuntu Software Store’

escrito por Cesarius
22 Septiembre, 2009

Ubuntu 10.04 se llamará “Lucid Linx”

escrito por Cesarius
20 Septiembre, 2009
Cesarius Revolutions | Cibercultura, GNU/Linux y Software Libre on Facebook