Анализ (идентификация) голоса в Matlab
- Характеристики голоса
Разложим голос
на составляющие, основными параметрами
являются:
частота, сила, длительность и тембр, которые,
как величины, можно
анализировать и но отдельности. В действительности,
однако, подобный
анализ не представляет собой реального выражения голоса, поскольку
эти
качества образуют единый неделимый комплекс.
Высота издаваемого звука зависит от числа колебаний голосовых складок в 1секунду. Голосовые складки способны приходить в колебательные движения не только целиком, всей своей массой, но и отдельными участками. Только этим можно объяснить то, что одни и те же голосовые складки могут колебаться с различной частотой: примерно от 80 до 10 000 колебаний в секунду и даже больше.
Тоновый диапазон
человеческого голоса представлен последовательностью тонов,
которые могут быть произведены голосовым
аппаратом в пределах границ между самым
низким и самым высоким звуками. Человеческий
голос обычно включает в себя тоны от 64
до 1300 герц. В двух формах проявления человеческого
голоса - пении и разговоре - качества голоса
представлены несколько различно. Разговорный
голос
составляет лишь 110 от общего диапазона
голоса. Тоновый охват певческого голоса
значительно шире разговорного и зависит
от вокального образования. Сила подаваемого
звука определяется интенсивностью напряжения
голосовых складок и величиной давления
воздуха в подсвязочном пространстве.
И тот и другой процесс регулируются центральной
нервной системой. Контроль осуществляется
с помощью слуха. Если же взаимоотношения
между этими процессами нарушаются, например,
при крике ужаса, то превалирование давления
внутри трахеи вызывает звук, который
характеризуется отсутствием чистой тональности.
Ниже представлен диапазон человеческого голоса (в Герцах):
- Бас - 75-300
- Баритон - 100-400
-Тенор - 120-500
-Контральто - 170-780
- Меццо-сопрано - 200-900
-Сопрано - 230-1000
-Колоратурное сопрано - 260-1400
Для сравнения приведен частотный диапазон музыкальных инструментов:
Контрабас - 40-300
Виолончель - 65-880
Альт- 130-1240
Скрипка - 210-2800
Фагот - 60-630
Кларнет- 140-1980
Гобой - 230-1480
Флейта - 240-2300
Туба - 45-320
Тромбон - 80-500
Валторны - 60-740
Труба - 160-990
Таким образом
человеческий голос имеет диапазон
звучания от 75 до 110
Герц, который так или иначе перекрывает
(заглушается, смешивается) с
любым музыкальным инструментом (оптимальная
точка - 300 Герц).
Так же необходимо
учитывать силу звучания (динамический
диапазон)
данных инструментов.
Динамический
диапазон гитары составляет 15дБ; органа
— 35дБ; рояля —
45дБ; женский голос - 20-35дБ; мужской голос - 20-45дБ,
эстрадного
оркестра-45-55дБ, симфонический оркестр
60-75дБ.
Сообщение, передаваемое с помощью
речевого сигнала, — дискретно,
т.е. может быть представлено в виде последовательности
символов из ко-
нечного их числа. Звуковые символы, из
которых составлен речевой сиг-
нал, называются фонемами.
Речь с физической
точки зрения состоит из последовательности
зву-
ков с паузами между их группами. Схема
речеобразования у
человека представлена на рис.
1.
Рис. 1 Схема речеобразования у человека
При нормальном
темпе речи паузы появляются между
отрывками
фраз. Как правило, слова произносятся
слитно, хотя слушающий воспри-
нимает слова но отдельности. При замедленном
темпе речи, например при
диктовке, паузы могут делаться между
словами и даже их частями. Пред-
логи, союзы звучат всегда слитно с последующим
словом.
Частотный диапазон речи находится в пределах 70 - 1400 Гц.
Один и гот
же звук речи разные люди произносят по-разному.
Про-
изношение звуков речи зависит от ударения,
соседних звуков и т. п. Но
при всем многообразии в их произношении
звуки являются физическими
реализациями (произнесением) ограниченного
числа обобщенных звуков
речи (фонем). Фонема - это то, что человек
должен произнести, а звук - то,
что человек фактически произносит. Фонема
по отношению к звуку речи
играет ту же роль, что и образцовая буква
по отношению к ее рукописной
форме в конкретном написании.
Звуки речи делятся
на звонкие и глухие. Звонкие звуки
образуются с
участием голосовых связок, в этом случае
находящихся в напряженном со-
стоянии. Под напором воздуха, идущего
из легких, они периодически раз-
двигаются, в результате чего создается
прерывистый ноток воздуха. Им-
пульсы потока воздуха, создаваемые голосовыми
связками, с достаточной
точностью могут считаться периодическими.
Соответствующий период
повторения импульсов называют периодом
основного тона голоса Т0- а
обратную величину
1/Т0 - частотой основного
тона. Если связки тонкие и
сильно напряжены, то период получается
коротким и частота основного
тона высокой; для толстых, слабо напряженных
связок - низкой. Частота
основного тона для всех голосов лежит
в пределах 70 - 450 Гц. При произ-
несении речи она непрерывно изменяется
в соответствии с ударением,
подчеркиванием звуков и слов, а также
с проявлением эмоций (вопрос,
восклицание, удивление и т. д.). Изменение
частоты основного тона назы-
вается интонацией. У каждого человека
свой диапазон изменения основ-
ного тона {обычно он бывает немногим более
октавы) и своя интонация.
Последняя имеет большое значение для
узнавания говорящего.
Основной тон,
интонация, устный почерк и тембр голоса служат
для опо-
знавания человека, и степень достоверности
такая же высокая, как по от-
печаткам пальцев. Импульсы основного
тона имеют пилообразную форму,
и поэтому при их периодическом повторении
получается дискретный
спектр с большим числом гармоник (до 40),
частоты которых кратны час-
тоте основного тона. Огибающая спектра
основного тона имеет спад в сто-
рону высоких
частот с крутизной около 6 дБ/окт,
поэтому для мужского
голоса уровень составляющих
на частоте 3000 Гц ниже их уровня на час-
тоте 100 Гц примерно на 30 дБ. При произнесении
глухих звуков связки
находятся в расслабленном состоянии,
поток воздуха из легких свободно
проходит в полость рта. Встречая на своем
пути различные преграды в ви-
де языка, зубов, губ, он образует завихрения,
создающие шум со сплош-
ным спектром.
Согласные по способу
образования делятся на сонорные
(л, ль, р, рь.
м, мь, и, нь, й), щелевые (ж, з, зь, в, вь, ш,
с, сь, ф, фь, х, хь), взрывные
(б, бь, д, дь, г, гь, и, иь, т, ть,
к, кь) и аффрикаты (ц, ч — комбинация глу-
хих взрывных и щелевых). Гласных фонем
всего шесть: а, о, у, э, и, ы
(гласные е, я, ё, ю - составные из и краткого
или мягкого знака и гласных
э, а, о, у).
Звонкие звуки
речи, особенно гласные, имеют высокий
уровень ин-
тенсивности, глухие - самый низкий. Громкость
речи непрерывно изменя-
ется, особенно резко при произнесении
взрывных звуков. Динамический
диапазон уровней речи находится в пределах
35 - 45 дБ. Гласные звуки ре-
чи имеют в среднем длительность около
0,15 с, согласные - около 0,08
(звук и - около 30 мс).
Звуки речи неодинаково
информативны. Так, гласные звуки
содер-
жат малую информацию о смысле речи, а
глухие согласные наиболее ин-
формативны (например, в слове «посылка» последовательность «о,
ы, а»
ничего не говорит, а «п, с, лк» дает почти
однозначный ответ о смысле).
Поэтому разборчивость речи снижается
при действии шумов, в первую
очередь из-за маскировки глухих звуков
[6, 7, 8].
Известно, что
для передачи одного и того же сообщения по телегра-
фу и по речевому тракту требуется различная
пропускная способность. Для
телеграфного сообщения достаточна пропускная
способность не более 100
бит с, а для речевого - около 100 000 бит с
(полоса равна 7 000 Гц, дина-
мический диапазон 42 дБ, т.е. требуется
семизначный код, откуда имеем
2 • 7000 -7=98 000 бит/с), т.е. в 100 раз большая.
Образование звуков
речи происходит путем подачи команд
к муску-
лам артикуляционных органов речи от речевого
центра мозга. Общий по-
ток сообщений от него составляет в среднем
не более 100 бит/с. Вся ос-
тальная информация в речевом сигнале
называется сопутствующей.
- Запись и считывание данных из речевого сигнала в MATLAB
В MATLAB предусмотрены средства
для воспроизведения и записи
звука (речи), а также для работы со звуковыми
файлами формата wav.
Чтение wav-файлов. Для
считывания wav-файлов в MATLAB ис-
пользуется функция wavread. В простейшем
случае она может быть ис-
пользована следующим образом:
у = wavread ('filename'),
где 'filename' - имя звукового
файла (расширение wav указывать не обяза-
тельно). В имя файла необходимо включить
полный путь, за исключением
тех случаев, когда файл находится в текущем
(для MATLAB) каталоге или
в одном из каталогов, входящих в список
поиска MATLAB. Другой спо-
соб, не требующий указания имени файла,
— полный путь, который заключается в
определении местонахождения файла на
жестком диске с помощью меню MATLAB.
В результате вызова функции
в переменную у будет помещено
все
содержимое указанного файла. Строки матрицы
у соответствуют отсчетам
сигнала, столбцы - каналам, которых в wav-файле
может быть один (моно-
канал) или два (стереоканал).
Помимо отсчетов сигнала
в wav-файлах хранится и служебная ин-
формация, которая содержит следующие
параметры:
- частоту дискретизации,
для определения которой в указанную функ-
цию необходимо включить второй выходной
параметр:
[у, Fs] = wavread ('filename'),
где Fs — частота дискретизации,
Гц;
— число бит на отсчет,
для определения которого необходимо
добавить
еще один выходной параметр:
[у, Fs, bils] = wavread ('filename');
— число отсчетов и каналов
записи. Для получения данной информа-
ции необходимо вызвать функцию wavread с двумя входными
парамет-
рами: именем файла и текстовой строкой
'size':
wavesize = wavread ('filename*,
'size').
При вызове такой функции из
wav-файла извлекается служебная ин-
формация, которая возвращается в виде
двухэлементного вектор-строки,
первый элемент которого содержит число
отсчетов, второй - число каналов;
— продолжительность звучания
сигнала (в секундах), которую можно
определить следующим образом:
wavesize (1) Fs,
где 1 указывает на первый параметр вектора wavesize.
Имеются и возможности
считывания данных из wav-файла не цели-
ком, а отдельными фрагментами. Для этого
используется второй входной
параметр функции wavread. Если этот
параметр является числом, будет
считано соответствующее количество отсчетов,
начиная с первого:
у = wavread ('filename', N).
Если нужный фрагмент расположен
не в начале файла, придется ука-
зать его начало и конец:
у = wavread ('filename', [nl, n2]).
В результате в переменную
у будут считаны отсчеты с
номерами от
n1 до n2 включительно
(нумерация отсчетов начинается с единицы).
Чтобы узнать объем
памяти (в килобайтах), требуемый
в MATLAB
для хранения записи, необходимо использовать
следующую функцию:
prod (wavesize)*8/1024.
Для просмотра
речевого (звукового) сигнала выведем
его в виде гра-
фика с помощью следующей функции:
plot (у).
Если необходимо
вывести график по каналам стереозаписи,
то при-
меняют следующие функции:
subplot (2, 1, 1); plot (:, 1); subplot
(2, 1, 2); plot (:, 2) или просто
plot(y).
Если сигнал
имеет большую длину, то можно
использовать следую-
щую функцию (фрагменты выводятся друг
иод другом):
strips (х, N),
где х - вектор отсчетов сигнала (двумерный
массив не допускается), N —
число отсчетов в каждом фрагменте (этот
параметр можно опустить, по
умолчанию размер фрагмента составляет
200 отсчетов).
Запись wav-файлов. Для записи вектора
(или матрицы) на диск в
виде wav-файла используется функция wavwrite'.
wavwrite (у, Fs, N, 'filename'),
где у — записываемые
данные, Fs - частота дискретизации,
Гц, N — число
бит на отсчет (8 или 16), 'filename' - имя создаваемого
файла. Параметры
Fs и N можно опускать,
при этом используются значения по умолчанию:
Fs = 8 000 Гц, N= 16.
Записываемые
данные должны быть вещественными и
лежать в диа-
пазоне от —1 до 1. Значения, выходящие
из этого диапазона, будут обреза-
ны и сделаны равными.
Воспроизведение звуковых файлов. Помимо работы с wav-файлами можно воспроизводить вектор и матрицу в звуковом в виде с использованием следующих функций:
— sound, синтаксис которой записывается следующим образом:
sound (у, Fs, bits),
где у — вектор или двухстолбцовая матрица сигнала, Fs — частота дискретизации, Гц, bits - число бит на отсчет (8 или 16).
Параметры Fs и bits можно опускать, при этом
их значения будут
приниматься по умолчанию.
Выходных параметров
у у функции нет. После вызова
она передает
вектор у звуковой карте для воспроизведения
и сразу же, не дожидаясь
окончания звука, возвращает управление
MATLAB;
— wavplay, синтаксис которой имеет следующий вид:
wavplay (у, Fs, 'mode'),
где параметр mode управляет режимом воспроизведения,
который может
принимать два значения:
- 'sync' - синхронный
режим, означающий что функция вернет
управ-
ление интерпретатору MATLAB только после
окончание звука;
— 'async' — асинхронный
режим, при котором функция передает дан-
ные для воспроизведения звуковым драйверам
Windows и сразу же воз-
вращает управление системе MATLAB. не дожидаясь
окончания звука.
Параметры Fs и mode можно опускать,
при этом их значения при-
нимаются по умолчанию: Fs =11025 Гц и 'mode' = 'async'.
Запись звука
(речи). Функция wavrecord позволяет
записать звук в
неременную MATLAB с помощью звуковой карты
компьютера:
у = wavrecord (n, Fs, ch, 'dtype'),
где n - число записываемых
отсчетов, Fs - частота дискретизации,
Гц.
ch — число каналов
записи, 'dtype' — тип записываемых
данных.
Возвращаемый
результату - матрица, каждый столбец
которой соот-
ветствует одному каналу записи. При стереозаписи
первый столбец - ле-
вый канал, второй - правый канал.
Для параметра dtype возможны следующие значения:
— 'double’ - 16-битная запись, данные масштабируются
к диапазону от
-1 до 1 и представляются в восьмибайтовом
формате с плавающей запятой;
- 'single' - 16-битная
запись, данные масштабируются к диапазону
-1...1 и представляются в четырехбайтовом
формате с плавающей за-
нятой;
— ‘untl6’ - 16-битная
запись, данные представляются в двухбайтовом
целочисленном формате (диапазон от-32
768 до 32 767);
— 'unint8' - 8-битная
запись, данные представляются в однобайтовом
беззнаковом целочисленном формате (диапазон
от 0 до 255, нулевому на-
пряжению на входе соответствует значение
«128»).
Входные параметры Fs, ch, dtype можно
опускать, при этом их зна-
чения будут приниматься но умолчанию: Fs =11 025 Гц, ch =1, dtype =
='double’
- Спектрограмма
Если спектр сигнала меняется во времени, то для оценки спектра целесообразно использовать спектрограмму сигнала. Спектрограммой (spectrogram) сигнала называется его мгновенный спектр, зависящий от времени. Для вычисления спектрограммы вектор сигнала разбивается на сегменты (в общем случае с перекрытием). Для каждого сегмента вычисляется спектр с помощью функции fft. Набор спектров всех сегментов и образует спектрограмму. Для вычисления спектрограммы служит функция spectrogram.
Синтаксис вызова
функции: [S,F,T]=spectrogram (x,window,
nover-
lap, nfft,Fs), где x - вектор сигнала; window - вектор весовой
функции
(если вместо вектора используется целое
число, то используется весовая
функция по умолчанию - функция Хэмминга
соответствующей длины);
noverlap - величина
перекрытия соседних сегментов сигнала; nfft - чис-
ло точек преобразования Фурье; Fs - частота дискретизации. S - матри-
ца, каждая колонка которой содержит (nfft/2+l) отсчетов
спектра для дан-
ного момента времени (если nfft — нечетное
число, количество отсчетов
равно (nfft+l)/2). Число
колонок k=nx((nx-noverlap)/(length(
noverlap)), где nх - длина вектора
сигнала. Параметр F- вектор частот,
Т - вектор моментов
времени, его длина равна k.
Если выходные
параметры функции не указываются (spectrogram(x,
window, noverlap, nfft, Fs)), то строится трехмерный
график спектраль-
ной плотности мощности в координатах:
время, частота, уровень.
Обязательным
входным параметром функции является
вектор значений
сигнала х, остальные параметры имеют
значения по умолчанию, которые используются,
если в качестве параметра указана пустая
матрица ([]) или если несколько последних
параметров при вызове опущены.
[V,fs,b]=wavread(‘c:\1\
spectrogram( V,256,128,[],fs,'yaxis');
Рис.2.
Спектрограмма файла female1f.
Здесь во второй строке примера для параметра nnft используется
значение по
умолчанию - максимальное из двух чисел:
256 и 2k. Значе-
ние к таково, что выполняется условие 2k> window.
- Операции над звуковыми файлами
Система MATLAB позволяет читать и записывать
файлы формата
wav. Чтение осуществляется с помощью функции wavread, а запись
- с
помощью функции wavwrite.
[V,f,b] = wavread ('*.wav');
Звуковая информация
из файла считывается в матрицу V, состоящую
из двух столбцов, в скалярную переменную f считывается
значение ча-
стоты дискретизации, а в переменную b - число двоичных
разрядов.
Добавим к матрице V белый шум.
[m,n] = size(V);
VI = гаndn( m,n );
s = 0.05;
V2 = V + 5* VI;
Здесь в первой
строке определяется число строк
и столбцов матрицы
V. Вторая строка с помощью функции randn(m,n) создает
матрицу VI,
которая содержит случайные числа, распределенные
по закону Гаусса
(по нормальному закону), и которая имеет
тот же размер, что и матрица
V. Матрица VI умножается
на коэффициент s и складывается
с матри-
цей V, образуя матрицу V2 зашумленного
звука. Функция sound осуществляет
воспроизведение звука, получая в качестве
аргумента вещественный вектор или матрицу
размерами N х 2 (для стереозвука),
содержащие последовательности измерений
громкости звука.
sound(V,
f, b )
sound(V2, f, b)
Значения элементов
матрицы отсчетов должны быть ограничены
ди-
апазоном от -1.0 до +1.0. Вне этого диапазона
значения матрицы огра-
ничиваются (имеет место клиппированный
звук). Аналогичная функция
soundsc перед воспроизведением
звука обеспечивает автоматическое
масштабирование значений матрицы до
диапазона: -1... +1 — клиппиро-
вания звука не происходит.
soundsc(V,
f, b )
soundsc(V2, f, b)
Чтобы сохранить
результаты экспериментов со звуком
в звуковом
файле, следует применить функцию wavwrite. В данном
случае резуль-
таты эксперимента с зашумлением сохраним
в файле 'Soundl.wav':
wavwrite(V2, f, b, 'Soundl.wav');
Здесь первым аргументом
является матрица (для монофоническо-
го звука - это вектор) звуковых отсчетов,
вторым - частота дискретиза-
ции, третьим - разрядность отсчетов, а
последним - имя файла. Если
не указывать пути к файлу, то он будет записан в текущий
рабочий ка-
талог пакета МАТLAB.
- Исследование мужского и женского голосов
Для примера возьмем два образца женского и два образца мужского голосов. В пакете MATLAB построим их спектрограммы, амплитудный и фазовый спектры.
Амплитудный спектр сроим следующим образом:
[s, fs] = wavread(c:\1\female1f.wav');
spec = abs(fft(s));
spec = spec(1:end/2);
freq = (fs/2)*(1:length(spec))/
plot(freq, spec);
xlabel('Frequency: Hz'); ylabel('Amplitude spectrum');
Рис.3 Амплитудный спектр female1f.wav
Фазовый спектр
[s, fs] = wavread(c:\1\female1f.wav');
spec = phase(fft(s));
spec = spec(1:end/2);
freq = (fs/2)*(1:length(spec))/
plot(freq, spec);
xlabel('Frequency: Hz'); ylabel('Phase spectrum');
Рис.4 Фазовый спектр female1f.wav
Аналогичные операции проделываем с остальными образцами голоса
Рис.5 Амплитудный спектр female2a.wav
Рис.6 Фазовый спектр female2a.wav
Рис.7 Амплитудный спектр male1f.wav
Рис.8 Фазовый спектр male1f.wav
Рис.9 Амплитудный спектр male2a.wav
Рис.10 Фазовый спектр male2a.wav
Построим спектрограммы голосов
[V,fs,b]=wavread(‘c:\1\
spectrogram( V,256,128,[],fs,'yaxis');
Рис. 11 Спектрограмма female1f.wav
Рис. 12 Спектрограмма female2a.wav
Рис. 13 Спектрограмма male1f.wav
Рис. 14 Спектрограмма male2a.wav
- Выводы
Проанализировав данные диаграммы, можно определить, кому принадлежит речь – мужчине или женщине. У мужчин больше амплитуда голоса и более ярко выражены низкие частоты, в то время как у женщин амплитуда голоса ниже и ярче выражены высокие частоты.
Анализ и обработку речи можно осуществлять с помощью таких программ, входящих в пакет MATLAB, как Simulink, Wavelet, Signal processing.
- Литература
- Введение в цифровую обработку речевых сигналов : учеб. Пособие \ Х. М. Ахмад, В. Ф. Жирков ; Владим. Гос. ун-т. – Владимир : Изд-во Владим. Гос. ун-та, 2007. – 192 с. – ISBN 5-89368-751-5.
- Исследование алгоритмов обработки сигналов в системе
МАТLАВ : метод, указания к лабораторным работам / Владим.
гос. ун-т ; сост. Е. К. Левин. - Владимир : Изд-во Владим. гос.
ун-та, 2011. – 78 с. - Распознавание речи. Выделение человеческого голоса среди бытовых шумов : Курсовая работа \ А. В. Буторина ; Моск. Гор. Псих.-Педагог. ун-т. 2007. – 43 с.
- http://www.cyberforum.ru/
matlab/thread729893.html
Вопросы
- Частотный диапазон речи
- С помощью каких команд осуществляется запись и считывание речи в MATLAB?
- Что такое спектрограмма?
- Как читать спектрограмму?
- Чем отличаются фазовые спектры мужского и женского голосов?
- Чем отличаются амплитудные спектры мужского и женского голосов?

- Анализ идеологии и практики этнорелигиозного экстремизма в России
- Анализ и диагностика
- Анализ и диагностика банкротства
- Анализ и диагностика бытовой газовой плиты
- Анализ и диагностика вероятности банкротства ОАО «Фармстандарт-УфаВИТА»
- Анализ и диагностика внутренней среды
- Анализ и диагностика внутрифирменной среды
- Анализ и выявление основных проблем мотивации в ООО «Макдоналдс»
- Анализ и выявление резервов роста объема производства и реализации продукции
- Анализ и графическая интерпретация термина «социология управления»
- Анализ игрушек
- Анализ и даигностика финансово-хозяйственной деятельности предприятия
- Анализ идеализированного цикла поршневого двигателя внутреннего сгорания
- Анализ идейно-художественного своеобразие повести А.И.Куприна "Поединок"