На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> начальная инициализация фильтра при неизвестном сигнале
    У кого-нибудь есть хорошие примеры (доступные для понимания) кода инициализации фильтра при неизвестном сигнале?
    Речь идёт о синтезе на основе LPC коэфициентов. Необходимо синтезировать имея коэфициенты не зная начальных значений сигнала.
    user posted image
    p.s. пробовал делать начальный сигнал случайным - предсказание часто стремится +/- бесконечности :rolleyes:
      Как инициализировать фильтр вроде разобрался.
      Но видимо я всё таки что-то до конца не понимаю.
      При использовании LPC фильтра получаю затухающий сигнал который выглядит весьма некрасиво.
      Как это правильно нормализуется?
      Перед тем как вычислись коэфициэнты LPC использовалась windows функция. Надо-ли в каком-то месте теперь восстаналивать эту функцию? Если да - то как это сделать правильно?

      ExpandedWrap disabled
        DATA[0]=2098.198
        DATA[1]=-246.816
        DATA[2]=-1365.196
        DATA[3]=2393.690
        DATA[4]=-1314.841
        DATA[5]=3178.600
        DATA[6]=51.735
        DATA[7]=-2019.761
        DATA[8]=10712.448
        DATA[9]=9310.553
        DATA[10]=-1494.432
        DATA[11]=2514.578
        DATA[12]=3396.584
        DATA[13]=-3924.448
        DATA[14]=-2282.751
        DATA[15]=-247.906
        DATA[16]=-4364.032
        DATA[17]=-4340.550
        DATA[18]=-2560.813
        DATA[19]=-3117.655
        DATA[20]=-1500.081
        DATA[21]=423.558
        DATA[22]=634.793
        DATA[23]=1923.048
        DATA[24]=2841.495
        DATA[25]=2414.472
        DATA[26]=2749.026
        DATA[27]=2672.082
        DATA[28]=1406.397
        DATA[29]=691.649
        DATA[30]=23.745
        DATA[31]=-1187.389
        DATA[32]=-1769.565
        DATA[33]=-1959.657
        DATA[34]=-2276.679
        DATA[35]=-2082.677
        DATA[36]=-1536.711
        DATA[37]=-1049.716
        DATA[38]=-327.028
        DATA[39]=458.768
        DATA[40]=995.266
        DATA[41]=1452.009
        DATA[42]=1733.793
        DATA[43]=1680.309
        DATA[44]=1469.500
        DATA[45]=1112.579
        DATA[46]=566.293
        DATA[47]=10.528
        DATA[48]=-492.081
        DATA[49]=-947.123
        DATA[50]=-1235.589
        DATA[51]=-1331.166
        DATA[52]=-1278.552
        DATA[53]=-1054.506
        DATA[54]=-695.901
        DATA[55]=-286.277
        DATA[56]=142.943
        DATA[57]=537.688
        DATA[58]=829.508
        DATA[59]=1001.806
        DATA[60]=1041.213
        DATA[61]=937.170
        DATA[62]=720.830
        DATA[63]=428.184
        DATA[64]=92.358
        DATA[65]=-235.086
        DATA[66]=-511.015
        DATA[67]=-708.781
        DATA[68]=-803.722
        DATA[69]=-788.196
        DATA[70]=-674.334
        DATA[71]=-480.098
        DATA[72]=-234.015
        DATA[73]=26.852
        DATA[74]=269.546
        DATA[75]=464.674
        DATA[76]=588.244
        DATA[77]=629.297
        DATA[78]=587.786
        DATA[79]=472.659
        DATA[80]=303.394
        DATA[81]=105.187
        DATA[82]=-95.571
        DATA[83]=-272.655
        DATA[84]=-404.402
        DATA[85]=-476.934
        DATA[86]=-484.129
        DATA[87]=-428.584
        DATA[88]=-321.298
        DATA[89]=-178.885
        DATA[90]=-21.492
        DATA[91]=129.628
        DATA[92]=255.489
        DATA[93]=341.463
        DATA[94]=378.655
        DATA[95]=365.100
        DATA[96]=305.489
        DATA[97]=210.016
        DATA[98]=92.998
        DATA[99]=-29.271
        DATA[100]=-140.845
        DATA[101]=-227.998
        DATA[102]=-280.897
        DATA[103]=-294.734
        DATA[104]=-269.948
        DATA[105]=-211.899
        DATA[106]=-129.952
        DATA[107]=-35.987
        DATA[108]=57.263
        DATA[109]=137.851
        DATA[110]=196.153
        DATA[111]=225.959
        DATA[112]=225.056
        DATA[113]=195.306
        DATA[114]=142.177
        DATA[115]=73.813
        DATA[116]=-0.140
        DATA[117]=-69.866
        DATA[118]=-126.656
        DATA[119]=-163.954
        DATA[120]=-178.079
        DATA[121]=-168.537
        DATA[122]=-137.899
        DATA[123]=-91.298
        DATA[124]=-35.626
        DATA[125]=21.453
        DATA[126]=72.530
        DATA[127]=111.390
        DATA[128]=133.737
        DATA[129]=137.643
        DATA[130]=123.653
        DATA[131]=94.583
        DATA[132]=55.023
        DATA[133]=10.649
        DATA[134]=-32.568
        DATA[135]=-69.145
        DATA[136]=-94.764
        DATA[137]=-106.758
        DATA[138]=-104.363
        DATA[139]=-88.705
        DATA[140]=-62.548
        DATA[141]=-29.849
        DATA[142]=4.823
        DATA[143]=36.903
        DATA[144]=62.420
        DATA[145]=78.471
        DATA[146]=83.534
        DATA[147]=77.584
        DATA[148]=62.011
        DATA[149]=39.362
        DATA[150]=12.948
        DATA[151]=-13.626
        DATA[152]=-36.939
        DATA[153]=-54.183
        DATA[154]=-63.490
        DATA[155]=-64.115
        DATA[156]=-56.473
        DATA[157]=-42.014
        DATA[158]=-22.984
        DATA[159]=-2.086
        DATA[160]=17.892
        DATA[161]=34.436
        DATA[162]=45.617
        DATA[163]=50.306
        DATA[164]=48.268
        DATA[165]=40.150
        DATA[166]=27.338
        DATA[167]=11.745
        DATA[168]=-4.469
        DATA[169]=-19.187
        DATA[170]=-30.604
        DATA[171]=-37.442
        DATA[172]=-39.084
        DATA[173]=-35.615
        DATA[174]=-27.770
        DATA[175]=-16.806
        DATA[176]=-4.308
        DATA[177]=8.032
        DATA[178]=18.639
        DATA[179]=26.250
        DATA[180]=30.057
        DATA[181]=29.788
        DATA[182]=25.710
        DATA[183]=18.564
        DATA[184]=9.440
        DATA[185]=-0.377
        DATA[186]=-9.587
        DATA[187]=-17.042
        DATA[188]=-21.885
        DATA[189]=-23.643
        DATA[190]=-22.265
        DATA[191]=-18.106
        DATA[192]=-11.860
        DATA[193]=-4.446
        DATA[194]=3.117
        DATA[195]=9.849
        DATA[196]=14.934
        DATA[197]=17.812
        DATA[198]=18.240
        DATA[199]=16.301
        DATA[200]=12.380
        DATA[201]=7.092
        DATA[202]=1.195
        DATA[203]=-4.521
        DATA[204]=-9.331
        DATA[205]=-12.669
        DATA[206]=-14.191
        DATA[207]=-13.804
        DATA[208]=-11.667
        DATA[209]=-8.153
        DATA[210]=-3.793
        DATA[211]=0.807
        DATA[212]=5.041
        DATA[213]=8.387
        DATA[214]=10.466
        DATA[215]=11.083
        DATA[216]=10.242
        DATA[217]=8.133
        DATA[218]=5.101
        DATA[219]=1.586
        DATA[220]=-1.933
        DATA[221]=-5.003
        DATA[222]=-7.256
        DATA[223]=-8.450
        DATA[224]=-8.491
        DATA[225]=-7.439
        DATA[226]=-5.492
        DATA[227]=-2.950
        DATA[228]=-0.175
        DATA[229]=2.465
        DATA[230]=4.639
        DATA[231]=6.093
        DATA[232]=6.682
        DATA[233]=6.380
        DATA[234]=5.276
        DATA[235]=3.557
        DATA[236]=1.479
        DATA[237]=-0.670
        DATA[238]=-2.611
        DATA[239]=-4.107
        DATA[240]=-4.990
        DATA[241]=-5.182
        DATA[242]=-4.698
        DATA[243]=-3.638
        DATA[244]=-2.172
        DATA[245]=-0.510
        DATA[246]=1.123
        DATA[247]=2.519
        DATA[248]=3.512
        DATA[249]=3.997
        DATA[250]=3.942
        DATA[251]=3.384
        DATA[252]=2.423
        DATA[253]=1.205
        DATA[254]=-0.098
        DATA[255]=-1.314
        DATA[256]=-2.292
        DATA[257]=-2.921
        DATA[258]=-3.138
        DATA[259]=-2.941
        DATA[260]=-2.377
        DATA[261]=-1.540
        DATA[262]=-0.553
        DATA[263]=0.449
        моя ошибка была в том что после инициализации сигналом возбуждения - я использовал экстраполяцию на основе предыдущего сигнала возбуждения
        что бы сигнал не затухал его надо постоянно подпитывать сигналом возбуждения
        в противном случаи фильтр его подавит
        Сообщение отредактировано: zamir -
          А вот при возбуждением сигналом одинаковой амплитуды похоже иногда может наступать резонанс... либо я неправильно с фильтрами работаю..
            7 коэфициентов LPC
            8 коэфициентов LPC
            9 коэфициентов LPC
            10 коэфициентов LPC

            у меня получилось что нет необходимости использования более 8 коэфициентов LPC, что бы передать речь в формате 8000 sample rate
            из недостатков - высокий резонанс шума (пока не придумал как это побороть - по идеи надо фильтр наложить который погасит высокие частоты и поднимет низкие)
            пробовал сделать de-emphasis - низкие частоты становятся ооочень сильными... наверно нужен какой-то сбаллансированный фильтр
            Сообщение отредактировано: zamir -
              Не совсем понятно, для чего вам это надо. Вы G729 хотите переизобрести или что?
                Для синтеза.
                Не переспективно?
                  У меня кстати кривой фильтр получился (сам удивлён как это вообще работало...)
                  при реализации стандарного БИХ фильтра проблема с резонансом некоторых щелевых и носовых звуков, да и вообще с амплитудой решилась.
                  АРУ на выходе совсем оказалась не нужной.
                    Цитата zamir @
                    Для синтеза.
                    Не переспективно?

                    Да вроде сейчас компилятивный синтез в тренде. Хотя я уже давно не слежу за новостями в данной области. А чисто для поиграться LPC вполне интересно и легко реализуемо.
                      интересно, легко, поиграться - всё так и есть - в воду глядите =)
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0359 ]   [ 15 queries used ]   [ Generated: 8.09.24, 09:01 GMT ]