Этот пример показывает, как сжать речевой сигнал с помощью дискретного косинусоидного преобразования (DCT).
Загрузите файл, содержащий слово «strong», на котором говорит женщина и человек. Сигналы дискретизированы на частоте 8 кГц.
load('strong.mat') % To hear, type soundsc(her,fs), pause(1), soundsc(him,fs)
Используйте дискретное косинусоидное преобразование, чтобы сжать женский голосовой сигнал. Разложите сигнал на базисные векторы DCT. В разложении столько членов, сколько выборок в сигнале. Коэффициенты расширения в векторных X
измерьте, сколько энергии сохранено в каждом из компонентов. Отсортируйте коэффициенты от самых больших до самых маленьких.
x = her';
X = dct(x);
[XX,ind] = sort(abs(X),'descend');
Найдите, сколько коэффициентов DCT представляют 99,9% энергии в сигнале. Выражение числа в процентах от общего числа.
need = 1; while norm(X(ind(1:need)))/norm(X)<0.999 need = need+1; end xpc = need/length(X)*100;
Установите, чтобы нуль коэффициенты, которые содержат оставшиеся 0,1% энергии. Восстановите сигнал из сжатого представления. Постройте график исходного сигнала, его реконструкции и различия между ними.
X(ind(need+1:end)) = 0; xx = idct(X); plot([x;xx;x-xx]') legend('Original',[int2str(xpc) '% of coeffs.'],'Difference', ... 'Location','best')
% To hear, type soundsc(x,fs), pause(1), soundsc(xx,fs)
Повторите анализ мужского голоса. Найдите, сколько коэффициентов DCT составляют 99,9% энергии, и выразите это число в процентах от общего количества.
y = him'; Y = dct(y); [YY,ind] = sort(abs(Y),'descend'); need = 1; while norm(Y(ind(1:need)))/norm(Y)<0.999 need = need+1; end ypc = need/length(Y)*100;
Установите остальные коэффициенты, чтобы нуль и восстановить сигнал от сжатой версии. Постройте график исходного сигнала, его реконструкции и различия между ними.
Y(ind(need+1:end)) = 0; yy = idct(Y); plot([y;yy;y-yy]') legend('Original',[int2str(ypc) '% of coeffs.'],'Difference', ... 'Location','best')
% To hear, type soundsc(y,fs), pause(1), soundsc(yy,fs)
В обоих случаях около половины коэффициентов DCT достаточны для разумного восстановления речевого сигнала. Если необходимая энергетическая доля составляет 99%, количество необходимых коэффициентов уменьшается примерно до 20% от общего количества. Получившаяся реконструкция уступает, но все еще внятна.
Анализ этих и других выборок предполагает, что для характеристики голоса мужчины необходимо больше коэффициентов, чем у женщины.