2012-01-21

Espeak Gstreamer Plugin

This is a tutorial on how to set up Espeak TTS as a GStreamer plugin under Linux/Ubuntu. You should  probably have installed the gstreamer libraries and headers previous to this step.

*) Download and install PortAudio and other required libraries and header files
$ sudo apt-get install portaudio19-dev libxml2

*) Download and install espeak sources from http://espeak.sourceforge.net/download.html (currently 1.46.02)
$ unzip espeak-1.46.02-source.zip
$ cd espeak-1.46.02-source/src
$ rm portaudio*

*) change the two files wavegen.cpp and wave.cpp by replacing
#include "portaudio.h"
with
#include "/usr/include/portaudio.h"
in each of the files.

*) Compile and install espeak
$ make
$ sudo make install

*) Download and install the espeak gst-plugin from Sugar Labs (http://download.sugarlabs.org/sources/honey/gst-plugins-espeak/ - currently version 0.3.5)
$ wget http://download.sugarlabs.org/sources/honey/gst-plugins-espeak/gst-plugins-espeak-0.3.5.tar.gz
$ tar xvf gst-plugins-espeak-0.3.5.tar.gz
$ cd gst-plugins-espeak-0.3.5
$ ./configure
$ make
$ sudo make install

Installing the ladspa plugin support
The ladspa gst-bad plugins contains a few cool filters. In my example, i use the "speed" filter to controll the pitch of the output voice. This part will cover how to make the ladspa filters working.

*) install the ladspa headers and the "gst-bad" plugins
$ sudo apt-get install ladspa-sdk gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse

*) download and install the latest ladspa sources from http://www.ladspa.org/download
$ wget http://www.ladspa.org/download/cmt_src.tgz
$ tar xvf cmt_src.tgz
$ cd cmt/src
$ make
$ sudo make install
$ cd ../..
$ wget http://www.ladspa.org/download/ladspa_sdk.tgz
$ tar xvf ladspa_sdk.tgz
$ cd ladspa_sdk/src
$ make
$ sudo make install

You might need to add the plug in path. Do it by adding this to your ~/.bashrc file:
export GST_PLUGIN_PATH=/usr/local/lib:/usr/lib/gstreamer-0.10

Example code can be found at: https://github.com/lastbil2000/Example/tree/master/Espeak

2012-01-17

Create USB boot disc under Linux

Well if you, like me, managed to destroy your boot sector, the following steps can be a solution; creating a bootable usb disk containing containing the contents of you grub installation.

