Introduction to Speech and Language Processing

Trinity Term 2017, Wednesdays 2-3.30, Basement lecture room, 47 Wellington Square

Professor J. S. Coleman

This non-examined course will introduce a range of computational techniques for the analysis of speech and language. The target audience is 1st year M.Phil. and D.Phil. students specializing in phonetics or sociophonetics, but the course may also be of some use to students interested in psycholinguistics or computational linguistics (in a general sense rather than as a specialism), and it will touch upon probabilistic parsing in syntax. The course attempts to introduce the necessary technical concepts as gently as possible and has a strongly practical focus.

No prior knowledge of digital signal processing, computer programming, probability theory or automata theory is assumed, but as the material will be covered incrementally and intensively, the full active participation of all who come is essential, and attendance at later sessions is predicated on attendance at earlier ones. The weekly format will be preliminary reading, a 1 hour class, followed by exercises and private study of computer programs developed week-by-week.

Originally designed as an 8 week course, this term we shall only tackle an abbreviated schedule of 5 sessions over 6 weeks (see below). The course content will follow selected chapters from my textbook, Introducing Speech and Language Processing, which was developed from earlier cycles of this course in years past. Course participants are not required and will not need to purchase the textbook, unless they wish to: all necessary material (except for the text of the classes!) will be provided. The programming languages used in the textbook are C and Prolog, but these classes will be made somewhat easier by using GNU/Octave (Matlab) instead of C.

All who wish to attend are asked to complete the preliminary exercise prior to the first lecture, and bring their answer with them to the class.

Preliminary exercise: plotting a sine wave.

In order to follow along during the classes and to do the practical assignments in your own time, you'll need to bring your own laptop; I'm anticipating that some people will have Apple laptops, others will have Windows machines, and perhaps some people (like me) will be using Linux. I will provide software and tuition suitable for all these platforms; I'll also ask you to download and install various pieces of software in advance, in readiness for the classes.

Whatever kind of computer you've got, the main software we shall be using is GNU Octave, an open-source package that is similar to Matlab (and somewhat like R). It is really quite simple to start to learn, and in the classes I shall take you step-by-step through many useful examples.

It is very simple to download and install Octave in Linux, or Windows, from here:

It is possible, but can be a little more difficult, to install Octave on a Mac, from here: There is some guidance at

If all else fails, our IT wizards here have produced a package for Macs that makes it somewhat easier: this installs Linux on your Mac as a "virtualbox" virtual machine, with Octave installed in Linux. The instructions for that are here.

One way or another, you'll need to get Octave installed and running on your laptop. It would be helpful if you test out Octave with some simple computations such as these:

> x  = [1 2 3 4 5];

> y = x.^2

ans =

    1    4    9   16   25

> plot(x,y)

(This should open a new window and plot a figure.) Please also download and install the following extra packages in Octave (NB these are already included in the Mac virtual machine download mentioned above):

> pkg install -forge io

> pkg install -forge statistics

> pkg load statistics

And also:

> pkg install -forge control

> pkg install -forge signal

> pkg load signal

If any of the above doesn't work for you, or is too difficult, please (a) don't panic! (b) contact me by email so we can help you. The course is practical, so we shall be taking everything one step at a time. But if you could get the software onto your laptop before we get started, that could save some time in the first session.

Please inform me what kind of laptop (i.e. Windows, Mac, Linux flavour) you will be bringing.
You'll also need Prolog for the later classes. I suggest SWI-Prolog. Other software that would be useful to have:

Reading list

Week 1, 26th April. Digital signals. Generation of a sine wave.  Based on chapter 2.

    Audio files: cosine.dat (same as cosine.raw)

Week 2, 3rd May. Digital filters.  Based on chapter 3.

    Audio files: joe.dat; joe.wav

Frequency analysis. (Fourier spectrum, spectrogram.) Based on chapter 4. Read about cepstrum and linear prediction for homework.

Week 3. No class. For the demonstrations in the next class, you'll need to have Prolog installed (e.g. SWI-Prolog)

Week 4, 17th May. Finite-state automata

Week 5. 24th May. Probabilistic finite-state models; language models, speech recognition and forced alignment.

Week 6, 31st May. Parsing: a quick introduction.