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 6 sessions (see below). The
course content will follow selected chapters from my textbook, Introducing
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.
It is possible, but can be a little more difficult, to
install Octave on a Mac, from here: https://www.gnu.org/software/octave/download.html
There is some guidance at http://wiki.octave.org/Octave_for_MacOS_X
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
1 4 9 16 25
(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
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.
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:
If you already have and know how to use Praat, that could be useful (but is not essential)
If you don't have or know how to use Praat, you might like to try
wavesurfer instead (downloadable from here),
which I prefer to use:
The following schedule is provisional/indicative, as I am actively reviewing the course content and structure in order to prepare a revised version for next year.
Week 1, 25th April. Digital signals.
Generation of a sine wave.
Based on chapter 2.
cosine.dat (same as cosine.raw)
Week 2, 2nd May. Working with audio files and speech corpora. Frequency analysis. (Fourier spectrum, spectrogram, pitch tracking). Based on chapter 4. Read about cepstrum and linear prediction for homework.
Week 3, 9th May. Introduction
to Functional Data Analysis, for analysis of speech parameters
such as pitch contours.
For the demonstrations in the next
classes, you'll need to have Prolog installed (e.g. SWI-Prolog)
Week 4, 16th May. Finite-state automata.
Week 5. 23rd May. Probabilistic finite-state models; language models, speech recognition and forced alignment.
Week 6, 30th May. Parsing: a quick introduction.