Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.86.184] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста программные средства для оценки качества получаемых MFCC
Интресуют так же средства позволяющие восстановить речь или спектр из MFCC (http://citeseerx.ist.psu.edu/viewdoc/downl...p=rep1&type=pdf) |
Сообщ.
#2
,
|
|
|
а че там думать: в лоб по матем формулам. правда характеристики несущей (тон-шум) ты в такмо случае НЕ восстановишь и догадываться где были шпиящие будеь лишь по спектру
а ваще была статья по прямоу синтозу из мфцц. там все просто: кепстр-коэффициенту соответствует фильтр у которого коэффициенты равны разложению в ряд тейлора ехроненты. а для учета мела там в тапах фильтра стоят фазовращатели подобранные так чтобы смаппировать с меловой шкалы на обычную обратно. |
Сообщ.
#3
,
|
|
|
Вот что получилось:
Орининальный звук: Звук восстановленный из фильтра с 31 банком Звук восстановленный из 13 коэфициентов MFCC Амплитуда после преобразований почему-то немного увеличивается и дело доходит до треска... |
Сообщ.
#4
,
|
|
|
Вот как меняется спектр:
Орининальный звук Звук восстановленный из фильтра с 31 банком Звук восстановленный из 13 коэфициентов MFCC Добавлено Я похоже не учёл пропорции колличества энергии MEL фильтра. Из-за этого амплитуда высоких частот выросла по сравнению с низкими частотами. |
Сообщ.
#5
,
|
|
|
Очередной эксперимент
Берём 31 MFCC коэфициент Начинаем гасить их начиная с 1-го (1-й энергия. её я не гасил а выставлял статической) Получем следующую картину: энергия 1-го коэф. в статике дополнительно погашен 2й коэфициент дополнительно погашен 3й коэфициент дополнительно погашен 4й коэфициент дополнительно погашен 5й коэфициент Больше 5ти коэфициентов гасить нет стал... ситуация более менее понятная |
Сообщ.
#6
,
|
|
|
До этого восстановление было при помощи сохрашённой фазы
Новый эскпеример: Восстановление из MFCC с примитивным методом генерирования фазы звук востановлен только из MFCC Разница между мужской и женской речью пропала. Pitch и DCT творят чудеса =) |
Сообщ.
#7
,
|
|
|
Судя по всему я так и не понимаю физический смысл фазы
Вот ещё один вариант восстановления фазы Фактически я беру как выразился NegroFinn "фазовращатель" с определённой статической частотой Одной из попыток улучшить качество было подбор смещения фазы на столько что бы основной тон попадал на значение PI Кто-нибудь сможет предложить более изящное решение для восстановления фазы с целью создания звуковой волны из спектра? ещё один вариант восстановления фазы Кстати основной тон всё таки сохраняется при 13и коэфициентах похоже, так как дикторы различаются, хотя может я и не по основному тону распознаю... |
Сообщ.
#8
,
|
|
|
Варианты создания фазы и спектра (придумал пока ехал в метро):
вариант 1 вариант 2 вариант 3 помоему это максимум что можно сделать. Причём при увеличении колличества DCT коэфициентов до 31, качество на слух не улучшается (спектр в определённых местах только усиливается) 31 коэфициент для сравнения |
Сообщ.
#9
,
|
|
|
В заключении сравнение спектров
Оригинальный спектр: Спектр восстановленный из MFCC: Кстати если сделать преобразование Фурье от спектра (кепстр), затем почистить кепстр (удалить всё кроме крайних 10 коэфициентов например) и возвратить спектр при помощи обратного преобразования фурье - то получится точно такая же картина (ну или очень-очень похожая) Для другого сигнала спектр восстановленный из фильтрованного кепстра выглядит так: |
Сообщ.
#10
,
|
|
|
Помогите пожалуйста синтезом на основе спектра
После создания спектрограммы пытаюсь на основе её синтезировать звуковую волну проблема заключается в том, что после синтеза основной тон принимает статический вид и звук получается роботизированным полученый wav файл |
Сообщ.
#11
,
|
|
|
Задача сгенерить фазу исходя из спектра.
Вроде общий смысл уловил. Буду пробовать. Добавлено С восстановлением при помощи белого шума поправдоподобнее получается. восстановление вазы ориганльного звука полученый wav файл очень похоже на то что получается при восстановление ориганльной фазы с подмешанным шумом восстановление фазы синтезированного звука полученый wav файл для сравнения оригинальная фаза с подмешанным шумов оригинальная фаза P.S. пользуясь случаем: С Новым Годом! |
Сообщ.
#12
,
|
|
|
Цитата Задача сгенерить фазу исходя из спектра. После исследования вопроса можно сказать, что эта задача непростая. С потерянной фазой восстановить сигнал трудно, например, вот статья на эту тему: http://web.mit.edu/jvb/www/papers/signalrec_ICSLP06.pdf Примеры к этой статье можно послушать здесь: http://web.mit.edu/jvb/www/signalrec/ Кстати, код для экспериментов на numpy можно использовать такой: import numpy as np import numpy.fft as fft from scipy.io.wavfile import read, write fshift = 100 wlen = 256 nfft = wlen window = np.hanning(wlen) rate, sig = read("test.wav") nfr = int(sig.shape[0] / fshift + 1) out_sig = np.zeros(sig.shape, 'int16') for fr in range(0, nfr): start = round(fr * fshift) end = min(len(sig), start + wlen) frame = sig[start:end] if len(frame) < wlen: break frame = frame * window frame_fft = fft.rfft(frame, nfft) amplitudes = abs(frame_fft) ph = np.random.uniform(0, 2*np.pi, amplitudes.shape) * 1j amplitudes *= np.exp(ph) restored_frame = fft.irfft(amplitudes) * window out_sig[start:end] = out_sig[start:end] + restored_frame.astype(np.int16) write('test_out.wav', rate, out_sig) |
Сообщ.
#13
,
|
|
|
Спасибо что проверили и подтвердили, что с этой задачей не всё так гладко.
Цитата If your processing requires the use Hamming/Hanning or other non-rectangular windows to compute the STFT, the methods described herein will probably not give good results. Треугольное окно не лучший вариант для получения FFT. У меня окно схоже с Hamming. Я вроде видел статью где используется линейное прогнозирование (аналог LPC) для восстановления фазы. (возможно там речь о чём-то другом шла и я что-то путаю) Пробую решить задачу реверс-инжинирингом |
Сообщ.
#14
,
|
|
|
Буксую..
Если не сложно посмотрите пожалуйста example 1 http://www.eurasip.org/Proceedings/Eusipco.../1569579067.pdf Какой смысл несёт в себе функция S(w)? Эту фунцию можно использовать например для получения отношений фаз? S(w)=1.6+1.2cos(w)+1.2cos(2w) http://www.wolframalpha.com/input/?i=S%28w...B1.2cos%282w%29 1.2 это 0.6+0.6 или abs(0.6)+abs(0.6) или что-то другое? Как были получены реальные значения сигнала 1.0736... ? |
Сообщ.
#15
,
|
|
|
Цитата Если не сложно посмотрите пожалуйста example 1 http://www.eurasip.org/Proceedings/Eusipco.../1569579067.pdf Статья несколько ни о чем, да и задача тут другая. Есть много задач где измеряется |X|^2 в нескольких точках и нужно восстановить X (в томогарфии, например). Эта статья о такой задаче где число точек измерения меньше чем число точек оригинальной последовательности. Цитата Какой смысл несёт в себе функция S(w)? Смысла у функции нет, а сама из себя она представляет квадрат модуля преобразования Фурье дискретной последовательности. Авторы пытаются использовать её в качестве критерия разрешимости задачи обращения, но у них выходит с переменным успехом. В задачах, где измеряется |X|^2, не очевидно, имеет ли задача восстановления решение. Цитата Эту функцию можно использовать например для получения отношений фаз? Не отношения фаз с помощью неё можно вычислить, отношений фаз в этой задаче нет, а просто восстанавливать сигнал. Сигнал вычисляется с помощью нахождения корней комплексного полинома. Цитата 1.2 это 0.6+0.6 или abs(0.6)+abs(0.6) или что-то другое? 1.2 это 0.6 + 0.6 (F(n) = sum\n x_n (cos wn + i sin wn)) Цитата Как были получены реальные значения сигнала 1.0736... ? Уравнение четвертой степени решили (a + be^iw + c^e^2iw)^2 = 1.6 + 1.2 cosw + 1.2 cos2w |