На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Оценка качества MFCC
    Подскажите пожалуйста программные средства для оценки качества получаемых MFCC
    Интресуют так же средства позволяющие восстановить речь или спектр из MFCC (http://citeseerx.ist.psu.edu/viewdoc/downl...p=rep1&type=pdf)
      а че там думать: в лоб по матем формулам. правда характеристики несущей (тон-шум) ты в такмо случае НЕ восстановишь и догадываться где были шпиящие будеь лишь по спектру


      а ваще была статья по прямоу синтозу из мфцц. там все просто:
      кепстр-коэффициенту соответствует фильтр у которого коэффициенты равны разложению в ряд тейлора ехроненты.
      а для учета мела там в тапах фильтра стоят фазовращатели подобранные так чтобы смаппировать с меловой шкалы на обычную обратно.
      Сообщение отредактировано: NegroFinn -
        Вот что получилось:

        Орининальный звук:

        Звук восстановленный из фильтра с 31 банком

        Звук восстановленный из 13 коэфициентов MFCC

        Амплитуда после преобразований почему-то немного увеличивается и дело доходит до треска...
          Вот как меняется спектр:

          Орининальный звук
          user posted image

          Звук восстановленный из фильтра с 31 банком
          user posted image

          Звук восстановленный из 13 коэфициентов MFCC
          user posted image

          Добавлено
          Я похоже не учёл пропорции колличества энергии MEL фильтра. Из-за этого амплитуда высоких частот выросла по сравнению с низкими частотами.
            Очередной эксперимент
            Берём 31 MFCC коэфициент
            Начинаем гасить их начиная с 1-го (1-й энергия. её я не гасил а выставлял статической)
            Получем следующую картину:

            энергия 1-го коэф. в статике
            дополнительно погашен 2й коэфициент
            дополнительно погашен 3й коэфициент
            дополнительно погашен 4й коэфициент
            дополнительно погашен 5й коэфициент

            Больше 5ти коэфициентов гасить нет стал... ситуация более менее понятная
              До этого восстановление было при помощи сохрашённой фазы
              Новый эскпеример: Восстановление из MFCC с примитивным методом генерирования фазы

              звук востановлен только из MFCC

              Разница между мужской и женской речью пропала. Pitch и DCT творят чудеса =)
                Судя по всему я так и не понимаю физический смысл фазы
                Вот ещё один вариант восстановления фазы
                Фактически я беру как выразился NegroFinn "фазовращатель" с определённой статической частотой
                Одной из попыток улучшить качество было подбор смещения фазы на столько что бы основной тон попадал на значение PI
                Кто-нибудь сможет предложить более изящное решение для восстановления фазы с целью создания звуковой волны из спектра?

                ещё один вариант восстановления фазы

                Кстати основной тон всё таки сохраняется при 13и коэфициентах похоже, так как дикторы различаются, хотя может я и не по основному тону распознаю...
                  Варианты создания фазы и спектра (придумал пока ехал в метро):

                  вариант 1
                  вариант 2
                  вариант 3

                  помоему это максимум что можно сделать.
                  Причём при увеличении колличества DCT коэфициентов до 31, качество на слух не улучшается (спектр в определённых местах только усиливается)

                  31 коэфициент для сравнения
                    В заключении сравнение спектров

                    Оригинальный спектр:
                    user posted image

                    Спектр восстановленный из MFCC:
                    user posted image

                    Кстати если сделать преобразование Фурье от спектра (кепстр), затем почистить кепстр (удалить всё кроме крайних 10 коэфициентов например) и возвратить спектр при помощи обратного преобразования фурье - то получится точно такая же картина (ну или очень-очень похожая)
                    Для другого сигнала спектр восстановленный из фильтрованного кепстра выглядит так:
                    user posted image
                    Сообщение отредактировано: zamir -
                      Помогите пожалуйста синтезом на основе спектра
                      После создания спектрограммы пытаюсь на основе её синтезировать звуковую волну
                      user posted image
                      проблема заключается в том, что после синтеза основной тон принимает статический вид и звук получается роботизированным
                      полученый wav файл
                        Задача сгенерить фазу исходя из спектра.
                        Вроде общий смысл уловил. Буду пробовать.

                        Добавлено
                        С восстановлением при помощи белого шума поправдоподобнее получается.

                        восстановление вазы ориганльного звука
                        user posted image
                        полученый wav файл
                        очень похоже на то что получается при восстановление ориганльной фазы с подмешанным шумом

                        восстановление фазы синтезированного звука
                        user posted image
                        полученый wav файл

                        для сравнения
                        оригинальная фаза с подмешанным шумов
                        оригинальная фаза

                        P.S. пользуясь случаем: С Новым Годом! ;)
                          Цитата
                          Задача сгенерить фазу исходя из спектра.


                          После исследования вопроса можно сказать, что эта задача непростая. С потерянной фазой восстановить сигнал трудно, например, вот статья на эту тему:

                          http://web.mit.edu/jvb/www/papers/signalrec_ICSLP06.pdf

                          Примеры к этой статье можно послушать здесь:

                          http://web.mit.edu/jvb/www/signalrec/

                          Кстати, код для экспериментов на numpy можно использовать такой:

                          ExpandedWrap disabled
                            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)
                            Спасибо что проверили и подтвердили, что с этой задачей не всё так гладко.

                            Цитата

                            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) для восстановления фазы. (возможно там речь о чём-то другом шла и я что-то путаю)
                            Пробую решить задачу реверс-инжинирингом 8-)
                              Буксую..
                              Если не сложно посмотрите пожалуйста 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... ?
                                Цитата
                                Если не сложно посмотрите пожалуйста 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
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0421 ]   [ 15 queries used ]   [ Generated: 4.10.24, 15:39 GMT ]