Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 12:42, курсовая работа
Тоновый диапазон человеческого голоса представлен последовательностью тонов, которые могут быть произведены голосовым аппаратом в пределах границ между самым низким и самым высоким звуками. Человеческий голос обычно включает в себя тоны от 64 до 1300 герц. В двух формах проявления человеческого голоса - пении и разговоре - качества голоса представлены несколько различно. Разговорный голос составляет лишь 110 от общего диапазона голоса. Тоновый охват певческого голоса значительно шире разговорного и зависит от вокального образования. Сила подаваемого звука определяется интенсивностью напряжения голосовых складок и величиной давления воздуха в подсвязочном пространстве. И тот и другой процесс регулируются центральной нервной системой.
у = 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.
Вопросы