Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.12.150.250] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте.
Узнал про такую вещь как Voice Activity Detection. Кто-нибудь подскажет как её реализовать программно (готовые алгоритмы). Мне нужно реализовать это на C#. При этом мне нужно лишь выделять паузы в аудио файле ссодержащем речь, т.е. никуда потом это передавать это не надо. Т.е. грубо говоря проигрывать речь без пауз. Посоветуйте пожалуйста возможно ли такое и если да то насколько это сложно (возможно есть уже какие-нибудь реализации) Заранее спасибо |
Сообщ.
#3
,
|
|
|
ну по логике
1.определить уровень фонового шума. 2.если амплитуда сигнала выше фонового шума - запись буфера |
Сообщ.
#4
,
|
|
|
antonsrv 8 Спасибо за ссылку.
Цитата ну по логике 1.определить уровень фонового шума. 2.если амплитуда сигнала выше фонового шума - запись буфера Логика вещь полезная, но при курсовом проектировании необходима теоретическая подоплёка более научного характера. Вот и хотелось бы посмотреть на какие-нибудь обзорные статьи с методами и алгоритмами. |
Сообщ.
#5
,
|
|
|
На сколько я понял методов достаточно много. Но как понять какой из них лучше и приемлемее. Если есть у кого какие мысли по этому поводу - поделитесь.
|
Сообщ.
#6
,
|
|
|
Цитата zip-imp @ На сколько я понял методов достаточно много. Но как понять какой из них лучше и приемлемее. Если есть у кого какие мысли по этому поводу - поделитесь. 1. Реализовать все методы, проанализировать результаты и выбрать лучший. 2. Подождать, пока это не проделает кто-нибудь другой. 3. Поискать результаты ранее проделанных исследований. |
Сообщ.
#7
,
|
|
|
Народ)у кого нибудь есть готовые коды по данной теме?или алгоритмы
У меня имееться один,к сожалению не могу до конца разобраться с его работой... %Задача:определение речевой активности %Входные параметры:речевой сигнал,длина сигнала %Выходные параметры:признаки речевой активности %Начальное значение первого кадра сигнала с помощью БПФ квадрат модуля значений %начальной энергии делать, плюс небольшой начальное значение %******************************************************************** [file path]=uigetfile('D:\*.wav') S=strcat(path,file); signal= wavread(S); L=128; %длина сигнала(L-мера всех остальных коэфф.),кол-во отчётов в кадре N=floor(length(signal)./L) ; %общий сигнал кол-во кадров(отсчетов) ,кол-во кадров input_signal=signal(1:L.*N); %size(input_signal); firstframe = input_signal(1:L); %первый кадр fftfirstframe = fft(firstframe) %БПФ первого кадра lambda = ones(L,1).*(abs(fftfirstframe).^2); lambda0 = ones(L,1).*((100./(2.^15)).^2); %Избегайте молчать, в случае бесконечного с/ш beta = lambda+lambda0; %Отношение сигнал / шум, используемые для расчета энергии фонового шума %================================= %snrbuffer = zeros(10,1); snrthr=8; %пороговое отношение сигнал шум (snr)-сигнал/шум %snrtempcnt=0; %================================= snr = zeros(N,1); snrtemp=zeros(N,1); proratio = 10; % ???? for i = 1 : N signalframe = input_signal((i-1).*L+1 : i.*L); %по кадрам ведем анализ framesigfft = fft(signalframe); snr = (1./L).*sum(abs(framesigfft).^2./beta) %с/ш snrtemp(i) = snr; %с/ш для i-го кадра if i <= 20 %почему первые 20???? speechactive(i) = 1; %активность речи(первые 20 кадров)=1 else if speechactive(i-1)==1 if snrtemp(i) > snrthr %проверка с/ш кадра с пороговым speechactive(i) = 1; else logi = (snrtemp(i-19 : i-1) > snrthr); %вектор со значениями с/ш кадра>c/ш порог. if sum(logi) >= 3 speechactive(i) =1; else speechactive(i) =0; end end else if (snrtemp(i) > snrthr && snrtemp(i-1) > snrthr) speechactive(i) = 1; else speechactive(i) = 0; end end end if speechactive(i) == 0 lambda =(1./(1+snr.*proratio)).*abs(framesigfft).^2+(snr.*proratio/(1+snr.*proratio)).*lambda; beta = lambda + lambda0; end end figure; plot([1:1:L.*N],input_signal); hold on plot([1:L:L.*N],speechactive.*0.35,'r'); проблемы с пониманием что делаеться в цикле(начиная с if i<=20 ....) это статья по алгоритму A VOICE ACTIVITY DETECTOR EMPLOYING SOFT DECISION BASED NOISE SPECTRUM ADAPTATION |
Сообщ.
#8
,
|
|
|
Люди пож-та откликнитесь....
|
Сообщ.
#9
,
|
|
|
Для оценки сигнал/шум используются уровень шума предыдущих 20 кадров (строка 41). В начале эта статистика просто накапливается, определения сигнал шум не происходит. Поэтому в начале 20 кадров пропускаются. В течение 20 кадров выставляется наличие сигнала. чтобы оценку в строке 57 не обновлять.
|
Сообщ.
#10
,
|
|
|
спасибо большое!
А алглритм обнаружения речи и пауз на основе вычисления кратковременной энергии и среднего числа переходов через ноль,случайно не отображает этот код? (там также используеться определенный интервал в котором вычисляеться порог кратковременной энергии и среднего числа переходов через ноль) непонятна вот эта часть кода if speechactive(i) == 0 lambda =(1./(1+snr.*proratio)).*abs(framesigfft).^2+(snr.*proratio/(1+snr.*proratio)).*lambda; beta = lambda + lambda0; end |
Сообщ.
#11
,
|
|
|
"А алглритм обнаружения речи и пауз на основе вычисления кратковременной энергии и среднего числа переходов через ноль..."
это точно не он.sorry,сглупил |
Сообщ.
#12
,
|
|
|
Цитата непонятна вот эта часть кода if speechactive(i) == 0 lambda =(1./(1+snr.*proratio)).*abs(framesigfft).^2+(snr.*proratio/(1+snr.*proratio)).*lambda; beta = lambda + lambda0; Это переоценка порога в соответствии с формулой (14) на третьей странице статьи. |
Сообщ.
#13
,
|
|
|
Спасибо большое,а есть ли похожие статьи на русском языке?
|
Сообщ.
#14
,
|
|
|
НАРООД!!!!пож-та подскажите!!! что писать в DATADIR файл какого формата должен быть s=load(datadir)?????
[B][COLOR=red]function [datacropped,speechlength,speechflag] = endpoint1([COLOR=blue]datadir[/COLOR],fs,win,fl,inc);[/COLOR][/B] % % Endpoint Detection Using Short-term Energy and Zero-crossing Rate. % <Inputs> % datadir : Directory of the txt file containing speech signal. % fs : Sampling frequency in Hz (Default 8000). % win : Window type 'R' Rectangular window in time. % 'N' Hannning window in time. % 'H' Hamming window in time. % fl :Frame length (Default 80 samples corresponding to 10 ms). % inc :Increment in num of samples (Default 40). % <Outputs> % datacropped : This returns the cropped speech signal based on endpoint % detection. % speechflag : If any speechflag is set for warning any single one or % combination of the following problems might have occurred. % 1. Split data file may be corrupt if norm(s)<0.1 % 2. Infinite loop in raw search algorithm for speech % boundaries if there is no signal detected that has 20 frames or longer % duration. % 3. Speech portion of the signal starting too early % might indicate a possible noise sequence in the beginning due to % bad recording. % All above cases need further investigation after cropping speech to determine if % the cropped data is corrupt. % speechlength : It is the length of the cropped speech signal. % 108 % <References> % [1] L. R. Rabiner and M. R. Sambur, “An algorithm for determining the endpoints % of isolated utterances,” The Bell System Technical Journal, February 1975. % %------------------------------------------------------------------------------------------------------ clc, clear('s'); if nargin < 2 fs = 8000; end if nargin < 3 win = 'R'; end % Default Rectangular Window. if nargin < 4 fl = fs/100; end % Default frame length is 80 for 10 ms. if nargin < 5 inc = fl/2; end % Default inc.in overlapping window is 40. if win == 'R' % Default Rectangular Window of length 80 for 10 ms frames. w = rectwin(fl); else if win =='N' w = hann(fl); else if win =='H' w = hamming(fl); end end end [COLOR=red][B]s = load([COLOR=blue]datadir[/COLOR])[/B][/COLOR]; sm = s-mean(s); % Takes the mean out of data before processing. speechflag = 0; .... часть кода из статьи SPEECH ENDPOINT DETECTION FROM THE SHORT-TERM ENERGY AND ZERO-CROSSING RATE(стр107) http://www.dtic.mil/cgi-bin/GetTRDoc?Location=U2&doc=GetTRDoc.pdf&AD=ADA445459 Добавлено Просто раньше пользовался [file path]=uigetfile('D:\*.wav') S=strcat(path,file); signal= wavread(S); а тут встал в тупик M Пожалуйста, используйте тег CODE для оформления кода |
Сообщ.
#15
,
|
|
|
Артем ну что в итоге нашёл что-нибудь деловое, работающее и поддающееся объяснению??
|