Анализ (идентификация) голоса в Matlab

Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 12:42, курсовая работа

Описание работы

Тоновый диапазон человеческого голоса представлен последовательностью тонов, которые могут быть произведены голосовым аппаратом в пределах границ между самым низким и самым высоким звуками. Человеческий голос обычно включает в себя тоны от 64 до 1300 герц. В двух формах проявления человеческого голоса - пении и разговоре - качества голоса представлены несколько различно. Разговорный голос составляет лишь 110 от общего диапазона голоса. Тоновый охват певческого голоса значительно шире разговорного и зависит от вокального образования. Сила подаваемого звука определяется интенсивностью напряжения голосовых складок и величиной давления воздуха в подсвязочном пространстве. И тот и другой процесс регулируются центральной нервной системой.

Файлы: 1 файл

идентификация голоса.doc

— 838.50 Кб (Скачать файл)

у = 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’

 

    1. Спектрограмма

Если спектр сигнала меняется во времени, то для оценки спектра целесообразно использовать спектрограмму сигнала. Спектрограммой (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(window)- 
noverlap)), где nх - длина вектора сигнала. Параметр F- вектор частот, 
Т - вектор моментов времени, его длина равна k.

Если выходные параметры функции не указываются (spectrogram(x, 
window, noverlap, nfft, Fs)), то строится трехмерный график спектраль- 
ной плотности мощности в координатах: время, частота, уровень.

Обязательным  входным параметром функции является вектор значений 
сигнала х, остальные параметры имеют значения по умолчанию, которые используются, если в качестве параметра указана пустая матрица ([]) или если несколько последних параметров при вызове опущены.

[V,fs,b]=wavread(‘c:\1\female1f.wav’); 
spectrogram( V,256,128,[],fs,'yaxis'); 

Рис.2. Спектрограмма файла female1f.wav

Здесь во второй строке примера для параметра nnft используется

значение по умолчанию - максимальное из двух чисел: 256 и 2k. Значе- 
ние к таково, что выполняется условие 2k> window.

 

 

    1. Операции над звуковыми файлами

Система 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.

 

 

  1. Исследование мужского и женского голосов

Для примера  возьмем два образца женского и два образца мужского голосов. В пакете MATLAB построим их спектрограммы, амплитудный и фазовый спектры.

 

Амплитудный спектр сроим следующим образом:

[s, fs] = wavread(c:\1\female1f.wav');

spec = abs(fft(s));

spec = spec(1:end/2);

freq = (fs/2)*(1:length(spec))/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))/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\female1f.wav’); 
spectrogram( V,256,128,[],fs,'yaxis'); 

Рис. 11 Спектрограмма female1f.wav

Рис. 12 Спектрограмма female2a.wav

Рис. 13 Спектрограмма male1f.wav

Рис. 14 Спектрограмма male2a.wav

 

 

  1. Выводы

Проанализировав данные диаграммы, можно определить, кому принадлежит речь – мужчине или женщине. У мужчин больше амплитуда голоса и более ярко выражены низкие частоты, в то время как у женщин амплитуда голоса ниже и ярче выражены высокие частоты.

Анализ и  обработку речи можно осуществлять с помощью таких программ, входящих в пакет MATLAB, как Simulink, Wavelet, Signal processing.

 

  1. Литература
  2. Введение в цифровую обработку речевых сигналов : учеб. Пособие \ Х. М. Ахмад, В. Ф. Жирков ; Владим. Гос. ун-т. – Владимир : Изд-во Владим. Гос. ун-та, 2007. – 192 с. – ISBN 5-89368-751-5.
  3. Исследование алгоритмов обработки сигналов в системе 
    МАТLАВ : метод, указания к лабораторным работам / Владим. 
    гос. ун-т ; сост. Е. К. Левин. - Владимир : Изд-во Владим. гос. 
    ун-та, 2011. – 78 с.
  4. Распознавание речи. Выделение человеческого голоса среди бытовых шумов : Курсовая работа \ А. В. Буторина ; Моск. Гор. Псих.-Педагог. ун-т. 2007. – 43 с.
  5. http://www.cyberforum.ru/matlab/thread729893.html

 

 

 

 

 

Вопросы

  1. Частотный диапазон речи
  2. С помощью каких команд осуществляется запись и считывание речи в MATLAB?
  3. Что такое спектрограмма?
  4. Как читать спектрограмму?
  5. Чем отличаются фазовые спектры мужского и женского голосов?
  6. Чем отличаются амплитудные спектры мужского и женского голосов?

Информация о работе Анализ (идентификация) голоса в Matlab