.. currentmodule:: brian .. index:: pair: example usage; Sound pair: example usage; play pair: example usage; set_default_samplerate .. _example-hears_artificial_vowels: Example: artificial_vowels (hears) ================================== This example implements the artificial vowels from Culling, J. F. and Summerfield, Q. (1995a). "Perceptual segregation of concurrent speech sounds: absence of across-frequency grouping by common interaural delay" J. Acoust. Soc. Am. 98, 785-797. :: from brian import * from brian.hears import * duration = 409.6*ms width = 150*Hz/2 samplerate = 10*kHz set_default_samplerate(samplerate) centres = [225*Hz, 625*Hz, 975*Hz, 1925*Hz] vowels = { 'ee':[centres[0], centres[3]], 'ar':[centres[1], centres[2]], 'oo':[centres[0], centres[2]], 'er':[centres[1], centres[3]] } def generate_vowel(vowel): vowel = vowels[vowel] x = whitenoise(duration) y = fft(asarray(x).flatten()) f = fftfreq(len(x), 1/samplerate) I = zeros(len(f), dtype=bool) for cf in vowel: I = I|((abs(f)cf-width)) I = -I y[I] = 0 x = ifft(y) return Sound(x.real) v1 = generate_vowel('ee').ramp() v2 = generate_vowel('ar').ramp() v3 = generate_vowel('oo').ramp() v4 = generate_vowel('er').ramp() for s in [v1, v2, v3, v4]: s.play(normalise=True, sleep=True) s1 = Sound((v1, v2)) #s1.play(normalise=True, sleep=True) s2 = Sound((v3, v4)) #s2.play(normalise=True, sleep=True) v1.save('mono_sound.wav') s1.save('stereo_sound.wav') subplot(211) plot(v1.times, v1) subplot(212) v1.spectrogram() show()