Categories

Archives

Read Clipboard in Ubuntu

If your like me lazy in reading stuff then TTS like espeak, festival is perfect. For me it doesn’t matter if it speaks like computer but as long as someone thing can read it for me its perfect. So in this journey i had made 2 scripts that could help you. This was testing in Ubuntu 9.04 with python, espeak and metacity as default.

First, create a python script or download this file, please rename the file to your folder of choice, for our example we would use /home/almondmendoza/clipboard/getClipboardContents.py

import gtk
clip = gtk.clipboard_get(selection='PRIMARY')
print clip.wait_for_text()

The previous script would get our clipboard, now to speak it we would use espeak coz its build in by default, we would have to created a shell script or download this (this change voice to en-r and speed to 200), please rename the file, for our example /home/almondmendoza/clipboard/speakClipboard.sh

#!/bin/sh
word=`/usr/bin/python /home/almondmendoza/clipboard/getClipboardContents.py`
espeak ". $word"

Now we need to make the shell script executable with 777 permission

sudo chmod a+x /home/almondmendoza/clipboard/speakClipboard.sh
sudo chmod 777 /home/almondmendoza/clipboard/speakClipboard.sh

You could execute it now to speak the clipboard by

/home/almondmendoza/clipboard/speakClipboard.sh

For the fun part we would bind this to a key combination, but first we need to create a symbolic link to /usr/bin where it could be executed properly (i really dont know the reason but it works)

sudo ln /home/almondmendoza/clipboard/speakClipboard.sh /usr/bin/speakMyClipboard

Next bind it to a key combination, i bind it to the first command with Ctrl + Alt + C

gconftool-2 -s /apps/metacity/keybinding_commands/command_1 -t string 'speakMyClipboard'
gconftool-2 -s /apps/metacity/global_keybindings/run_command_1 -t string '<Control><Alt>C'

There are some error/bugs on gtk when i was doing this, i just updated my ubuntu and it was fixed. Another error was most of the time it cannot speak the whole clipboard or couldn’t speak at all, i think its espeak’s problem so i cant help on this one, just press the combination again and again. If anyone has a better way to do this please post a comment.

Hope this helps.

Related posts:

  1. Converting MTS to AVI in Ubuntu Linux
  2. Connecting and debugging your application with your phone on Ubuntu 9.04
  3. Finally installed Ubuntu 9.04

9 comments to Read Clipboard in Ubuntu

  • Mylo9000

    I love this script its so easy to setup. i have however needed to modify it a little.
    firstly i needed to have the alsa-oss package installed (i’m using Ubuntu 8.10)
    i then changed the sh file to invok espeak using:
    aoss espeak -v “en+m2″ “. $word . . . . ”
    doing this allows speakMyClipboard.sh to work while other apps are using the sound card. if you don’t and you have music playing then it won’t work.

    the extra periods at the end are there to add a bit of a pause to the end of whats being said.
    otherwise aoss cuts off the buffer too soon and you don’t get the last word of the selection.

    i also have a launcher in my gnome pannel that i can click on and it will speak the clipboard. this is if i’m feeling lazy and won’t want to use the key combo.

    i hope this info helps because this has been a great script for me and i really appreciate it.

  • kashif12

    Dear Mylo9000 will you be kind enough to share with us the modified script?

  • Thanks for the info. I found your code snippet simple and useful.

  • Mylo9000

    this is the content of my speakclipboard.sh file.
    remember you need to have the alsa-oss package installed first for this to work. you can find alsa-oss in your distro’s package manager.

    #!/bin/sh
    word=`/usr/bin/python //home/mylo9000/scripts/clipboard/getclipboardcontents.py`
    aoss espeak -s 200 -v “en-r” “. . . . . . . $word . . . , , , end of line. “

  • terrymon

    for those using ubuntu jaunty as a bug fix change espeak command to:

    espeak ” $word ” –stdout | aplay

    espeak package in jaunty is not playing nice with port audio.

  • terrymon

    add to previous post that there are two dashes before stdout

  • Mylo9000

    hey everyone, just wanted to post a little something i added to this script just to spice it up a bit. I included a random number for the pitch option so that the voice sounds a bit different every time i invoke the script. this makes it more interesting when reading forum entries. its like different people are talking. i also had to change the script from #!/bin/sh to #!/bin/bash to get it to work. seems shell doesn’t like how bash generates a random number. oh and i no longer use alsa-oss for also compatibility. terrymon’s way of pipeing it to aplay works so much better.

    anyways here’s my speakmyclipboard.sh file contents.

    #!/bin/bash
    number=$((RANDOM%100))
    word=`/usr/bin/python //home/mylo9000/Scripts/clipboard/getclipboardcontents.py`

    espeak -p $number -v “en+m” “. $word . . . . end of line. $number” –stdout | aplay

  • Mylo9000

    agian there are two dashes before stdout

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>