All Projects → kylebgorman → swipe

kylebgorman / swipe

Licence: MIT license
A pitch tracker using Camacho's SWIPE' algorithm, written in C

Programming Languages

c
50402 projects - #5 most used programming language
SWIG
194 projects
matlab
3953 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
Makefile
30231 projects

SWIPE' pitch estimator, v. 1.5

Based on Camacho, Arturo. A sawtooth waveform inspired pitch estimator for speech and music. Doctoral dissertation, University of Florida. 2007.

Implemented in C by Kyle Gorman [email protected]

How to cite:

Please cite this dissertation, and if possible include a URL to the source.

How to install:

For all platforms: To compile, type make at the terminal. To install, type make install at the terminal. You may specify --prefix=PATH/TO/LOCATION if you wish; the default is /usr/local, which places swipe in /usr/local/bin.

Linux: All the large libraries should be available as packages if you're using a "modern" distro. For instance, on a Ubuntu system (Ubuntu 9.04, "Jaunty Jackalope", kernel 2.6.28-13-generic), I ran:

sudo apt-get install libblas-dev liblapack-dev libfftw3-dev libsndfile1-dev swig

This installs the necessary libraries and all their dependencies. Similar incantations are available for other Linux distributions.

Mac OS X: The linear algebra libraries ([C]LAPACK, BLAS) ship with Mac OS X. You will need to install the newest versions of SWIG (if you want Python support), fftw3, and libsndfile

If you are superuser and wish to install globally the autoconf method should work fine:

tar -xvzf downloadedPackage.tar.gz
cd folderOfPackageCreatedByUnTARring/
./configure; make; make install;

These two libraries are also available via Fink and DarwinPorts.

Windows/CYGWIN: Unsupported. Send details of any successes, however.

Audio file formats:

All mono-channel audio recognized by libsndfile should work. Unfortunately, for licensing issues, that does not include MP3.

Miscellany:

This library has now been incorporated into the excellent Speech Signal Processing Toolkit

I also included the original MATLAB code from Camacho. There is also a Python module which calls the swipe code directly. This has only slightly more overhead than the -b batch method from C, if you're going to use a scripting language to do later processing anyways. The following example session (plus the docstrings) should get you started:

>>> from swipe import Swipe
>>> P = Swipe('test.wav', pmin=75, pmax=500, st=.5, dt=0.01, mel=False)
>>> for (t, pitch) in P:
...     if pitch < 200:  # hz
...         print t, pitch
...
...
...
0.1 181.055641496
0.11 181.811640687
0.12 182.419065658
0.13 182.267034374
0.14 181.963321962
0.15 181.811640687
0.16 181.660075933
1.25 180.753790055
1.26 181.811640687
>>> print P.mean()
168.737503785
>>> print P.var()
129.630995655
>>> P.slice(2.5, 3) # remove the samples not between 2.5 and 3 seconds
>>> (intercept, slope) = P.regress()
>>> print slope  # dropping 36 Hz a second in that interval
-35.9938275598
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].