*) Insert the usb-disk you want to erase/make bootable. Unmount the disk.
$ sudo umount /media/
*) Identify the name of your disk. It should be something like /dev/sdx1
$ ls /dev/sd*
*) Create file system on the drive you identified as your usb-disk
$ mkfs.vfat /dev/sdx1
*) create a folder, mount the disk on that folder, install grub and copy the boot files
$ sudo mkdir boot_disk
$ sudo mount /dev/sdx1 boot_disk
$ sudo grub-install --no-floppy --root-directory=boot_disk /dev/sdc
$ sudo cp -rf /boot/* boot_disk/boot/

Restart and boot. If it fails, your'e doomed.

2012-01-16

Festival as Gstreamer-plugin

One must have working gstreamer installation prior to this.

*) Install the packages:

$ sudo apt-get install festival festival-dev gstreamer-tools

*) Configure your /etc/festival.scm as such:

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)
(set! server_access_list '("localhost\\.localdomain" "localhost"))
;;; Command for Asterisk begin
(define (tts_textasterisk string mode)
(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string)))))
(utt.wave.resample wholeutt 8000)
(utt.wave.rescale wholeutt 5)
(utt.send.wave.client wholeutt)))
;;; Command for Asterisk end

*) Start the server

$ festival --server

*) Test your installation in another console window

$ echo 'Hello G-Streamer!' | gst-launch fdsrc fd=0 ! festival ! wavparse ! audioconvert ! alsasink

2012-01-05

Running Arduino under Linux/Ubuntu

This is a tutorial on how to run arduino development under Ubuntu Linux, including managing the usb permissions.

Look at http://arduino.cc/playground/Linux/All

Download the Arduino IDE by typing
$ sudo apt-get install arduino

Managing USB permissions

*) Configure UDEV. This is for Arduino Uno. Nano has another vendor-id (23xx, i think). Find out by typing while having your device plugged in:
$ lsusb | grep 23[0-9][0-9]

*) Edit the udev rule file:
$ sudo nano /etc/udev/rules.d/81_arduido.rules

*) Add the following line:
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666", SYMLINK+="arduino arduino_$attr{serial}"

*) Restart udev:
$ sudo udevadm control --reload-rules

*) Find the dialout group name (usualy "dialout") by typing:
$ sudo ls -al /dev/ttyACM*

*) Add your self to that group.
$ sudo usermod -a -G

Remember that you will have to disconnect/connect the arduino and log out/log in before any changes take effect. To be extra super sure, reboot your system...

Running Phidgets under Linux/Ubuntu

You might get strange permission errors if trying to access phidget devices. This might solve it. In order for your software to access the USB port, you need to do the following changes:

Make the phidget devices accessable:

*) Open/create the udev rule file
$ sudo nano /etc/udev/rules.d/80_phidget.rules

*) Add the following content:
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666"

*) set USB_DEVFS_PATH to /dev/bus/usb by adding to ~/.bashrc:
export USB_DEVFS_PATH=/dev/bus/usb

*) restart udev:
$ services udev restart

*) if it doesn't work. Try the good old:
$ sudo reboot

General libraries needed:
$ sudo apt-get install libusb-dev

Installing libs for C development
*) Install lib-usb
$ sudo apt-get install libusb-dev

For the latest c drivers go to http://www.phidgets.com/drivers.php and download the Linux source (currently: http://www.phidgets.com/downloads/libraries/libphidget_2.1.8.20111220.tar.gz)

*) Extract, compile and install

$ tar xvf libphidget_2.1.8.20111220.tar.gz
$ cd libphidget_2.1.8.20111220
$ ./configure
$ make
$ sudo make install

Installing libs for C# development
For the latest c drivers go to http://www.phidgets.com/drivers.php and download the windows libs (currently: http://www.phidgets.com/downloads/libraries/Phidget21-windevel_2.1.8.20111220.zip)
*) Extract and install
$ unzip Phidget21-windevel_2.1.8.20111220.zip
$ cd phidget21-windevel/
$ sudo gacutil -i Phidget21.NET.dll

The file will be located in directory in /usr/lib/mono/gac/Phidget21.NET/

Compiling OpenCV under Linux/Ubuntu

A tutorial on how to install and start developing OpenCV applications under Ubuntu/Linux with example code.
Installation
Installation guide found on:
http://opencv.willowgarage.com/wiki/InstallGuide

*) Install the development packages and other possible required packages
$ sudo apt-get install libcv-dev libcvaux-dev libhighgui-dev libbz2-dev

*) One might need the bz2-libs as well, which can be downloaded from
http://pkgs.org/download/bzip2-libs

*) Install cmake
$ sudo apt-get install cmake

*) Download the source (Currently OpenCV-2.3.1a)
$ svn co https://code.ros.org/svn/opencv/trunk/opencv
$ cd opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
$ make
$ sudo make install

*) Make sure you have /usr/local in your PATH and /usr/local/lib in your LD_LIBRARY_PATH (or in your ~/.bashrc file
$ export PATH=$PATH:/usr/local/lib:/usr/local
$ export LD_LIBRARY_PATH=/usr/local/libSimple test program
This is a simple program for testing my opencv installation. It should load an image, create a window containing the input from the first available camera unit and display it on the screen. It was the first program i wrote and was never intended to be used in demonstration purposes and should thus only be viewed as an of-context reference to some of the opencv features available.

Use
$ ./run.sh
To compile and run.

https://sites.google.com/site/wessmansourcecode/opencv.example.tar.gz

CMU Sphinx under Ubuntu/Linux

CMU Sphinx is a set of tools for automatic speech recognition. Here's an example of how to install it and a simple C program with comments.

More information can be found here:
http://cmusphinx.sourceforge.net/


Gstreamer

This example requires Gstreamer. Prior to installation, you will have to download and install it.

$ sudo apt-get install gstreamer0.10-plugins-base

Installation

*) Download the latest sources of sphinx base and pocket sphinx (currently, version 0.7):
http://sourceforge.net/projects/cmusphinx/files/sphinxbase/
http://sourceforge.net/projects/cmusphinx/files/pocketsphinx
*) unpack and install
$ tar xvf sphinxbase-0.7.tar.gz
$ cd sphinxbase-0.7
$ ./configure
$ make
$ sudo make install
$ tar xvf pocketsphinx-0.7.tar.gz
$ cd pocketsphinx-0.7/
$ ./configure
$ make
$ sudo make install

*) Make sure you have paths configured correctly in your ~/.bashrc file:
export LD_LIBRARY_PATH=/usr/local/lib
export PATH=$PATH:/usr/local/lib:/usr/local
Test your installation

Download a simple program and type
$ ./run.sh
to compile and run.
It will simply recognize a few words and display them (like "hello world", "who are you".
https://sites.google.com/site/wessmansourcecode/pocket.example.tar.gz

How does it work?Take a look at the web site of the CMPSphinx team.My intentions are to publish more of my knowledge later on...

Installing GStreamer under Linux

This article will describe how to install and run a simple c GStreamer application under linux.

*) Install the gstreamer development files and the alsa and vorbis support
$ sudo apt-get install libvorbis-dev flex libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

You might need to install additional packages. Your ./configure output will inform you about missing packages (ie: configure: error: Could not find).

*) Download the latest GStreamer source from
http://gstreamer.freedesktop.org/src/gstreamer/
http://gstreamer.freedesktop.org/src/gst-plugins-base/
http://gstreamer.freedesktop.org/src/gst-plugins-good/
Example:
$ wget http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.11.1.tar.gz
$ wget http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.11.1.tar.gz

$ wget http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.30.tar.gz


*) Make sure you have paths configured correctly in your ~/.bashrc file:
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export GST_PLUGIN_PATH=/usr/local/lib
export PATH=$PATH:/usr/local/lib:/usr/local

*) Extract, compile and install the files (do this for every package accordingly)
$ tar xvf gstreamer-0.11.1.tar.gz
$ cd gstreamer-0.11.1
$ ./configure
$ make
$ sudo make install
$ cd ..
$ tar xvf gst-plugins-base-0.11.1.tar.gz
$ cd gst-plugins-base-0.11.1
$ ./configure
$ sudo make
$ sudo make install
$ cd ..
$ tar xvf gst-plugins-good-0.10.30.tar.gz
$ cd gst-plugins-good-0.10.30
$ ./configure
$ sudo make
$ sudo make install

To compile:
$ gcc `pkg-config --cflags --libs gstreamer-0.10 gstreamer-plugins-base-0.10` [filename.c] -o [output file]
In order to compile under Ubuntu 11.x (due to changes to the ordering of pkg-config statements) use:
$ gcc `pkg-config gstreamer-0.10 --cflags` [filename.c] -o [output file] `pkg-config gstreamer-0.10 --libs`

Install IronRuby for MonoDevelop / C# under Linux

A tutorial on how to prepare your .NET4 environment for ruby scripts under Linux / Ubuntu.

Gainet a lot of information from this tutorial: http://zuulcat.com/2011/06/06/installing-ironruby-from-source-on-mono/

Installing ruby runtime
*) If you have Ruby binaries installed you can skip this step (the latest source can be found at http://www.ruby-lang.org/en/downloads/ )
*) Download the latest source (currently, 1.9.3)
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
$ tar xvf ruby-1.9.3-p0.tar.gz
$ cd ruby-1.9.3-p0/
$ ./configure --prefix=/usr
$ make
$ sudo make install

*) Install xbuild
$ sudo apt-get install mono-xbuild

*) Make sure you are running the latest .NET 4.0 framework (see my previous post)
You need mono 2.10.x. In order to check your version type
$ dmcs --version
$ xbuild /version

*) Download and install the IronRuby runtime libraries.
$ git clone git://github.com/IronLanguages/main.git src

*) Build the solutions needed
$ cd src
$ xbuild /p:Configuration=Debug Solutions/Ruby.sln

*) Add the libraries to the assembly cache. Make sure the files are added to the right directory. You can specify it by using the -root parameter (ie: gacutil -root /usr/lib -i library.dll if your gac path is /usr/lib/mono/gac).
$ cd bin/Debug
$ sudo gacutil -i IronRuby.dll
$ sudo gacutil -i Microsoft.Scripting.dll
$ sudo gacutil -i Microsoft.Dynamic.dll
$ sudo gacutil -i IronRuby.Libraries.dll

*) Gathering and installing binary and source files

$ sudo mkdir -p /usr/local/ironruby/bin
$ sudo cp * /usr/local/ironruby/bin
$ sudo mkdir /usr/local/ironruby/lib
$ sudo cp -R ../../Languages/Ruby/StdLib/* /usr/local/ironruby/lib
$ sudo cp -R !(*.bat) ../../Languages/Ruby/Scripts/bin/ /usr/local/ironruby/bin

I WILL add an example of a ironruby project here. later.